Feature #236
進行中T2-05 Session 1:跨子系統介面骨架(10 檔)+ tree 反向標註
100%
概述
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 階段決定)。
兩個技術設計選擇¶
- Schema 表達 — JSON Schema-like 偽碼 + 中文註釋(不鎖定 wire encoding)
- 介面文件語言 — 沿用 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)¶
- 新增介面檔 → 在
00-index.md§I 加一行 + 在 source ADR/OW/Q 節點檔的「衍生節點」加入該介面 - 介面 major version 升級 → 需通過 nrqd-7-phase2-interface-freeze 審查
- 介面變更不會自動更新 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 個剩餘介面檔)。
沒有任何資料可供顯示