From be09353330e90c8a160ea33ab28b31ee90b6172e Mon Sep 17 00:00:00 2001 From: claude-code Date: Fri, 28 Aug 2026 00:27:32 +0000 Subject: [PATCH] =?UTF-8?q?PR=20=E4=B8=80=E5=AE=9A=E8=A6=81=E6=9C=89?= =?UTF-8?q?=E7=B5=90=E8=AB=96=EF=BC=88inkstone/ISEP#81=EF=BC=89=EF=BC=88do?= =?UTF-8?q?cs/TESTING.md=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/TESTING.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/docs/TESTING.md b/docs/TESTING.md index 8ea71fc..3b7763b 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md @@ -91,6 +91,40 @@ bash scripts/test-baton-handback-guard.sh - 「不該報」4 條任一紅 ⇒ 每條線收工都被念一次,警報會被學會忽略 - 「票已關」那條紅 ⇒ 棒子已經到終點還在催,那是最典型的假警報 +### A14 — PR 一定要有結論:52 條 +``` +bash hooks/tests/pr-verdict-guard.test.sh +``` +**該看到**:`52 通過 / 0 失敗`。全程離線(走 `PR_VERDICT_FIXTURE`), +**不打 Gitea、不開測試 PR、不留任何測試票**;狀態檔走 `PR_VERDICT_STATE_DIR`。 + +**它在守什麼**(`inkstone/ISEP#81`,2026-08-27 實查):最久的三個 open PR 躺了兩星期 +(`inkstone/arcrun-rag#91` 14 天、`inkstone/Arcrun#116` 14 天、`inkstone/Arcrun#104` 15 天), +而 v0.9.0 的 46 支閘**一支都沒有在管 PR**。票看起來是「已交付」, +東西卻沒進 main ⇒ 沒進版本 ⇒ **leo 手上永遠不會出現它**。 + +**失敗**: +- B 群(⑨⑩⑪,票上那三個真跡)任一紅 ⇒ 今天這個形狀會再發生一次 +- C 群 ⑭⑰ 紅 ⇒ 驗收條件 1/3 沒過:「放著不管」抓不到,或「merge 了分支還在」放行 +- **A 群任何一條紅 ⇒ 誤攔,這比漏擋嚴重**。②③特別重要: + 指派給人/掛 Human 之後還在點名,就是 ISEP v0.6.0 divergence §B4 記過的那個坑 + (「`s/review` 佇列非空即 block」⇒ 佇列本來就不會空 ⇒ **總管永遠停不下來**) +- E 群 ㉙ 紅 ⇒ 閘訊息裡承諾的出路(「把它指派給那個人,本閘立刻不再點名它」)是假的 +- D 群 ㉓ 紅 ⇒ 判準從「識別碼比對」滑成「只要提到票號就放行」,閘會被任何一句話關掉 + +> 📌 **真跡不只在 fixture 裡跑過**:同一支閘打真實 Gitea 也驗過, +> 一次點名 7 個沒有結論的 PR,含票上那三個(15/14/14 天)。 +> 指令:`printf '{"session_id":"x","transcript_path":"/nonexistent"}' | bash hooks/pr-verdict-guard.sh` +> ——**唯讀,不改動任何 PR**。 + +### A15 — 給結論的那支工具自己說得出要打哪幾通 API +``` +python3 scripts/pr-verdict list +python3 scripts/pr-verdict merge inkstone/ISEP#71 --dry-run +``` +**該看到**:`list` 印出 open PR 與「有沒有人被指派」;`merge --dry-run` 印出 +`[dry-run] POST …/pulls/71/merge` 與 `[dry-run] DELETE …/branches/<分支>`,**一通都不真的送出**。 +**失敗**:`--dry-run` 底下出現真實的寫入結果 ⇒ 這支工具沒辦法在按下去之前被檢查。 ### A14 — 每一則回覆都自己說出拖了多久:20 條 ``` bash hooks/tests/countdown-guard.test.sh @@ -324,6 +358,8 @@ B2(信標那行)/B3(setup 輸出)/B4(閘的訊息)三個畫面 | A3 打 tag 閘 | 總管 | ✅ 3/3 | | **A4 新增 Gitea 東西側門閘** | 總管 | ✅ 24/24(2026-08-27,inkstone/ISEP#72) | | **A13 戳記證明看過不是跑過** | 總管 | ✅ 17/17(2026-08-27,inkstone/ISEP#72→4873) | +| **A14 PR 一定要有結論** | 總管 | ✅ 52/52(2026-08-28,inkstone/ISEP#81)+真實 Gitea 唯讀重演 | +| **A15 pr-verdict --dry-run** | 總管 | ✅(2026-08-28) | | **A14 回覆自己說出拖了多久** | 總管 | ✅ 20/20(2026-08-28,inkstone/ISEP#63) | | **A15 發通知不等於部署** | 總管 | ✅ 37/37(2026-08-28,inkstone/ISEP#63) | | A5 搜尋跨 repo | 總管 | ✅ |