一次交貨留下兩樣東西:跨 repo 版本清單(inkstone/ISEP#84)+結案記帳(inkstone/ISEP#85) #103
Closed
claude-code
wants to merge 1 commits from
feat/release-manifest-and-milestone-account into main
pull from: feat/release-manifest-and-milestone-account
merge into: inkstone:main
inkstone:main
inkstone:fix/roster-plugin-prefix
inkstone:chore/v0.16.0
inkstone:feat/nag-and-wiki-compress
inkstone:feat/named-workers-and-reply-gate
inkstone:feat/manifest-account-v2
inkstone:feat/debt-worklist
inkstone:chore/v0.13.0
inkstone:feat/handoff-writeback-loose
inkstone:feat/mainline-milestone
inkstone:chore/v0.12.0
inkstone:fix/cloud-wiring-isep90
inkstone:feat/pr-verdict-v2
inkstone:feat/countdown-stamp
inkstone:feat/gate-search-is-not-proof
inkstone:fix/stamp-proves-seen-not-run
inkstone:feat/gate-catches-recon-without-output
inkstone:docs/inventory-missing-rows
inkstone:fix/tests-leave-no-forged-pending
inkstone:integrate/isep59-wave2
inkstone:fix/gitea-write-search-guard
inkstone:feat/leo21c-mcp-guard
inkstone:fix/dispatch-guard-parens-and-wiring
inkstone:fix/dispatch-guard-noise-and-wiring
inkstone:fix/remove-claim-worksheet-mechanism
inkstone:feat/three-native-fields
inkstone:feat/ticket-carries-the-task
inkstone:feat/gate-fires-when-asking-not-after-stopping
inkstone:fix/stamp-release-stat-ordering-linux
inkstone:fix/beacon-says-which-copy
inkstone:fix/factory-idle-guard-blocks-actions-not-mentions
inkstone:fix/beacon-counts-registered-gates
inkstone:fix/push-guard-cross-repo-stamp
inkstone:feat/vendor-drift-guard
inkstone:fix/push-guard-target-not-substring
inkstone:feat/milestone-must-have-due
inkstone:fix/worksheet-dedup-by-content
inkstone:fix/b4-real-probe
inkstone:fix/cloud-setup-git-auth-verify
inkstone:feat/cloud-env-outdir
inkstone:fix/testing-b-section-discriminating
inkstone:fix/setup-self-verify
inkstone:fix/claim-worksheet-dedup
inkstone:fix/cloud-env-parity-14
inkstone:fix/sdd-guard-path-resolution
inkstone:feat/cloud-env-generator
inkstone:fix/one-copy-per-gate
inkstone:fix/group0-gates
inkstone:chore/withdraw-versions
inkstone:rule/milestone-formation
inkstone:rule/pr-only
inkstone:docs/three-source
inkstone:docs/plan
inkstone:release/v0.2.1
inkstone:fix/ticket-api-bypass
inkstone:leaf/24-descope
inkstone:release/v0.2.0
inkstone:leaf/5-cloud
inkstone:leaf/18-dogfood
inkstone:leaf/6-release
inkstone:leaf/2-docs
inkstone:leaf/3-wiki
inkstone:leaf/4-labels
No Reviewers
Labels
Clear labels
Human
hub
human/exec
👤 這件事需要 leo 親手批示/動手(花錢・不可逆・品味方向・物理動作)。與 s/* 正交
close
duplicate
重複——關新的、留舊的,並指向舊票
close
human-exec
人執票完成,由人手動關
close
merged
PR merge 自動關(正常路徑)
close
split
太大,已拆成數張子票
close
stale
逾期無資訊,自動關閉
close
transferred
走錯棚,已在正確的 repo 重開
close
wontfix
討論後決定不做(只有 leo 可下此判斷)
Tracking issue——聚合一批 leaf 的 scope 容器,本身不掛 milestone、不對應 PR
👤 這張票的『執行者』是人(GUI-only/實體權限/法定簽署),不是審核。交付物是環境狀態改變,不是 PR
p
high
高——擋住交付或有時間壓力
p
low
低——想做,但晚一點沒關係
s
backlog
驗過了、確定要做,但還沒排進任何 sprint
s
doing
進行中——已 self-assign,現在有人在做
s
pending
卡住——等外部/等依賴,不是沒人做
s
review
PR 已開(含 closes #n),等總管 review 並 merge
s
stage
已部署 stage,等 leo 實際驗收
s
todo
已排進 milestone,等人領票
s
triage
新進來的,還沒驗傷——還沒決定要不要做
type
bug
壞掉的東西
type
chore
雜務、整理、不改行為
type
feature
新能力
type
governance
規範、流程、閘本身
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: inkstone/ISEP#103
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "feat/release-manifest-and-milestone-account"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
【工單】
inkstone/ISEP#84、inkstone/ISEP#85(同一條分支,兩張票都在「一次交貨結束時要留下什麼」這一格)🔴 版本號待總管定版:
plugin.json仍是0.11.0,沒有自己動。(
scripts/check-version-consistency.sh現在是綠的:plugin.json=0.11.0、最新 tag=v0.11.0。)#84— 這一版由哪幾個 repo 的哪幾版組成新增
scripts/release-manifest(freeze/verify/show/list/current/diff/rollback)。三條硬規則長在工具裡,不是寫在文件裡靠人記得:
「寫上去」跟「存在」是兩件事,而清單的用處完全建立在後者。
rollback一定吐出整份清單的每一格(含「已經在目標版本、不必動」的那幾格,列出來才證明沒有一格被漏掉);
--only <某個 repo>直接擋下——那正是票上那個病:剩下的還停在新版 ⇒ 一組從來沒測過的組合。
清單與人看的
INDEX.md寫在專案根的releases/,不是 plugin 目錄——ISEP 是 marketplace 裝的,
claude plugin update會把那個目錄整個換掉,而清單的用處全部發生在「以後要退版的那一天」。
沒有新增 PreToolUse 閘是刻意的:這一層唯一能機械辨認的「退版動作」形狀很難跟
「讀取/談論」分開,而誤攔在本 repo 是第一級缺陷。所以閘做成工具本身就是唯一的門
(同
scripts/pr-verdict的形狀),不去猜指令字串。#85— 估多久/花多久/差多少/為什麼差新增
scripts/milestone-account(codes/list/audit/close/report)+
hooks/milestone-account-guard.sh(PreToolUse/Bash,+1 支、+1 條註冊)。created_at/due_on/closed_at。提早太多不是好消息,是當初估太鬆——所以兩個方向同一條線。
idle磨洋工/sidetrack分心跳線/undispatched忘了派工/cherry-pick偏科/waiting等答案/scope-creep範圍變大/misestimate純粹估錯。票上寫死的理由:能統計的前提是分類有限。
audit先從時間戳/指派欄位/標籤/票的歸屬算出哪幾個訊號成立,
close只接受訊號成立的那幾個;六個都不成立時唯一合法的就是
misestimate(=票上那句「以上都沒有,但還是差很多」)。⇒ 不採信任何人的自述,這是票上寫死的。判準一句自然語言都不讀。
curl -X PATCH … state=closed但還沒記帳」。純讀取/建里程碑/改期限/
echo那段指令/cat這支閘/heredoc 內文/走正門
milestone-account close——全部放行。真要手動關 ⇒ 指令裡加
milestone-account-ok(留痕)。system-dev/estimates/(理由同上:plugin 目錄會被換掉,而這張票的全部價值就在「累積」)。
milestone-account-guard跟既有的milestone-due-guard是同一條線的兩端:那支管開里程碑要有真的期限(沒有期限就沒有「估多久」可言),這支管關的時候要留下帳。
我跑過的(每一格都自己跑過,不是宣稱)
離線,不打 Gitea、不留測試票、不關任何真的 milestone、不建任何真的 release:
三支都在
CLAUDE_CODE_CHILD_SESSION清掉之後重跑過一次(這台機器上它原本是1)。真實 Gitea 唯讀重演(只有 GET/
--dry-run,一通寫入都沒送出):milestone-account list --org inkstone --overdue撈到的正是票上點名的那五個,而且每一個都算得出數字:milestone-account audit inkstone/ISEP#43從真的時間軸算出:最長空白 2.8 天(佔整段 37%)/29 個動作在別的票上(37%)/5 張票整段沒有人被指派/
開跑之後才補進來 9/15 張票 ⇒ 可以挑的代號
idle / sidetrack / undispatched / cherry-pick / scope-creep。release-manifest freeze … --dry-run對inkstone/ISEP@v0.11.0+inkstone/arcrun-rag@1.4.60兩格都抓到真的 release;換成
v99.0.0當場被擋下。既有測試沒被我弄壞(同樣清掉
CLAUDE_CODE_CHILD_SESSION跑):release-tag 8/8、ticket-api-bypass 24/24、ticket-where-seen 17/17、comment-carries-task 22/22、
baton-handback 10/10、main-and-prod-push 13/13、stage-before-prod 13/13、github-contact 14/14、
kbdb-api-wall 10/10、dispatch-format 33/33、sdd 8/8、search-is-not-proof 31/31、
factory-idle 33/33、mainline-idle 61/61、reply-identity 11/11、ask-user-question 14/14、
gitea-arm-check 16/16、pr-verdict 52/52、countdown 20/20、prod-write 37/37、
版本三處一致 ✅。
🔴 一格我沒有交乾淨,明講:
hooks/tests/main-and-prod-push-guard-cross-repo.test.sh是
通過 14/失敗 5。這是本來就紅的——我把改動git stash掉、在乾淨的main上重跑,一模一樣是 14/5。不是這個 PR 造成的,也不在這兩張票的範圍內。
盤點數字
在我自己的樹上實數出來的,不是拿上一版加減推
(
system-dev/wiki/mistakes.md:那個數字是 leo 的驗收介面,多報就是假綠):hooks-inventory.md的落差偵測兩組comm都是空的(沒有閘漏列人話、沒有列了卻不存在的閘)。順手修掉兩個真的漂移(不是改風格):
docs/hooks-inventory.md的「一句話結論」同一行被貼了兩次,而標頭寫 52、內文寫 53——同一頁裡三個數字互相矛盾,正是那一頁自己警告過的病。
kbdb-live-exam//lib//patches/三個目錄也數進去了;用那一頁寫死的指令(只數檔案)實數是 39。
我判斷的、寫下來讓你打回
#85的訊號門檻是第一版,會需要調。 上面ISEP#43那次七個訊號命中了五個,偏寬。但這正是票上要的「把測得到變成可以統計、可以迭代」——
資料累積起來之後調門檻,而不是現在憑感覺先調。
🔴 調法只有一條:改
audit的偵測器,不是在close開後門讓人繞過去。#84沒有配一支 PreToolUse 閘,理由寫在上面(誤攔風險 > 漏擋代價)。如果你認為需要,那是另一張票。
理由是
plugin update會把 plugin 目錄整個換掉。若你要它們住別的地方,兩支工具都吃
RELEASE_MANIFEST_DIR/MILESTONE_ACCOUNT_DIR環境變數,改一行就好。Pull request closed