出貨鏈三站上 main:release-ship 前置①改看 tag 的樹、release-check 可指定版本、信標開場報「打了 tag 沒 release」(inkstone/ISEP#67)
- hooks/lib/release_chain.py:問 Gitea 的判準一份三處用(匿名讀,D20) - scripts/release-ship:前置①比「要建的那個 tag 的樹」裡的 plugin.json,不比工作樹/最新 tag (總管 09-07 在 v0.23.0 被擋的情境現在放行);note 從 Gitea compare 生,從 plugin 快取跑也行; 覆核改跑 release-check <那個 tag> - scripts/release-check [vX.Y.Z]:指定版本;v0.19/0.20/0.21 依裁決標「不補」不再黃字;補法印正本絕對路徑 - hooks/lib/beacon_report.py ④:最新 tag 沒 release/main 定版沒打 tag ⇒ 一行缺站+補法;都在安靜; 只快取「都在」6 小時 - 測試:test-release-ship 14、test-release-check 14、信標 26→33;docs:TESTING A37/A38、盤點表、README 60 支腳本、 白名單加 release-ship/release-check 形狀、mistakes 一條 - 沒改 plugin.json 版本號(待總管定版) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0178ef1fGw3XeZtpN7LaZrm4
This commit is contained in:
+56
-2
@@ -330,12 +330,13 @@ bash hooks/tests/unpushed-police.test.sh
|
||||
- B 群(⑦—⑩,該報)任一紅 ⇒ 為了不吵而改成放行了,那是把閘關掉不是修好
|
||||
- 特別看 ④:問不到遠端(離線)**不准當成「你沒推」**
|
||||
|
||||
### A18 — 信標會講出雲端會壞掉的那幾件事:26 條
|
||||
### A18 — 信標會講出雲端會壞掉的那幾件事:33 條
|
||||
```
|
||||
bash hooks/tests/isep-presence-beacon.test.sh
|
||||
```
|
||||
**該看到**:`通過 26 條,失敗 0 條`。全離線。
|
||||
**該看到**:`通過 33 條,失敗 0 條`。全離線。
|
||||
|
||||
> 📌 `inkstone/ISEP#67`(2026-09-07)從 26 條加到 33 條:信標 ④ 開場報「打了 tag 卻沒 release」,見 A38。
|
||||
> 📌 `inkstone/ISEP#122` 從 14 條加到 26 條:信標原本只掃 `scripts/`,
|
||||
> 而**真正會自動載入的東西**(skill/command/agent)同樣兩邊各有一份。
|
||||
> 實查:那 9 個檔案在 `0.1.0`(c263866)複製過來之後**一次都沒再同步**,
|
||||
@@ -859,6 +860,57 @@ Arcrun 的 `stage-deploy-artifacts.py` 自己已寫死只認 youlin 帳號 ID、
|
||||
`CF_SECRETS_API_TOKEN` 的真值是主線 B-3(Arcrun#86)的東西,由總管用 `stage secret put` 種,本票不編一個假的塞進去。
|
||||
⚠️ 「分類器真的不擋」與 A33 同款:要下一版裝進雲端之後,看一趟 run 的 `permission_denials`。
|
||||
|
||||
### A37 — 打了 tag 之後那一站:把 tag 建成 leo 看得到的 release:14 條
|
||||
```
|
||||
bash scripts/test-release-ship.sh
|
||||
```
|
||||
**該看到**:`共 14 項:✅ 14 / ❌ 0`。全程離線(`RELEASE_SHIP_FIXTURE`+`RELEASE_SHIP_SINK`),
|
||||
**不打 Gitea、不建任何真 release**。fixture 的形狀見 `hooks/lib/release_chain.py`。
|
||||
|
||||
**它在守什麼**(`inkstone/ISEP#67`):ISEP 全樹沒有任何東西會建 release,於是 tag 推了、
|
||||
Releases 頁停在舊版——08-27(v0.4.0/v0.5.0)、09-02(v0.22.0)、09-07(v0.23.0/v0.24.0)
|
||||
同一站斷了三輪;09-07 那次交棒給 leo 的「測試位置」打開是一頁空 tag。
|
||||
三個前置**必須在場**才放行:① **那個 tag 的樹**裡 `plugin.json` = tag 號碼(問 Gitea `contents?ref=<tag>`,
|
||||
**不是工作樹**)② tag 真的在 Gitea ③ note 有內容(沒給就從 Gitea compare 生事實清單)。
|
||||
建完回頭跑 `release-check <那個 tag>` 拿收貨端覆核——送的人說成功不算數。
|
||||
|
||||
**失敗**:
|
||||
- A1 紅 ⇒ tag 的樹自己講錯版本也建得了,leo 裝到的會各說各話
|
||||
- B4 那三條任一紅 ⇒ **前置①又回去比「最新的 tag」或工作樹了**——總管 09-07 在 v0.23.0 的 checkout
|
||||
跑 `release-ship v0.23.0` 就是這樣被擋的(訊息說最新是 v0.24.0),這一組工作樹故意擺 `9.9.9`
|
||||
- B2 第二條紅 ⇒ 已存在的 release 被說成「已建立」(09-05 comment 6207 那句假綠,scout 6213 抓到的)
|
||||
- B3 第二條紅 ⇒ `--dry-run` 真的寫了東西
|
||||
|
||||
**真實跑(2026-09-07,isep-hand,全部唯讀)**:工作樹在本分支(plugin.json 0.24.0)跑
|
||||
`release-ship v0.23.0 --dry-run` → 前置②✅、前置①「tag v0.23.0 的樹裡 plugin.json = 0.23.0」✅、
|
||||
「本來就在了——不重複建、不動它」、覆核 `v0.23.0 ✅✅✅ ←`、exit 0(09-05 那版在同一情境是 exit 2);
|
||||
`release-ship v0.3.4 --dry-run`(現存唯一沒 release 的 tag)走到「要建」那條路:note 從 Gitea compare 生 8 行、不 POST、exit 0。
|
||||
|
||||
### A38 — 回頭問收貨端「到了嗎」,而且開場就會問:14 條+信標 7 條
|
||||
```
|
||||
bash scripts/test-release-check.sh
|
||||
bash hooks/tests/isep-presence-beacon.test.sh # ㉗–㉝ 那七條
|
||||
```
|
||||
**該看到**:`共 14 項:✅ 14 / ❌ 0`;信標 `通過 33 條,失敗 0 條`。全離線。
|
||||
|
||||
**它在守什麼**(`inkstone/ISEP#67` → comment 6574,總管 09-07 裁定②):「打了 tag 卻沒 release」
|
||||
要在**下一個 session 開場**就被報出來(一行:缺哪一站+怎麼補),不靠人記得;兩者都在時安靜。
|
||||
`release-check` 逐版問 Gitea(匿名,D20),現行版本缺站 ⇒ exit 2 +指名缺哪一站+補法(正本絕對路徑);
|
||||
更舊版本缺件只黃字;**v0.19/0.20/0.21 已裁定不補**(同一則 comment 裁定①),表上標出處、不再黃字。
|
||||
信標 ④ 用同一份判準(`hooks/lib/release_chain.py`):最新 tag 沒 release ⇒ 報;main 定版比最新 tag 新 ⇒ 報缺 tag;
|
||||
只快取「都在」6 小時,缺件不快取——補完的下一個 session 就該安靜。
|
||||
|
||||
**失敗**:
|
||||
- A1/A2 紅 ⇒ 驗收 4 沒過:故意漏一站,管線說不出缺哪一站
|
||||
- A3 紅 ⇒ `release-check <版本>` 沒看你指定的那一版(release-ship 送完覆核會覆核到錯的版本)
|
||||
- B2 紅 ⇒ **誤攔**:現行版本好好的,舊版缺件卻擋下來(懲罰謹慎)
|
||||
- B4 紅 ⇒ 裁定過不補的三版又天天黃字(會被學會忽略);或裁決把事實也改掉了(指定它來問應該照擋)
|
||||
- 信標 ㉗ 紅 ⇒ 開場報不出來,斷點又回到靠人記得;㉙ 紅 ⇒ **誤攔**:都在還念;
|
||||
㉚ 紅 ⇒ 問不到收貨端時亂猜;㉜ 紅 ⇒ 印了一條在這一份裡不存在的路徑當出路;㉝ 紅 ⇒ 補完還要念 6 小時
|
||||
|
||||
**真實跑(2026-09-07)**:信標不帶 fixture 打真 Gitea(匿名)→ 安靜(v0.24.0 tag+release 都在),
|
||||
留下 `.isep-chain-ok-v0.24.0` 快取;`release-check` 在本分支 → `v0.24.0 ✅✅✅ ←`、三個裁定不補的版本標 ⏭、exit 0。
|
||||
|
||||
### A5 — 開票前的搜尋是跨 repo 的
|
||||
```
|
||||
python3 scripts/ticket where 標籤 模組化
|
||||
@@ -1142,6 +1194,8 @@ B2(信標那行)/B3(setup 輸出)/B4(閘的訊息)三個畫面
|
||||
| **A34 收件 repo 寫 owner/repo 不 404** | isep-hand | ✅ 7/7(2026-09-07,inkstone/ISEP#130) |
|
||||
| **A35 Bot API 直送** | isep-hand | ✅ 10/10(2026-09-07);**真的到 leo 手機**要 Cloud environment 先有 `TELEGRAM_BOT_TOKEN`/`TELEGRAM_CHAT_ID`(leo) |
|
||||
| **A36 雲端對 stage 的寫入有正門、只寫得進 stage** | isep-hand | ✅ 45/45(2026-09-07,inkstone/ISEP#137)+真實種進 youlin 一把探針再刪掉、真打 stage GET 200/無 Bearer POST 401;「帶 Bearer 真寫 KBDB」缺 `KBDB_INTERNAL_TOKEN` 沒跑 |
|
||||
| **A37 tag → release 那一站** | isep-hand | ✅ 14/14(2026-09-07,inkstone/ISEP#67→6574)+真 Gitea 唯讀 dry-run 兩次(v0.23.0 總管被擋的情境、v0.3.4 走到建那條路) |
|
||||
| **A38 回頭問收貨端+開場會問** | isep-hand | ✅ 14/14+信標 33/33(2026-09-07,inkstone/ISEP#67→6574)+信標真 Gitea 匿名實跑一次安靜 |
|
||||
| A7 plugin 裝得起來 | 總管 | ✅ |
|
||||
| **A8 新 session 閘會觸發** | 總管 | 見本版 release note |
|
||||
| **B1–B5 雲端** | **leo** | 還沒跑(機器碰不到 Cloud environment) |
|
||||
|
||||
Reference in New Issue
Block a user