專案

一般

配置概況

動作

Feature #236

進行中
SC SC

T2-05 Session 1:跨子系統介面骨架(10 檔)+ tree 反向標註

Feature #236: T2-05 Session 1:跨子系統介面骨架(10 檔)+ tree 反向標註

是由 Sashiba Chou約 2 個月 前加入.

狀態:
New
優先權:
Normal
被分派者:
開始日期:
2026-06-03
完成日期:
2026-06-03 (逾期 59 天)
完成比例:

100%

預估工時:
2:00 小時

概述

Parent / Related

  • Feature #228(Phase 1 結項 + Phase 2 前置系列)
  • Feature #231(決策科技樹建立)
  • Phase 2 任務分解 T2-05(docs/research/2026-06-03_phase2-task-decomposition.md

Summary

建立 docs/interfaces/ 跨子系統契約層 Session 1(10 檔),
為 T2-06(Android Room CRDT)/ T2-07(Android 中央 EKF)/ T2-08(e-Tag 韌體)
三條並行 PoC 線提供整合錨點。同步反向標註至 docs/decisions/tree/


Background / Motivation

PM Phase 2 任務分解報告 §E 已標明:

T2-05 docs/interfaces/ 是多路前置:T2-06/07/08 均依賴介面規格;
若 interfaces/ 寫得太晚,三條並行的 PoC 線可能各自為政,
整合時代價高。

T2-05 預估 2 sessions,本 ticket 為 Session 1(批次 A + B)。


Scope

設計策略

骨架(contract)≠ 完整實作。介面層只定義:schema、訊息型別、欄位、
狀態機、ADR 連結。不包含具體演算法數值、wire encoding、threshold tuning
(留 ADR / PoC 階段決定)。

兩個技術設計選擇

  1. Schema 表達 — JSON Schema-like 偽碼 + 中文註釋(不鎖定 wire encoding)
  2. 介面文件語言 — 沿用 ADR convention:中文說明 + 英文 code identifier

Deliverables(10 新檔 + 7 修改)

新建 docs/interfaces/(10 檔)

分類 檔案 阻塞任務
總覽 00-overview.md
總覽 _template.md
基底 message-envelope.md T2-06/07/08
基底 hlc-clock.md T2-06/07
基底 network-edca-tdma.md T2-08/09
CRDT crdt-triage-record.md T2-06 阻塞
CRDT crdt-merge-strategy.md T2-06 阻塞
CRDT crdt-notes-replay.md T2-08 阻塞
定位 positioning-rssi-measurement.md T2-07/08 阻塞
定位 positioning-ekf-state.md T2-07 阻塞

反向標註至 docs/decisions/tree/(7 檔)

檔案 修改
00-index.md 新增「I. 介面層」section(I.1 基底 / I.2 CRDT / I.3 定位 對應表 + I.6 維護規則)
adr/adr-107-room-pure-crdt-per-column.md 加 5 個衍生介面
adr/adr-116-notes-ring-buffer-audit.md crdt-notes-replay.md
adr/adr-105-positioning-accuracy-downgrade.md 加 2 個衍生介面
adr/adr-102-ekf-centralized.md positioning-ekf-state.md
owner/ow-D-3-notes-audit.md 加 2 個衍生介面
owner/ow-recheck-4-triagerecord.md 加 2 個衍生介面

刪除

  • docs/interfaces/.gitkeep(不再需要 placeholder)

Key Design Decisions(介面層內已揭露)

# 設計選擇 理由
1 EDCA AC 映射:ctrl_* / pairing_* / reset_* → AC_VO 確保關鍵控制訊號最高優先
2 HLC schema: { l, c, dev } 不引入 Vector Clocks(Q08 結論),dev 為穩定 tiebreaker
3 SeverityMergeStrategy 抽象層 ADR-106 × ADR-107 跨 ADR 矛盾的工程緩解:Class II fallback 切換不需重寫核心 CRDT
4 EkfObservationModel 介面 Phase 2a 純 RSSI,Phase 2b 預留 PDR / UWB / Cooperative 觀測模型擴充槽
5 NoteEntry 簽章涵蓋 (id, patient_id, text, hlc) Ed25519 + TSA 落地(OW-recheck-3 / ADR-116 弱點 5 緩解)
6 Bootstrap Level < 3 → 不發 EntityEstimate UI 「初始化中」狀態落地
7 NoteEntry text ≤ 200 bytes e-Tag PSRAM 容量約束

? 介面層內已 surface 的「待後續 ADR」設計分岔

每個介面檔在 ## ? 待後續 ADR 解的設計分岔 段落明示,總計 13 項:

  • wire encoding(CBOR vs Protobuf vs JSON)
  • ttl_hops 預設值(待 Q20 Mesh 路由結論)
  • EDCA 參數實測(CWmin / CWmax 在 MM6108 上的實際行為,Q18)
  • TDMA 同步機制(µs 等級對齊精度)
  • 路徑損耗模型 n / PL0 初估值(待 Q24 廢墟 mockup 校準)
  • GDOP threshold 6.0(待 NRQD-1 / NRQD-6)
  • 51 維 state 是否足夠 Phase 2a
  • NoteEntry text 200 bytes 對 UTF-8 中文約束
  • ...等(詳見各介面 §?)

Acceptance Criteria

  • 10 介面檔全部落地於 docs/interfaces/
  • 每個介面檔含 frontmatter(version / status / adr_refs / last_modified)
  • 每個介面檔含 ## 上游依賴 段落,連結至 tree/ 對應節點
  • 每個介面檔含 ## 不變式 段落
  • 每個介面檔含 ## 錯誤碼 段落
  • 每個介面檔含 ## ? 待後續 ADR 解的設計分岔 段落
  • 00-index.md 新增「I. 介面層」section + I.6 維護規則
  • 6 個最緊耦合節點(adr-107/116/105/102 + ow-D-3 + ow-recheck-4)已反向標註「衍生介面」段落

Not in Scope(Session 2 待補)

檔案 內容
tier0-tier2-etag.md 指揮平板 ↔ e-Tag HaLow 心跳
tier0-tier3-relay.md 指揮平板 ↔ Relay 轉發 + Bootstrap
tier2-pairing-ble.md BLE LE Secure Connections(NR-1 ADR-110)
reset-boundary.md e-Tag DEVICE_RESET_BOUNDARY(ADR-114)
security-crypto.md AES-128 CCM + Ed25519 + TSA + PDPA 加密層
phase2b-anchor-beacon.md Tier 1.5 信標 + 動態副錨 stub
phase3-deferred.md 戰場靜默 / e-Tag IMU 預留接腳

次要 16 個 ADR/OW/Q 節點的個別反向標註延後 Session 2
(依賴 00-index.md I.1/I.2/I.3 對應表反向查找)。


Maintenance Rules(已寫入 00-index.md §I.6)

  1. 新增介面檔 → 在 00-index.md §I 加一行 + 在 source ADR/OW/Q 節點檔的「衍生節點」加入該介面
  2. 介面 major version 升級 → 需通過 nrqd-7-phase2-interface-freeze 審查
  3. 介面變更不會自動更新 spec / ADR,反向變更必須走 system-architect

Related Tasks

  • T2-06 Android Room CRDT PoC(依賴 crdt-triage-record / crdt-merge-strategy / crdt-notes-replay / hlc-clock / message-envelope
  • T2-07 Android 中央 EKF PoC(依賴 positioning-ekf-state / positioning-rssi-measurement / message-envelope
  • T2-08 e-Tag 韌體 PoC(依賴 crdt-notes-replay / positioning-rssi-measurement / message-envelope / network-edca-tdma

Files Changed (17)

新建 (10):
docs/interfaces/00-overview.md
docs/interfaces/_template.md
docs/interfaces/message-envelope.md
docs/interfaces/hlc-clock.md
docs/interfaces/network-edca-tdma.md
docs/interfaces/crdt-triage-record.md
docs/interfaces/crdt-merge-strategy.md
docs/interfaces/crdt-notes-replay.md
docs/interfaces/positioning-rssi-measurement.md
docs/interfaces/positioning-ekf-state.md

修改 (7):
docs/decisions/tree/00-index.md
docs/decisions/tree/adr/adr-102-ekf-centralized.md
docs/decisions/tree/adr/adr-105-positioning-accuracy-downgrade.md
docs/decisions/tree/adr/adr-107-room-pure-crdt-per-column.md
docs/decisions/tree/adr/adr-116-notes-ring-buffer-audit.md
docs/decisions/tree/owner/ow-D-3-notes-audit.md
docs/decisions/tree/owner/ow-recheck-4-triagerecord.md

刪除 (1):
docs/interfaces/.gitkeep


Notes

  • 上次 session 累積的 docs/research/2026-06-03_session-state-snapshot.md
    不在本 ticket 範圍(業主 2026-06-03 明示拒絕 commit)。
  • T2-05 Session 2 預計後續 ticket 處理(7 個剩餘介面檔)。

沒有任何資料可供顯示

動作

匯出至 PDF Atom