下游做完時頂層跟著關(inkstone/ISEP#92) #98
Reference in New Issue
Block a user
Delete Branch "feat/handoff-writeback-loose"
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?
關
inkstone/ISEP#92。這個 PR 解什麼
票上的病一句話:「開在頂層的票,下游做完了卻沒人回來關⋯⋯頂層票會永遠掛著,而 leo 是看頂層的。」
票自己已經盤出「不要重造」的三樣(
ticket where戳記+側門閘、comment-carries-task-guard、Gitea 原生 issue dependency),這一版全部長在它們上面,一樣都沒有重做。缺的只有三格:journey 標籤、雙向連結的強制、完工回寫。
四格,對上票裡的四條驗收條件
subtask(新別名handoff)一個動作同時掛 Gitea 原生相依 + 在頂層票的時間軸貼一則指回下游的留言cmd_subtaskticket close關完子票立刻問/blocks(誰在等我),對每張還開著的頂層票貼回寫留言;下游全關的那張再指派回總管+改s/review_writebackticket loosecmd_loose另外票裡的第三格 journey:
--journey <名>把j/<名>同時貼在母子兩端(只貼一端就聚不起來)。三個刻意的設計判斷
① 不自動關母票。 回寫只做到「指派回總管+
s/review」。關票要有交付物、要有人看過(
ticket close既有的閘)——默默關掉跟默默留著是同一個病的兩面。票上要的是「不能默默留著」,不是「自動消失」。
②
loose是close回寫的補網,不是重複。關票的側門(直接
PATCH state=closed)是ticket-api-bypass-guard.sh刻意放行的(「帶了 ID 的子路徑」一律放行)。⇒ 走正門的由回寫即時處理,走側門漏掉的由這張網撈回來。
不是輪詢(守
CLAUDE.md的 flag 紅線)——掛在開場/收工對帳跑一次。③ 判準全部是機械事實,沒有一格在猜文字。
is_loose看的是相依邊在不在、state是什麼;journey 走的是「要求那個標籤在labels.yaml裡」,不是「猜哪些名字合法」。leo 2026-08-17 已證偽關鍵字黑名單那條路(8 次誤攔、0 次正確攔截)。
驗收條件 ④:拿現有的頂層票實跑(2026-08-28,唯讀,沒動任何一張票)
兩張的性質不一樣,這正好證明這張表有鑑別力:
arcrun-rag#136已經是s/review+ 指派給claude-code⇒ 正在被處理(這就是回寫會把票放到的那個狀態)Arcrun#100沒標籤、沒指派 ⇒ 就是票上講的那種「永遠掛著、沒人回來關」測試
全程離線:
TICKET_HOST指到連不上的位址;會打 API 的兩段(_writeback/cmd_subtask)把
api()換成錄音機跑,驗它到底打了哪些端點、送了什麼——不打真實 Gitea、不開票、不關票、不留測試票。八組,特別點名幾條:
ticket loose會列出每一張普通票,那張表就變成雜訊False——回寫不准滑成「自動關掉」/blocks的回應形狀不是我猜的,是 2026-08-28 實查inkstone/ISEP#75拿到的。回歸(都在這支改動的射程內,全綠):
test-ticket-where-seen-guard.sh17/17test-ticket-api-bypass-guard.sh24/24hooks/tests/reply-identity.test.sh11/11🔴 沒驗到的那一格(要說在前面)
labels.yaml的j/段刻意留空:旅程怎麼切、叫什麼名字是方向題(四題公式第 4 題),不該由工具或 subagent 代決;隨手造名字會讓同一條旅程長出三個拼法。
⇒ 在有人往那裡加第一條旅程之前,
--journey只會擋、不會貼。機制驗過了(⑧ 五條),資料還沒有。 第一條旅程名加進
labels.yaml→gitea-labels-sync.sh就能用。版本號
待總管定版——今天多條線並行,版本號由總管統一收斂。這個 PR 沒有動
plugin.json。順帶回報兩件不屬於本 PR 的事
README.md的盤點數字已經對不上(我沒有改它,避免跟今天其他線撞):實數
hooks/*.sh52 支、hooks.json註冊 67 條、commands/7、skills/2、scripts/頂層 35 個檔(含本 PR 新增的 1 支);README 寫的是 48/59/7/2/23。github-contact-guard.sh在 subagent 的環境會誤攔 Gitea 的 push:它用 tool input 的
cwd去解 remote 名稱,而 agent thread 的 cwd 每次都被重設回 session 根目錄(那個 repo 的
origin指向 GitHub)⇒ 在別的 clone 裡cd … && git push -u origin <branch>會被判成推 GitHub。我沒有碰
.github-armed(那是 leo 的保險);改用一個名字誠實的gitearemote 推,閘就正確放行了。要不要開票由總管決定。
🤖 Generated with Claude Code