雲端工人抓票規則做成 ticket pick/claim,規則本體是一支純函式(inkstone/ISEP#131)
- scripts/ticket 多兩個動詞:pick(給定主線檔回一張可抓的票,主線抓盡才抓逾期里程碑,
不抓 backlog/沒里程碑)與 claim(指派+s/doing+【身份】留言,一個動作;規則在寫入前再驗一次)
- 規則全是 Gitea 欄位:s/* 恰好是 {s/todo}+沒 assignee+沒 Human/human/*+不是 hub+里程碑=主線
· 「恰好」而非「有 s/todo」:09-07 實查 mira#6 同時掛 s/doing+s/todo
· hub 排除:09-07 實查 ISEP#31–35 五張 hub 掛在逾期里程碑、s/todo、沒人,但容器不是任務
- 離開碼分三種:0 有票/1 真的沒有/2 讀不到或沒主線(讀不到 ≠ 沒有)
- scripts/test-ticket-pick.sh 48 條全離線;README/plugin.json 腳本數 49→50 在本樹實數
- 版本號待總管定版(scripts/ticket 會被 plugin 載入)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DTZ9QtvjY7MNxjfQbexAm7
This commit is contained in:
@@ -419,6 +419,47 @@ bash hooks/tests/gitea-arm-check.test.sh .
|
||||
- ①③⑤⑥ 任一紅 ⇒ 收手收得太晚,暫存區已經開始長東西(磁碟風險回來了)
|
||||
- ② 紅 ⇒ 訊息沒給出走得通的那一行(本票整張票在講的就是這件事)
|
||||
- ⑧⑨⑩ 任一紅 ⇒ **誤攔/複製錯**:正常用法被弄壞,或複本裡混進了 `hooks/` 以外的東西
|
||||
### A31 — 雲端工人抓票的規則是機械可判的:48 條
|
||||
```
|
||||
bash scripts/test-ticket-pick.sh
|
||||
```
|
||||
**該看到**:`通過 48 條,失敗 0 條`。**全程離線**:假池子(3 個 repo、3 個 open milestone、
|
||||
11 張票)餵給換掉的 `api()`,時鐘走 `ISEP_COUNTDOWN_NOW`,`TICKET_HOST` 指到連不上的位址
|
||||
——任何一條真的走到網路會當場炸,不會靜靜變成假綠。**不開票、不改票、不留任何東西在 Gitea 上。**
|
||||
|
||||
**它在守什麼**(`inkstone/ISEP#131`):Routine 08-06 起讀 `journeys.md` 本 sprint 段,
|
||||
08-19 到期沒續,**連續兩週讀到殘骸只能空轉**。09-07 把 `cloud-worker.md` 步驟 1 改成從
|
||||
Gitea 主線里程碑抓票(`inkstone/InkStoneCo#118`),但那是一段給人讀的字。
|
||||
這一支把規則做成 `scripts/ticket pick`/`claim` 兩個動詞,規則本體在 `pickable()` 一支純函式:
|
||||
|
||||
```
|
||||
可抓 s/* 恰好是 {s/todo} + 沒有 assignee + 沒有 Human/human/* + 不是 hub + 里程碑=主線
|
||||
主線抓盡才抓「逾期的 open 里程碑」;backlog/沒里程碑一律不抓
|
||||
認領 claim = 指派 + s/doing + 第一行【身份】的留言,一個動作
|
||||
完成 handback --label s/review(本來就有的那半,不重做)
|
||||
```
|
||||
|
||||
**失敗**:
|
||||
- ①「★」那四條任一紅 ⇒ 票上驗收第 1 條破了:Human/有 assignee/backlog 有一種會被抓走
|
||||
- ①「s/todo+s/doing 同時掛著」紅 ⇒ 會把別人正在做的票抓走(09-07 實查 `inkstone/mira#6`
|
||||
就是這個形狀——exclusive 只擋 UI 不擋 API)
|
||||
- ②「主線抓盡 → 才輪到逾期」那兩條紅 ⇒ 順序壞了:要嘛主線還有票就去抓逾期的,
|
||||
要嘛抓盡了還回 `Arcrun#8`(既不是主線也沒逾期)
|
||||
- ②「離開碼 1」紅 ⇒ 「真的沒有票」與「讀不到」被講成同一句——後者要離開碼 2
|
||||
- ②「沒有主線 → 離開碼 2 且一通 API 都沒打」紅 ⇒ 沒主線時去抓了別的
|
||||
- ③「該擋」六條任一紅 ⇒ 規則只長在 `pick` 這端,手動 `claim` 一張 Human 的票照樣過
|
||||
- ③「身份名不在名單上 → 一通都沒打」紅 ⇒ 名單以外的名字碰到了 Gitea
|
||||
- ④ 第一條紅 ⇒ 連不上 Gitea 時回了離開碼 1,雲端會把「斷線」當「沒票」收工
|
||||
|
||||
📌 **真實 Gitea 唯讀實跑**(2026-09-07,isep-hand,不改任何票):
|
||||
`ticket pick --mainline InkStoneCo/system-dev/mainline.json --all` 在主線
|
||||
「AI 問一次就看得到全部」回 `ISEP#130`、`ISEP#131` 兩張(`Arcrun#175/176` 已有 assignee、
|
||||
`Arcrun#86` 是 s/doing、`mira#6` s/todo+s/doing 都沒被抓);逾期里程碑組把 `ISEP#31–35`
|
||||
五張 `hub` 排除後剩 `Arcrun#83`、`mira#5`、`arcrun-rag#14/27/37`。
|
||||
**寫入那半**用 `claim inkstone/ISEP#131 --name isep-hand` 真的認領過一次:
|
||||
assignee=`claude-code`、標籤 `s/todo → s/doing`、留言 6325 第一行【身份】——
|
||||
之後再 `pick` 就不再回 #131(票上驗收第 2 條的 log 在票的留言裡)。
|
||||
|
||||
### A19 — 下游做完時頂層跟著關:49 條
|
||||
```
|
||||
bash scripts/test-ticket-handoff-writeback.sh
|
||||
@@ -953,6 +994,7 @@ B2(信標那行)/B3(setup 輸出)/B4(閘的訊息)三個畫面
|
||||
| **A17 未推警察不誤攔雲端分支** | 總管 | ✅ 10/10(2026-08-28,inkstone/ISEP#90) |
|
||||
| **A18 信標會報雲端接線缺陷** | 總管 | ✅ 14/14(2026-08-28,inkstone/ISEP#90) |
|
||||
| **A19 下游做完頂層跟著關** | 總管 | ✅ 49/49(2026-08-28,inkstone/ISEP#92) |
|
||||
| **A31 雲端工人抓票規則機械可判** | isep-hand | ✅ 48/48(2026-09-07,inkstone/ISEP#131)+真實 Gitea 唯讀實跑+一次真認領 |
|
||||
| **A20 舊票有固定管道被撈** | 總管 | ✅ 47/47(2026-08-28,inkstone/ISEP#83)+真實 229 張唯讀實跑 |
|
||||
| A7 plugin 裝得起來 | 總管 | ✅ |
|
||||
| **A8 新 session 閘會觸發** | 總管 | 見本版 release note |
|
||||
|
||||
Reference in New Issue
Block a user