專案

一般

配置概況

動作

Feature #324

進行中
SC

v1.7 反捏造機械閘全套落地:S1–S9 + 三輪帳號外紅隊稽核修復 + CI 執法(PreToolUse 事前閘 / committed-spec-audit)

Feature #324: v1.7 反捏造機械閘全套落地:S1–S9 + 三輪帳號外紅隊稽核修復 + CI 執法(PreToolUse 事前閘 / committed-spec-audit)

是由 Sashiba Chou28 天 前加入.

狀態:
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):擋 BashPowerShell 對治理目錄的重導向寫入(>>>teeSet-ContentAdd-ContentOut-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 統一涵蓋 unreachablenon-textfetch-failERROR 六類(消除「摘要 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.ps1RESULT: all PASS(40 案例)、exit 0
  • test-write-matrix-guard.ps1RESULT: all PASS(23 案例)、exit 0
  • test-shell-write-guard.ps1RESULT: all PASS (21)、exit 0
  • python test-external-review.py18 passed, 0 failed、exit 0
  • python test-committed-spec-audit.py11 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.mdhuman_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(保證上限)

沒有任何資料可供顯示

動作

匯出至 PDF Atom