動作
Feature #324
進行中
SC
v1.7 反捏造機械閘全套落地:S1–S9 + 三輪帳號外紅隊稽核修復 + CI 執法(PreToolUse 事前閘 / committed-spec-audit)
Feature #324:
v1.7 反捏造機械閘全套落地:S1–S9 + 三輪帳號外紅隊稽核修復 + CI 執法(PreToolUse 事前閘 / committed-spec-audit)
狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-07-04
完成日期:
完成比例:
0%
預估工時:
概述
v1.7 反捏造機械閘全套落地:紙上約定 → runtime 強制(S1–S9)+三輪帳號外紅隊稽核修復+CI 執法¶
背景¶
ARGUS 的反捏造紀律(四鐵則、寫入權矩陣、spot-check 節奏)長期是紙上約定——靠協調者自律,而協調者本身是「最不受約束的捏造源」(場景 H)。約定擋不住換句話說、擋不住悄悄跳過、擋不住協調者直寫。本輪把這些約定下沉為 runtime 強制的機械閘,並用三輪冷啟動、帳號外獨立 AI session 紅隊稽核逐條攻打、修補,最後補上 CI 層作為協調者按不到的綠燈(watcher≠watchee 的工程版)。
核心設計原則貫穿全程:零誤報優先(前提不成立即 fail-open warn)、收窄非消滅(誠實標明每道閘的殘留邊界)、縱深防禦(工具層限制對 build/快取敏感,故偵測層+事前閘+CI+人審不因單層生效而拆除)。
變更內容¶
新增機械閘(Stop hook 內容層,fabrication-check.ps1 +645 行)¶
-
S1 證據錨點閘:本輪新增的
docs/specs/行若帶[evidence: docs/research/conclusions/…]錨點、而該結論檔不存在或human_checkpoint缺/pending/非合理過去日 → block。把「悄悄跳過人類抽查就升 」升級成 git 歷史可見的顯式偽造。無錨點行 → warn(不懲罰舊存量/圖例)。 -
S2 治理目錄冒名偵測:
docs/specs/、docs/decisions/掛矛盾produced_by、或具名未授權角色本 session Write 該檔 → block;泛型代寫/spawn 缺席 → warn(同 C-H1′ fail-open 階梯)。 - S3 進度謊報對帳、S4 逐字引文接地、S6 警報降噪(排序摘要+跨輪 warn 折疊,狀態檔 gitignored)、S8 跨 AI 稽核到期提醒、S9 記憶污染掃描(Superseded 結論仍被記憶/決策樹引用 → warn)。
新增事前閘(PreToolUse,寫入矩陣從「偵測」升級為「預防」)¶
-
write-matrix-guard.ps1(S7):具名角色(含 ARGUS 5 工程角色)對非授權治理目錄的Write/Edit/NotebookEdit動作發生前即 deny,並指路 inline fallback。fail-open:協調者主線/泛型 agent/舊版 build/repo 外路徑一律放行。 -
shell-write-guard.ps1(N-2):擋Bash/PowerShell對治理目錄的重導向寫入(>/>>/tee/Set-Content/Add-Content/Out-File)——補住「繞過 Write/Edit、改用 shell 重導向」的洞。 -
settings.json:註冊上述兩個 PreToolUse hook。
新增 CI 執法層(協調者按不到的綠燈)¶
-
committed_spec_audit.py(N-1):本地 Stop hook 只看工作區,同輪git commit可對它藏一條假 行;此腳本在 CI push 後對已 commit 的 specs 全量重跑 S1 不變式——同輪 commit 不再能藏。 -
.github/workflows/tests.yml:windows-latest(PS 5.1 = hook 實際執行環境)跑全部 hook e2e/guard/CJK/claims_gen/pdf/external_review/committed_spec_audit 回歸。並列l4-external-review.yml為「帳號外的兩隻眼睛」。
L4 外部接地 fail-open 收口(external_review.py 等)¶
-
RED_VERDICTS統一涵蓋unreachable/non-text/fetch-fail/ERROR六類(消除「摘要 vs exit 閘」自相矛盾);缺 provider 金鑰 啟動即 fail-closed exit 3(不再讓沒鑰匙的 job 靜默變綠);l4-external-review.yml補裝pypdf;空目錄改 exit 0(hourly cron 不再永久紅)。
三輪帳號外紅隊稽核修復(docs/incidents/ 報告+回應)¶
-
N-0(地基):harness 對宣告
memory:的 agent 自動補發 Write+Edit——project-manager.md曾帶memory: project,把 lesson 14 拔掉的 PM 寫檔能力靜默裝回。修:移除 PM 的memory:欄,冷啟動 session 重測(2026-07-04)確認 PM 已無 Write/Edit(同 session 見殘留寫能力係 registry 改檔前快取的測量污染)。 -
R1–R3 逐條:F1(圖例格式繞過 S1)、F2(
../路徑穿越雙層)、F5(誤 block 內文produced_by:)、F-new-1~9(大小寫不對稱、括號空格、fence 去同步、look-alike 勾號 、NTFS ADS 繞過…)——每條附 pass+fail 回歸案例。標明未修殘留(8.3 短檔名、symlink、fenced 藏真升級行、記憶注入案)為誠實邊界,不假裝已閘。
驗收標準(本 session 實際執行,附機械證據)¶
-
test-v17-s1s2s6.ps1→RESULT: all PASS(40 案例)、exit 0 -
test-write-matrix-guard.ps1→RESULT: all PASS(23 案例)、exit 0 -
test-shell-write-guard.ps1→RESULT: all PASS (21)、exit 0 -
python test-external-review.py→18 passed, 0 failed、exit 0 -
python test-committed-spec-audit.py→11 passed, 0 failed、exit 0 -
python committed_spec_audit.py(真 repo 全量)→0 violation(s), 0 warning(s)、exit 0 - 每道 block 閘皆零誤報(前提不成立即 fail-open warn);殘留邊界於 README/CLAUDE.md 誠實標明
-
CLAUDE.md 同步四道機械閘摘要 + §進度聲稱證據規則(S3 三層);
_template.md補human_checkpoint欄
遺留待辦(另案,README §殘留已列)¶
- LOW-4 Windows 8.3 短檔名繞過 guard 前綴比對(修:比對前
GetLongPathName) - LOW-6 Check A(research provenance)未如 S2 限定首個 frontmatter(修:對齊只掃首個 YAML 區塊)
- N-3
.claude/agent-memory/注入案零機械防線(單一命名空間無法分辨自寫 vs 冒名,真防線=人審+記憶進 specs 前 spot-check) - 人類動作:GitHub Settings → Branch protection 把
tests設為 required check
關聯¶
- 承 v1.7 PLAN;incidents 報告
docs/incidents/2026-07-03_v17-audit-r1~r3-* - 與
l4-external-review.yml(帳號外第二隻眼)並列為 CI 雙眼;呼應 lesson 13(跨 AI 稽核)、lesson 15(保證上限)
沒有任何資料可供顯示
動作