fix/pr-create-stopwatch-and-docs/main #55

Merged
admin merged 1 commits from fix/pr-create-stopwatch-and-docs/main into master 2026-09-17 09:54:55 +00:00
Member

摘要

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 並附說明;
錶有在跑、或遇到其他錯誤時的行為完全不變。文件變更不影響任何程式行為。

測試結果

npm test
ℹ tests 792
ℹ pass 792
ℹ fail 0

pr-create 的測試從 36 條增為 38 條(兩種狀態碼各一、訊息對不上的 409 一條)。

這顆 PR 本身就是端到端驗證:它是用修好的 pr-create 開的,而 #54 上沒有碼錶在跑——
修正前這一步會以 exit 1 收場,修正後它會開好 PR 並如實說「碼錶本來就沒在這顆議題上運轉」。

🤖 Generated with Claude Code

## 摘要 `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` 並附說明; 錶有在跑、或遇到其他錯誤時的行為完全不變。文件變更不影響任何程式行為。 ## 測試結果 ``` npm test ℹ tests 792 ℹ pass 792 ℹ fail 0 ``` `pr-create` 的測試從 36 條增為 38 條(兩種狀態碼各一、訊息對不上的 409 一條)。 這顆 PR 本身就是端到端驗證:它是用修好的 `pr-create` 開的,而 #54 上沒有碼錶在跑—— 修正前這一步會以 exit 1 收場,修正後它會開好 PR 並如實說「碼錶本來就沒在這顆議題上運轉」。 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jiantw83 added 1 commit 2026-09-17 09:47:17 +00:00
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>
admin scheduled this pull request to auto merge when all checks succeed 2026-09-17 09:50:47 +00:00
admin approved these changes 2026-09-17 09:54:54 +00:00
admin merged commit c2ca7fbf07 into master 2026-09-17 09:54:55 +00:00
admin deleted branch fix/pr-create-stopwatch-and-docs/main 2026-09-17 09:54:55 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/tea-sdlc#55