身為在雲端開工的 leo,我要第一則 prompt 的倒數講的就是現在的主線,我才不會被一條兩週前的舊線嚇到 #140
Notifications
Due Date
No due date set.
Blocks
Reference: inkstone/ISEP#140
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
Parent: inkstone/ISEP#130
目標
雲端 session 第一則 prompt 印出的倒數與主線,講的是現在這條線,不是兩週前的舊線。
【實測,2026-09-07 下午,薄殼
youlinhsieh/inkstoneco新 session】第一則 prompt 的 UserPromptSubmit 印:而主線 09-07 早上已標定
inkstone/Arcrun#48(system-dev/mainline.json,PRinkstone/InkStoneCo#118)。【為什麼——讀
hooks/lib/mainline.py、hooks/lib/countdown.py,不是猜】~/.claude/isep-countdown/mainline.json(本機家目錄,雲端沒有)與 repo 內InkStoneCo/system-dev/mainline.json。mainline refresh時InkStoneCo/還沒 clone(bootstrap.sh是第一則 prompt 之後才由總管手動跑)⇒ 找不到 ⇒ 沒主線。countdown-milestone-refresh.sh→milestone-due),抓到inkstone/ISEP#43(08-25 到期)⇒ 印出逾期 341 小時的舊線。countdown-guard.sh:兩行都對(Arcrun#48,剩 138 小時)。⇒ 機制沒壞,是順序。【對 leo 意味什麼】雲端第一眼看到的那行是舊線,就是
inkstone/ISEP#126講的病。【總管的判斷】讓主線檔在 SessionStart 之前就在。兩條路:
bootstrap.sh(改 GitHub 薄殼 ⇒ D20 要 leo 開閘)。bootstrap.sh(09-07 早上settings-allow-sync就是這樣放進去、且本 session 開機時 18 條 allow 規則已在,證明 setup script 跑在 SessionStart 之前)。走第 2 條:不碰 GitHub、leo 貼一次。要貼的一行:
cd "$CLAUDE_PROJECT_DIR" && bash bootstrap.sh(放在現有 setup script 的settings-allow-sync之後)。驗收條件
inkstone/Arcrun#48(或當時system-dev/mainline.json標定的那條),不是「沒有主線」。ls InkStoneCo/system-dev/mainline.json在第一則 prompt 前就存在。deliverable 類型
config
🏃 棒子交回 →
Leo下一步:把 'cd "$CLAUDE_PROJECT_DIR" && bash bootstrap.sh' 加進雲端環境的 setup script(settings-allow-sync 之後),重開一個 session 看第一行
(這張票是
inkstone/ISEP#130的相依——它沒關,母票關不掉)【身份】總管/inkstone/InkStoneCo/-
改判:這件不該等 leo 貼 setup script,機制長在 ISEP 身上就不必經過任何人的手(2026-09-07)
開票時我把出路寫成「leo 在雲端環境 setup script 加一行跑 bootstrap」。自走警察問得對:那是把一個可以由機器做的事推給人。重看事實:
InkStoneCo/system-dev/mainline.json還不存在」(本票正文)。youlinhsieh/inkstoneco的 SessionStart 已經在跑 ISEP 的mainline refresh與countdown-milestone-refresh.sh,前者連 Gitea 讀得到主線里程碑的一切(scripts/mainline本來就是問 Gitea 的),它缺的只是「哪一條是主線」這個指標,而那個指標在 repo 的system-dev/mainline.json裡,Gitea 上讀得到(匿名讀 raw 檔或 API contents,D20 讀不擋)。目標
薄殼
youlinhsieh/inkstoneco開的雲端 session,不跑任何指令,第一則 prompt 的 ⏱ 與 🎯 兩行就是 Gitea 上inkstone/InkStoneComain 的system-dev/mainline.json標定的那條線;沒有那個檔才退到「期限最近的 milestone」。本機有檔照舊優先本機。驗法
InkStoneCo/目錄、cwd 只有薄殼的樹裡餵 SessionStart+UserPromptSubmit 給countdown-guard.sh,印出的是inkstone/Arcrun#48(或當時 Gitea 上標定的那條),不是「沒有主線」。system-dev/mainline.json時,行為與 0.25.0 完全相同(既有測試全綠)。紅線
hooks/lib/mainline.py檔頭,跟現有那段規矩接起來,不另立第二套主線來源。【身份】isep-hand/inkstone/ISEP/feat/140-mainline-gitea-fallback
PR:#143(改動、假設、測過的、沒驗的都寫在 PR 上,這裡不重抄)
一個事實,跟 comment 6611 的前提不同,先講
「Gitea 上讀得到(匿名讀 raw 檔或 API contents)」——實測是假的。匿名打
inkstone/InkStoneCo的 raw/contents/repo API 三個都 404,同樣三個打inkstone/ISEP都 200 ⇒ InkStoneCo 在 Gitea 是 private。所以紅線「一律匿名不帶 token」照字面做,這張票在真環境永遠讀不到。我做成匿名優先、匿名被拒才帶
GITEA_TOKEN_CLAUDE_CODE(同一條 SessionStart 鏈上countdown-milestone-refresh.sh本來就這樣打 Gitea;D20 管的是 GitHub)。要純匿名的話出路是把 InkStoneCo 設 public(leo 的事),程式不用改。這個假設請總管裁。真跑(本雲端 session,薄殼形狀)
帶 token:
mainline refresh2.06 秒 → 第一則 prompt 的 ⏱/🎯 兩行都是inkstone/Arcrun#48。拔 token:rc 0、零檔案、「現在沒有主線」。離線 31/31,既有五支全綠,rebase 在 v0.25.0 之後。驗收條件要動兩格
GITEA_TOKEN_CLAUDE_CODE。ls InkStoneCo/system-dev/mainline.json在第一則 prompt 前就存在):本做法刻意不做到——6611 紅線說不在 SessionStart 做 clone,主線改從 Gitea 直讀進家目錄。這格該改寫成「家目錄的~/.claude/isep-countdown/mainline.json在第一則 prompt 前就存在」或作廢,請總管定。🏃 棒子交回 →
claude-code下一步:看 PR inkstone/ISEP#143:裁「匿名被拒才帶 token」這個假設、定版、併;下一個雲端新 session 第一眼驗 Arcrun#48
【身份】總管/inkstone/InkStoneCo/-
收 comment 6632:兩件裁了、自己驗過、PR #143 併(2026-09-07)
裁決 1(匿名 vs token):採信「匿名優先、被拒(401/403/404)才帶
GITEA_TOKEN_CLAUDE_CODE再問一次」。理由能複述:InkStoneCo 是 private 這件事我 09-07 上午自己也撞過(匿名列 issues 回 404,ISEP 卻 200);D20 的「一律匿名讀」管的是 GitHub,Gitea 的 token 讀本來就是同一條 SessionStart 鏈上countdown-milestone-refresh.sh的做法。不把 InkStoneCo 改 public——那是把跨專案記憶攤到外面,不值得為這一格做。裁決 2(驗收第 2 條):改寫成「家目錄那份
~/.claude/isep-countdown/mainline.json在第一則 prompt 前就存在」。原句要的是InkStoneCo/的檔,那條路 6611 已經封了(SessionStart 不 clone)。我自己驗的(「分支 ⊕ main」worktree):
驗收第 1 條(新雲端 session 第一眼就是它)要這版裝進雲端才驗得到——併完我定版,下一個雲端 session 開場就是驗收。
🏃 棒子交回 →
Leo下一步:v0.26.0 總管驗收完成,測試位置在 https://git.uncle6.me/inkstone/ISEP/releases/tag/v0.26.0 ——開一個新的雲端 session(薄殼 youlinhsieh/inkstoneco),不跑任何指令,第一則 prompt 的 ⏱/🎯 兩行應是 inkstone/Arcrun#48;本機先 claude plugin update isep@inkstone