Leo
|
67dae3b814
|
推送閘改成判目標,不判整條指令裡有沒有那個字
一個晚上誤攔六次,全都不是在推預設分支:
① checkout -b 建新分支時把預設分支寫在後面,再推那條新分支
② gh pr create 指定 base——根本不是 git push
③ 推 tag(refs/tags/…)
④ 推 feature 分支(帶 -u)
⑤ 它擋住了我用來**測試它自己**的那條指令
⑥ 它擋住了這一筆的 commit——因為 message 裡引用了那幾個字
leo 2026-08-17 早就講過這個形狀:文字層封路必敗,
「紅線寫得越細,命中關鍵字的機率越高 ⇒ 那些閘在懲罰謹慎」。
舊版掃整條指令字串,正是文字層。
改成解析 push 的目標 refspec:
旗標跳過/第一個非旗標=remote/a:b 取 b/refs/tags/* 不算分支
一個 refspec 都沒給,才退回看當前分支
八向實測(hooks/tests/main-and-prod-push-guard.test.sh,8/8):
五種該放行的(今晚誤攔的原形狀,含分支名帶 domain 那種)全過
三種該擋的全擋
中途自己抓到一個 bug:tag 被跳過後目標清單變空 → 退回猜當前分支
⇒ 當前分支剛好叫預設名時誤擋。改成看到 refspec 就不退回猜測。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-21 01:29:55 +08:00 |
|
Leo
|
6772ca67d3
|
每個里程碑都要有真的期限,9999 也擋
leo 2026-08-21:「以後所有的 milestone 限制時間」「你根本沒有時間概念,浪費一整天」
實查七個 open milestone:六個期限是 9999-01-01、一個空白。
9999 比空白更糟——盤點時每一格看起來都有值,
於是沒有人發現這裡從來沒有時間壓力。七個已全部改成真日期。
新增 hooks/milestone-due-guard.sh,四向實測:
無 due_on → exit 2
due_on 帶 9999 → exit 2
真期限 → exit 0
只是讀 milestone → exit 0
規範補 M4.8(怎麼定期限、過期只對帳不自動關)。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-21 01:25:12 +08:00 |
|
Leo
|
135637291c
|
B4 的探針我自己沒撞過,實撞後發現它根本不會擋
v0.3.1 我把 B4 從 git tag 換成「寫 __GITEA_TOKEN__ 進 /tmp/x.md」,
說它會被 credential-only-guard 擋下。今天實撞:exit 0,閘完全沒反應。
原因:那支閘刻意豁免 .md/docs//wiki/(文件本來就要能談論這些字串)。
它只管會被執行的產物:*workflow*/.yaml/.yml/installer/worker.js/wrangler。
改成 /tmp/wf.yaml 後三向實測:
違規 workflow.yaml 帶佔位符 → exit 2 credential 鐵律攔截
同檔用 {{credential.gitea_token}} → exit 0(正確放行)
.md 談論同一個字串 → exit 0(正確豁免)
薄殼指標端同樣實測:真身在+違規 → exit 2。
這是同一個病的第四次:修假綠的那一刀,自己又是沒撞過就寫。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-21 00:33:44 +08:00 |
|
Leo
|
5bceb03478
|
v0.3.1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-20 23:03:05 +08:00 |
|
Leo
|
daa1674a20
|
雲端零閘的兩個真因:setup 從不驗證自己+沒有任何 release 撐版本號
2026-08-20 雲端 session 的閘全滅,而三個驗證步驟全部回綠。
今晚在隔離 HOME(GIT_CONFIG_NOSYSTEM=1)重現,把兩件事分開了:
① setup script 的寫法是對的
裸環境失敗、加了 url.insteadOf 就成功 —— x-access-token 這個使用者名稱
Gitea 也接受。所以先前我對 leo 說「URL 重寫沒作用到 marketplace 這條路徑」
是錯的,這裡更正。
(前兩次測試之所以誤導,是因為 /etc/gitconfig 的 macOS keychain helper
還在幫忙 —— 「隔離 HOME」並沒有隔離系統層設定。同一個病第三次。)
② 真正的缺陷是這支腳本從不驗證自己
設完就結束。token 沒生效也不出聲 ⇒ setup log 一片綠、
session 開起來才發現 marketplace 拉不下來,而那時已經沒有任何線索。
本次加兩道自我驗證:git 認證通不通、marketplace 有沒有就位,
任一不通就 exit 1 並印出該查什麼。
③ 新增 isep-presence-beacon.sh(信標,不是閘)
SessionStart 報「ISEP v幾 已載入、幾支閘」。
它的全部意義是鑑別力:這行住在 plugin 裡,所以看得到就一定載入了,
看不到就是零閘。不像 git tag(在三支閘的白名單裡,閘死了照樣過)。
④ plugin.json 0.0.0 → 0.3.0
查清楚了:0.0.0 不是漂移,是誠實 —— ISEP 一個 tag 都沒有,從沒發過 release。
而這正是「雲端拿不到更新」的另一半:claude plugin update 比對版本號,
沒有 release 就永遠沒有新號碼可比。所以這一刀的收工是真的打 tag 發版。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-20 22:59:21 +08:00 |
|
Leo
|
92a4138f93
|
撤回 v0.2.0 與 v0.2.1:未達交件水準
leo 2026-08-20:「偷工減料的不能算,這不是交件被退回,是根本未達足以交件的水準。」
兩個 release 與 tag 已從 Gitea 刪除;plugin.json 回到哨兵值 0.0.0(尚未發過正式版)。
那兩版做的都是 ISEP 自己的鷹架,而當時 45 張管理票一張都沒關。
下一個版本的門檻:至少關掉一張既有的管理票,release note 寫明關了哪張。
|
2026-08-20 18:35:58 +08:00 |
|
Leo
|
1dfc4e373a
|
v0.2.1:43 支閘的白話盤點、測試手冊、補上兩個被抓到的洞
leo 2026-08-20 問「InkStoneCo#40 加入了嗎?如果是這樣我應該可以白話文看到 hooks 的內容?」
答案是不行——43 支閘沒有任何白話清單。這一版補上。
docs/hooks-inventory.md 43 支逐支一行,按「你會在什麼時候撞到它」分 9 組
抽驗 5 支逐行核對源碼;順帶抓到 3 支有檔案沒註冊
docs/TESTING.md A1-A8 + B1-B5,每格都有「怎麼跑/該看到什麼/什麼算失敗」
scripts/test-*.sh 兩支閘的測試,共 21 條,全過
兩個實撞的洞:
- release-tag-guard 的排除清單是前綴比對,x 整條放行
(A8 那個新 session 抓到的,總管複驗屬實)。改用 #23 驗證過的判準:
關鍵字要在指令位置才算執行。補 3 條複合指令測試,8/8。
⇒ 這是 InkStoneCo#36「包一層就繞過去」的同一個病,發生在同一天新寫的閘上。
- scripts/ticket 寫死只認名叫 gitea 的 remote,在 ISEP(remote 叫 origin)整個跑不起來
⇒「開票前先搜」那道閘在新 repo 等於不存在。改成掃所有指向本站的 remote + 環境變數 fallback。
A8 已通過:新 session 裡 plugin 的閘真的觸發(exit 2、tag 未建立、訊息來自 plugin 路徑)。
文件漂移訂正:plugin.json 與 README 寫 42 支/52 條,實際 43 支/53 條。
兩支新閘補上 #40 §1 要求的三行中文檔頭。
🔴 但仍違反 #40 §3「新規則一律先 warn」——兩支都是 block。理由記在 #40 留言,等 leo 裁。
|
2026-08-20 17:08:00 +08:00 |
|
Leo
|
500b95d80d
|
release: v0.2.0(版本號、author、描述與實際內容對齊)
plugin.json / marketplace.json 的 version 與 author 同步;描述改成實際清點的數字
(42 支閘 52 條註冊、7 command、2 skill、25 腳本、治理規範、標籤真相源)。
claude plugin validate 由「1 warning」變成完全通過。
milestone inkstone/ISEP v0.2.0 已 5/5 關閉;#5 因卡在只有 leo 能做的
Cloud environment 設定(#21),照 M4.3 降 scope 移出本版。
|
2026-08-20 14:12:34 +08:00 |
|
Leo
|
e4e3d69acf
|
fix(release): 版本只有 Gitea Releases 答得出來,不再靠 README 自報(inkstone/ISEP#6)
現況:README.md 宣稱「狀態 0.1.0」,但 repo release_counter=0、一個 tag
都沒打。leo 當場指出這是違規,命中規範自己的 E12(宣稱交付但沒有 tag);
leo 補充:「release 不是寫在 readme,要放在 release 裡」。
改法(結構性防漂移,不是靠人記得同步):
- README.md 不再自行宣告版本號,改成指向 Gitea Releases 頁面
- .claude-plugin/plugin.json 的 version 改回哨兵值 0.0.0
(=誠實承認目前沒有一個經過驗證、掛在 Releases 上的版本;
真正打 tag 那天才跟 tag 一起同步成那個號碼)
- 新增 scripts/check-version-consistency.sh:隨時可跑的一致性檢查
(plugin.json version 是否等於最新 tag/README 是否偷偷自報版本)
- 新增 hooks/release-tag-guard.sh:PreToolUse Bash 閘,在真正打 git tag
的那一刻擋下與 plugin.json 不一致的版本號,註冊進 hooks.json
紅線:本次不打 tag、不建 release——那是總管驗過整個 milestone 之後的動作,
這裡交的是機制與草稿。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
2026-08-20 13:10:00 +08:00 |
|
Leo
|
c2638668e3
|
ISEP 0.1.0:環境設定收成一個 plugin,本機與雲端共用一份
leo 2026-08-20:「同一個 plugin 你用,薄殼也用,保證兩邊同步」
「我要你幫雲端做薄殼,永遠都有問題,你要做的就是這組設定
你自己可以 dogfooding」
搬進來:41 支 hook(51 條註冊)/7 支 command/2 支 skill/23 支腳本。
不搬 .env、wiki、docs——那些是知識不是環境。
51 條 hook 路徑全部從 $CLAUDE_PROJECT_DIR/.claude/hooks/ 改成 ${CLAUDE_PLUGIN_ROOT}/hooks/,
零漏網。那正是薄殼一直壞掉的根:雲端 cwd 不是真身,寫死路徑就斷。
尚未驗證:Claude Code 能不能從私有 Gitea repo 裝 marketplace(要憑證)。
下一步就是在本機實際裝一次,通了才動雲端 bootstrap.sh。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-20 11:41:46 +08:00 |
|