身為 leo,我要每次交貨都有 release tag 和 release note,我才知道手上是哪一版 #6
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
Parent: #1
目的:ISEP 的「版本」不再只是 README 上的一行字,而是 Gitea 上打得開、裝得起來的 release。
現況(實查 2026-08-20):
README.md宣稱 0.1.0,但 reporelease_counter=0、一個 tag 都沒有。leo 當場指出這是違規,且命中規範自己的 E12(宣稱交付但沒有 tag)。leo 補充:「release 不是寫在 readme,要放在 release 裡」。怎麼驗:Releases 頁面上有 tag;release note 寫在 release 裡(不是 README);
plugin.json的版本號與 tag 一致;README 不再自己宣稱版本。紅線:不得為了讓數字好看而補一個沒驗過的 tag——沒驗過就不是交付。
BLUF
結論:ISEP 的「現在是哪一版」改成結構性只有一個地方答得出來(Gitea Releases),機制與草稿已交,分支
leaf/6-release已推送等總管驗收。沒有打 tag、沒有建 release(紅線)。做了什麼
https://git.uncle6.me/inkstone/ISEP/releases,並說明結構性防漂移機制。.claude-plugin/plugin.json的version從0.1.0改回哨兵值0.0.0——誠實承認「目前沒有一個經過驗證、掛在 Releases 上的版本」,這正是這張票抓到的違規本身(宣稱版本卻沒有 tag 撐它)。真正打 tag 那天,version要跟 tag 同一個 commit 一起改成那個號碼。scripts/check-version-consistency.sh:隨時可手動跑的一致性檢查——比對plugin.json的version是否等於最新 git tag(沒有 tag 時必須是0.0.0),以及 README 是否偷偷又自報了版本號。不一致時 exit 1,訊息講清楚哪個檔案錯在哪。hooks/release-tag-guard.sh:PreToolUse Bash 閘,掛進hooks.json。在有人(包含總管自己)真的執行git tag打版本時,攔下 tag 名稱裡的版本號,跟plugin.json的version比對,對不上就擋(exit 2)並印出具體差異與修法。這是「結構性做不到各說各話」的那一半——不必等事後跑腳本才發現。實測被擋的輸出(故意製造不一致)
把
plugin.json的version臨時改成0.5.0(repo 仍是 0 個 tag),跑一致性腳本:模擬有人要打
git tag -a v0.2.0(當時plugin.json還是0.0.0),直接餵給hooks/release-tag-guard.sh:先把
plugin.json同步成0.2.0再打同一個 tag → 放行(exit=0)。另外測了 4 種不該擋的形狀(git tag -l、git tag --list、echo 帶關鍵字、grep 帶關鍵字)→ 全部正確放行,沒有誤攔。還原成正確狀態後再跑一次一致性腳本 →✅ 版本一致。Release note 草稿(給總管收進 v0.2.0 正式 release note 用)
分支
leaf/6-release(已推送到 origin,未動 main)紅線確認
plugin.json改成0.0.0哨兵值而不是隨便寫一個新號碼,就是這條紅線的直接體現)system-dev/、labels.yaml、.claude-plugin/marketplace.json;只動了.claude-plugin/plugin.json的版本欄位(派工單允許的範圍)