雲端工人會分診、會組里程碑,組了就照里程碑做(inkstone/ISEP#159)
leo 09-18:「它看到票時要能夠組成 milestone 提出版本,所以不只是看票,還要組票。」 雲端只會撿(ISEP#130),沒有任何機制分診或組里程碑;open 302 張裡 74 張沒 s/*、257 張沒掛里程碑。 - ticket triage:沒 s/* 的票 → s/backlog/s/triage/s/pending+票上一則說明(--why 必填),一個動作; --dup-of:說明+close/duplicate+關+在留下的那張留一則指回來(留下的那張若是 leo 的就不寫) - ticket compose:把已分診的票組成 InkStoneCo 里程碑(開工規約 1–7 條):既有載體+前置相依、 s/backlog → s/todo、名字不准是版本號、期限 1–60 天、不開新票;先全部讀過才寫,理由一次列齊 - 不碰:Human/human/*、指派給別人(含 Leo)——判準是標籤與 assignee 登入名 - pick --pool:還沒到期的 InkStoneCo 里程碑的前置排在散票之前;可做的都抓盡時回待分診的票, 每列帶 next;queue-drain-guard 照 next 印(待分診是 triage,不是 claim) - 全局票池只有一個讀法 pool_issues(),接口留給 ISEP#154(global_index 寫卡驗完後只換這一個函式) - InkStoneCo 掛在 open 里程碑的票=載體(容器):不進票池、不算待分診 假設(寫在這裡等總管 review): - 分診只收「沒有 s/*」的票;s/triage 仍是總管/leo 的判斷,工人只能把拿不準的丟進 s/triage - 載體撈不到時,工人用 ticket where+ticket new 補一張 InkStoneCo User Story 當載體(開工規約第 2 條的「真缺口」) - 期限上限 60 天(9999 與過去日期都擋) 實測:test-ticket-triage 80/80、test-ticket-pick 84/84、queue-drain-guard 28/28; 真 Gitea 代跑一趟:分診 4 張、建 InkStoneCo milestone 68(載體 InkStoneCo#136,前置 ISEP#47、arcrun-rag#199), pick --pool 第一組即為它的前置;一次違規三格的 compose 真的零寫入擋下。 待總管定版。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -65,7 +65,8 @@ POOL = {
|
||||
I("mira", 23, ["s/backlog", "Human"], None), # Human:不抓
|
||||
I("mira", 24, ["s/review"], None), # 等總管:不抓
|
||||
I("mira", 25, ["s/backlog", "p/high"], None, created="2026-09-05T00:00:00Z"), # ★ 票池裡最優先
|
||||
I("mira", 26, ["s/todo", "hub"], None)], # hub:容器不是任務
|
||||
I("mira", 26, ["s/todo", "hub"], None), # hub:容器不是任務
|
||||
I("mira", 27, ["Human"], None)], # 沒 s/* 但掛 Human:不抓、也不分診(ISEP#159)
|
||||
# 分頁:伺服器每頁上限 30(比 pick 要的 50 小)——只看「不滿一頁」就停的寫法會漏掉第 31 張之後的
|
||||
"big": [I("big", n, [], None) for n in range(1, 31)] + [I("big", 31, ["s/backlog"], None)],
|
||||
}
|
||||
@@ -281,9 +282,19 @@ p "★ 環境 ISEP_DRAIN=1(雲端工人的環境)= 帶 --pool,指令不
|
||||
unset ISEP_DRAIN
|
||||
unset DROP
|
||||
export DROP='["Arcrun#6","ISEP#1","Arcrun#7","mira#25","Arcrun#8","ISEP#13","ISEP#5","ISEP#4","big#31"]'
|
||||
p "★ 票池也抓盡 → 離開碼 1" "1" "rc" "$POOLA"
|
||||
p "★ 可抓 0 張時列出池子大小與「不能抓的理由」各幾張(沒 s/* 的 31 張被點名),而且不說成「正常/不是故障」" "True" \
|
||||
"'open 票池' in out and '31 張' in out and '沒有 s/*' in out and '不是故障' not in out and '正常' not in out" "$POOLA"
|
||||
p "★ 票池抓盡、但還有沒 s/* 的票 → 回一張待分診的(同一天開的,票號序第一的 big#1),下一步是 triage 不是 claim(ISEP#159)" "True" \
|
||||
"rc is None and 'inkstone/big#1' in out and ' triage inkstone/big#1 ' in out and 'claim inkstone/big#1' not in out" "$POOLA"
|
||||
p "--json:待分診那一列帶 group=待分診 與貼了就能跑的 next(佇列閘照它印)" "True" \
|
||||
"(lambda r: r['group']=='待分診' and ' triage ' in r['next'])(json.loads(out))" \
|
||||
"[\"cmd_pick\",\"--mainline\",\"$MAIN\",\"--pool\",\"--json\"]"
|
||||
p "待分診那一層不回掛 Human 的 mira#27(沒 s/* 也不碰)" "False" "'mira#27' in out" "$POOLALL"
|
||||
p "pick --claim 遇到待分診的票 → 不認領(沒有任何寫入)" "True" \
|
||||
"not any(mm in ('PATCH','PUT','POST') for mm,_,_ in rec)" \
|
||||
"[\"cmd_pick\",\"--mainline\",\"$MAIN\",\"--pool\",\"--claim\"]"
|
||||
export DROP='["Arcrun#6","ISEP#1","Arcrun#7","mira#25","Arcrun#8","ISEP#13","ISEP#5","ISEP#4","big#31","mira#21"'"$(python3 -c 'print("".join(",\"big#%d\"" % n for n in range(1,31)))')"']'
|
||||
p "★ 票池與待分診都抓盡 → 離開碼 1" "1" "rc" "$POOLA"
|
||||
p "★ 可抓 0 張時列出池子大小與「不能抓的理由」各幾張(沒 s/* 又掛 Human 的被點名),而且不說成「正常/不是故障」" "True" \
|
||||
"'open 票池' in out and '沒有 s/*' in out and '不是故障' not in out and '正常' not in out" "$POOLA"
|
||||
p "--json 抓盡時同一張理由表寫到 stderr(stdout 仍是 null,佇列閘照舊解析得動)" "True" \
|
||||
"out.startswith('null') and '不能抓' not in out.split(chr(10))[0] and '沒有 s/*' in out" \
|
||||
"[\"cmd_pick\",\"--mainline\",\"$MAIN\",\"--pool\",\"--json\"]"
|
||||
|
||||
Reference in New Issue
Block a user