動作
Feature #375
進行中
SC
T2-11/T2-18 到期義務收尾 + BLE 加密列拆列降級(ADR-117 修訂)+ S1 hook 計數校準
Feature #375:
T2-11/T2-18 到期義務收尾 + BLE 加密列拆列降級(ADR-117 修訂)+ S1 hook 計數校準
狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-07-14
完成日期:
完成比例:
0%
預估工時:
概述
T2-11 QA 測試計畫 + T2-18 devil 挑戰(P0×3)+ BLE 加密列拆列降級(ADR-117 修訂)+ S1 hook 計數校準¶
背景¶
- T2-06 全段(T2-06a core CRDT + T2-06b Room 持久化)已隨 #363 / 87d08cb 完成 push,依 CLAUDE.md 規則 7/8 觸發兩項到期義務:qa-engineer 設計測試計畫(T2-11)、devil-advocate 架構挑戰(T2-18)。
- 前次 session 遺留清掃批次:regulatory.md/software-stack.md 加密表 BLE 列 legacy 接地評估(system-architect 已提報疑慮)、specs legacy 行補 [evidence:] 錨點第一批。
- S1 Stop hook 無錨點計數啟發式對「裝飾性 」(降級說明散文、「不升 」、表格「 必要」)已三次誤報,需校準。
- 87d08cb CI 確認:core-test 、template-tests(含 committed_spec_audit);external-review =無 L4 金鑰之設計性 fail-closed(exit 3),非程式錯誤,處置待業主決定(加 repo secret 或改無鑰 skip)。
變更內容¶
1 T2-11 Phase 2a QA 測試計畫(T2-06 範圍)¶
- 新增
tests/t2-11-phase2a-test-plan.md:四大領域涵蓋矩陣(CRDT 合併邊界/notes replay 碰撞/pending queue 不丟棄不變式/hlc_state restore)。 - architect 指定兩條補測試確認結果:均已有既有覆蓋,不需新增——不變式 5(PendingMergeQueueRepositoryTest:over-cap 仍全數持久化、永不丟棄)、不變式 6(NotesReplayRepositoryTest:碰撞稽核含兩筆完整 NoteEntry 非僅簽章)。
- 補實際缺口:
StrategyTest.kt原 importAsymmetric_Notes卻零測試案例 → 補 6 則(union/真重複去重/NoteId 碰撞兩筆皆保留/legacy blank-id fallback/交換律/冪等律)。:core 64 → 70。 - 誠實標 BLOCKED/UNTESTED(不虛構無法執行的驗收):EKF Bootstrap 收斂驗收(待 T2-07)、e-Tag 重置 atomic(待 T2-08/T2-10)、韌體端 pending_sync 環形緩衝(firmware/ 僅 .gitkeep)、RestartSyncGate 30 秒網路層協定( 未實作)。
- 拋出規格問題待 system-architect 確認:ARES CRDT 全設計無 tombstone/刪除語意(BLACK 為終態非刪除、DEVICE_RESET_BOUNDARY 為切斷點保留舊資料)——是規格意圖或缺口?
2 T2-18 devil-advocate 架構挑戰(P0×3 / P1×4 / P2×4)¶
- 新增
docs/research/devil-advocate/2026-07-13_t2-18-phase2a-challenge.md(逐檔讀 android/core + android/data 實作與測試,非僅介面文件推論;EKF 共線失效因 T2-07 未到位明文遞延)。 - P0-1(重置安全性):reset-boundary.md Phase 2 僅 Step 2.2(寫新 patient_id)明文保證單一 NVS transaction,Step 2.1(清空 severity/notes)未納同一原子邊界——斷電卡 2.1/2.2 之間 → e-Tag「已清空但仍舊傷患 ID」,違反 constraints.md §4 斷電保持。規格層缺口,T2-10 動工前須補。
-
P0-2(CRDT 邊界):
TriageRecordRepository.confirmPendingSeverityMerge將套用 severity/清除待確認佇列/寫確認稽核拆成三段非原子操作——斷電可產生「稽核 REJECTED 但 severity 已套用 BLACK」自相矛盾病歷,且位於 TFDA Class II 風險安全閥路徑上。 -
P0-3(RestartSyncGate):閘門預設
isOpen = true,grep 確認全專案無任何非測試碼呼叫 close()/open(),HlcRepository.restore()同為孤兒 API——保護機制未接線,現況 100% 無防護,違反 CLAUDE.md C-16「高錯誤代價節點 default 必走安全側」;RestartSyncGateTest之 "defaults to open" 將危險預設斷言為正確行為。 - P1×4(HLC 極端漂移無上界/舊 patient_id 遲到寫入可竄改已封存病歷/NotesReplayRepository 兩次 DAO 呼叫間可遺失碰撞稽核/RestartSyncGate 與 restore 為未串接孤兒元件)+ P2×4 詳報告,每條附具體失敗場景 + 替代方案 + 既有測試覆蓋落差。
- 三條 P0 待 system-architect 裁決 + android-developer 修補(P0-1 規格修訂、P0-2/P0-3 程式修改),另開任務。
3 BLE 加密列拆列降級( ADR_DOWNGRADED: ADR-117 §後續修訂)¶
- regulatory.md §加密強制表 + software-stack.md §三條加密鏈表之 BLE 列,原整列 與同表 HaLow/WiFi(皆 )不一致,依接地上限條款 v1.8.1 拆兩面向:
- 「BLE 僅配對瞬間 < 10 秒」=業主 B-1=(γ) 拍板範圍決策 → 維持 [evidence: owner],不受接地上限。
- 「LE Secure Connections/AES-128 CCM 加密機制及 PDPA 合規適足性」=研究/法規驅動承重聲稱,tier=verifier-self 未過 L4 → **由 降 **。
- 降級記錄寫入 ADR-117 新增「## 後續修訂/2026-07-13」節; network.md「三條物理層通訊鏈路」表同一 BLE 列本批未含,下批同步拆列(已記 ADR-117 待辦)。
4 specs legacy 錨點第一批(regulatory.md + software-stack.md)¶
- 業主錨點×2(bare [evidence: owner],因 docs/owner-tracking/ 尚無實檔):嚴重度全序 BLACK>RED>YELLOW>GREEN、TriageRecord per-column 表(D-3 + ADR-116);連同 BLE 配對用途共三處 bare owner,是否補建 owner-tracking 記錄檔待業主決定(補後可消 F3 warn)。
- 結論錨點×1:Append-Only Log → conclusions/2026-07-11_phase5-batch2-adjudication.md(human_checkpoint 2026-07-11 已完成才掛)。
- 平台/架構基線×5(C 語言/Kotlin×2/MVVM/Canvas):非研究驅動承重聲稱,依 S1 規則不掛錨、以括號註記留痕。
- 全批零升級(/ → 不在本批範圍);主協調者已逐行 diff 守門確認。
- tree:adr-117 節點經 system-architect 啟動義務驗證通過 → verification_status 改 verified;降級修訂補記 + 00-index NEW 登錄(主協調者代寫,符合寫入權矩陣)。
5 S1 hook 計數啟發式校準(fabrication-check.ps1,warn 層)¶
- 無錨點計數改只算斷言形行:「狀態:」/「 已確認」相鄰/表格獨立 glyph 格;裝飾性提及(「由 降 」「不升 」「 必要」、句中 glyph)不再入計。
- zero-FP block 路徑完全不動(有錨點行不論形狀一律過閘)。
- 誠實揭露殘餘縫(已寫進 hook 註解):無標籤裸 升級行會躲過此 warn,且 CI committed_spec_audit 只稽核有錨行——該縫只剩人類 diff 層可見,且該寫法本身可見地違反 specs 狀態標籤慣例。
-
test-v17-s1s2s6.ps1:4 個受影響 fixture 更新為斷言形 + 新增「裝飾性 沉默」測試(無 check 不進套件紀律)。
驗收標準¶
-
本機測試(主協調者獨立重跑,非沿用 agent 聲稱):
.\gradlew :core:test :data:test --rerun-tasks→ exit 0;core 70/70、data 30/30,0 failures/errors。 -
hook 回歸:
test-v17-s1s2s6.ps1→ exit 0,41 案全 PASS(含新增裝飾性沉默案);test-cjk-regression.ps1→ exit 0;hook 全檔 PowerShell 語法解析 OK。 - S1 校準真值表 10/10(scratchpad 獨立驗證:5 斷言形入計、5 裝飾形跳過)。
- specs diff 守門:本批僅降級/加錨/加註,零 → 升級。
- push 後 CI core-test + template-tests 全綠(runner 權威綠燈;external-review 維持無金鑰 fail-closed 紅燈,屬已知狀態)。
殘留與後續¶
- devil P0×3 裁決與修補(system-architect + android-developer)——建議下個 session 最優先。
- network.md BLE 列拆列(下批);specs 其餘檔 legacy 錨點續批(constraints.md/hardware.md/network.md)。
- owner-tracking 三檔補建(B-1=γ/嚴重度全序/D-3)待業主決定。
- tombstone 規格問題待 system-architect 確認(可併 P0 裁決)。
- external-review CI 處置待業主決定(加金鑰/無鑰 skip/維持紅燈)。
- 追蹤節點:個資會組織法三讀(→PDPA 新制切換)、72hr 子法定案、「醫用軟體分類分級參考指引」是否有比 109.12.24 更新版本、NCC FL094278(403 待業主瀏覽器手抓)、P-1/S-1/E-1 延後決策、L4 DUE(q7-redo-verification)。
沒有任何資料可供顯示
動作