fix/pr-create-stopwatch-and-docs/main
master
pr-create 不再把「錶本來就沒在跑」報成失敗,README 與 AGENTS.md 也不再說指令沒到齊。
pr-create
#1 — tea-sdlc:以 tea 驅動 SDLC 全流程的跨平台指令組
#54 — 修正 pr-create 把「錶沒在跑」報成失敗,並更新過時的安裝說明
scripts/pr-create.js
stopStopwatch
test/pr-create.test.js
README.md
AGENTS.md
test/readme-install.test.js
prompts/
為什麼不是只看訊息或只看狀態碼。 只看訊息會把真的伺服器錯誤一起吞掉;只看狀態碼會 把「議題被鎖住」這類別的 409 也當成沒錶。兩個條件都要成立才算,其餘照常拋出—— 測試裡那條 issue is locked 的 409 就是釘這件事。
issue is locked
為什麼這個 bug 值得修而不是繞過。 pr-create 早就寫下了正確的理由:「錶本來就沒在 跑不算失敗——PR 已經開出去了,把整件事報成失敗只會讓人以為 PR 沒開成而重跑一次」。 壞掉的只是狀態碼的判斷,而症狀正好是它想避免的那一種。三次重現(議題 #41、#50、#42), 每次 PR 都確實開成了。
為什麼文件那兩句要用測試釘住。 「六個流程正本尚未到齊」在六份都到齊之後還留著, 是因為沒有任何東西會在正本補齊時提醒人回頭改。新測試讀 prompts/ 數份數,說法與現況 對不上就紅——下一次正本增減時,說明會被逼著一起改。
照 /sdlc-feat 第三段跑到最後一步的人,會看到 PR 明明開出去了、腳本卻回 ok:false。 流程正本教他「被擋下來時不要繞過去」,於是他很可能重跑一次——而重跑是安全的(同一個 head 會接上既有的 PR),但那趟來回完全是這個錯誤訊息造成的。
/sdlc-feat
ok:false
README 的那句話則會讓第一次看到這個工具的人以為它還不能用。
pr-create 在「錶真的沒在跑」時從 exit 1 變成 exit 0,碼錶已停 仍為 false 並附說明; 錶有在跑、或遇到其他錯誤時的行為完全不變。文件變更不影響任何程式行為。
碼錶已停
false
npm test ℹ tests 792 ℹ pass 792 ℹ fail 0
pr-create 的測試從 36 條增為 38 條(兩種狀態碼各一、訊息對不上的 409 一條)。
這顆 PR 本身就是端到端驗證:它是用修好的 pr-create 開的,而 #54 上沒有碼錶在跑—— 修正前這一步會以 exit 1 收場,修正後它會開好 PR 並如實說「碼錶本來就沒在這顆議題上運轉」。
🤖 Generated with Claude Code
Gitea 回「cannot stop a non-existent stopwatch」時用的狀態碼隨站台而異:這台回 409, 而腳本只認 500。結果是 PR 已經開出去了,卻以 exit 1 與 HTTP_ERROR 收場——照它自己 寫下的理由,那會讓人以為 PR 沒開成而重跑一次。三次重現(議題 #41、#50、#42)。 認的是「狀態碼在 409/500 這一組 **且** 訊息說的是碼錶」:只看訊息會把真的伺服器錯誤 一起吞掉,只看狀態碼會把別的衝突也當成沒錶。兩種狀態碼各一條測試,另加一條 「訊息對不上的 409 照常拋出」。 README 與 AGENTS.md 的「六個流程正本尚未到齊」也一併改掉——六份都在了,那句話會讓 使用者以為裝了也沒指令可用,在 AGENTS.md 裡還會誤導下一個 agent。並補一條測試把說法 與 prompts/ 的實際份數釘在一起,免得下次又走鐘。 議題 #54 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
No dependencies set.
The note is not visible to the blocked user.
摘要
pr-create不再把「錶本來就沒在跑」報成失敗,README 與 AGENTS.md 也不再說指令沒到齊。需求議題
#1 — tea-sdlc:以 tea 驅動 SDLC 全流程的跨平台指令組
工作包議題
#54 — 修正 pr-create 把「錶沒在跑」報成失敗,並更新過時的安裝說明
變更內容
scripts/pr-create.js:stopStopwatch把 409 與 500 都視為「沒有碼錶在跑」,判斷條件改為「狀態碼在這一組 且 訊息說的是 stopwatch」。
test/pr-create.test.js:原本的單一情境改為兩種狀態碼的表格,另加一條「訊息對不上碼錶的 409 照常拋出」。
README.md、AGENTS.md:拿掉「六個流程正本尚未到齊」。test/readme-install.test.js:新增一條,把說法與prompts/的實際份數釘在一起。設計重點
為什麼不是只看訊息或只看狀態碼。 只看訊息會把真的伺服器錯誤一起吞掉;只看狀態碼會
把「議題被鎖住」這類別的 409 也當成沒錶。兩個條件都要成立才算,其餘照常拋出——
測試裡那條
issue is locked的 409 就是釘這件事。為什麼這個 bug 值得修而不是繞過。
pr-create早就寫下了正確的理由:「錶本來就沒在跑不算失敗——PR 已經開出去了,把整件事報成失敗只會讓人以為 PR 沒開成而重跑一次」。
壞掉的只是狀態碼的判斷,而症狀正好是它想避免的那一種。三次重現(議題 #41、#50、#42),
每次 PR 都確實開成了。
為什麼文件那兩句要用測試釘住。 「六個流程正本尚未到齊」在六份都到齊之後還留著,
是因為沒有任何東西會在正本補齊時提醒人回頭改。新測試讀
prompts/數份數,說法與現況對不上就紅——下一次正本增減時,說明會被逼著一起改。
解決的問題
照
/sdlc-feat第三段跑到最後一步的人,會看到 PR 明明開出去了、腳本卻回ok:false。流程正本教他「被擋下來時不要繞過去」,於是他很可能重跑一次——而重跑是安全的(同一個
head 會接上既有的 PR),但那趟來回完全是這個錯誤訊息造成的。
README 的那句話則會讓第一次看到這個工具的人以為它還不能用。
影響的功能
pr-create在「錶真的沒在跑」時從 exit 1 變成 exit 0,碼錶已停仍為false並附說明;錶有在跑、或遇到其他錯誤時的行為完全不變。文件變更不影響任何程式行為。
測試結果
pr-create的測試從 36 條增為 38 條(兩種狀態碼各一、訊息對不上的 409 一條)。這顆 PR 本身就是端到端驗證:它是用修好的
pr-create開的,而 #54 上沒有碼錶在跑——修正前這一步會以 exit 1 收場,修正後它會開好 PR 並如實說「碼錶本來就沒在這顆議題上運轉」。
🤖 Generated with Claude Code