雲端第一則 prompt 的主線是現在這條:兩份主線檔都不在時 refresh 去 Gitea 讀 InkStoneCo main 那份一次(inkstone/ISEP#140)
薄殼 SessionStart 跑在 bootstrap.sh 之前,InkStoneCo/ 還沒 clone、家目錄空 ⇒ 兩份都不在 ⇒ countdown.py 退到「期限最近的 milestone」⇒ 第一則 prompt 印逾期 341 小時的舊線。機制沒壞,是順序。 - hooks/lib/mainline.py:第三個來源 fetch_gitea()(本檔唯一會打網路的函式,只有 SessionStart 的 `mainline refresh` 叫它;load()/line() 照舊零網路)。優先序寫進檔頭:家目錄 > repo 那份 > Gitea 那份。 匿名優先,匿名被拒(401/403/404)且拿得到 token 才帶 token 再問一次;讀不到回 None,逾時有上限。 - scripts/mainline refresh:兩份都不在 ⇒ fetch_gitea 一次、只寫家目錄(不 mirror);token 拿不到不炸、不抱怨。 - hooks/tests/mainline-gitea-fallback.test.sh:31 條,假 Gitea 有 public/private/500/garbage/notitle/hang 六種回法。 假設(票上紅線寫「一律匿名不帶 token」,其前提「Gitea 匿名讀得到」實測為假): inkstone/InkStoneCo 在 Gitea 是 private——匿名打 raw/contents/repo API 都 404,ISEP 同端點 200。 ⇒ 照字面做這張票在真環境永遠讀不到。改成匿名優先、被拒才帶 token(同一條 SessionStart 鏈上 countdown-milestone-refresh.sh 本來就帶 GITEA_TOKEN_CLAUDE_CODE 打 Gitea;D20 管的是 GitHub)。 真跑:帶 token 2.06s 讀到 inkstone/Arcrun#48;拔 token rc 0、零檔案、「現在沒有主線」。 版本:待總管定版。 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0178ef1fGw3XeZtpN7LaZrm4
This commit is contained in:
@@ -352,3 +352,24 @@ leo 當場:「**這些為什麼不寫到票裡?**」
|
||||
📌 判準:**送出去之前,先問「我判的是不是我要送的那個東西」**。
|
||||
工作樹、最新 tag、main——都不是;tag 指到的那棵樹才是。
|
||||
|
||||
## ⚠️ MISTAKE: 派工單的紅線建立在「Gitea 匿名讀得到」上,而那件事沒人打過一次
|
||||
|
||||
票: `inkstone/ISEP#140`(母票 `inkstone/ISEP#130`)
|
||||
日期: 2026-09-07
|
||||
|
||||
症狀: 工單 comment 6611 寫「主線指標在 Gitea 上讀得到(匿名讀 raw 檔或 API contents,D20 讀不擋)」,
|
||||
紅線據此寫成「讀 Gitea 一律匿名,不帶 token」。開工第一個指令匿名打
|
||||
`/api/v1/repos/inkstone/InkStoneCo/raw/…`、`/contents/…`、`/repos/inkstone/InkStoneCo` ⇒ **三個都 404**。
|
||||
`inkstone/ISEP` 同樣的三個端點 200 ⇒ 不是網路,是 InkStoneCo 在 Gitea 是 private。
|
||||
|
||||
實查: 照紅線字面做(純匿名)⇒ 這張票在真環境永遠讀不到,測試卻可以全綠(假伺服器照自己的想像回 200,
|
||||
同日 #137 那條坑的翻版)。而 SessionStart 同一條鏈上的 `countdown-milestone-refresh.sh` 與
|
||||
`mainline refresh` 本來就帶 `GITEA_TOKEN_CLAUDE_CODE` 打 Gitea;D20 管的是 GitHub 那個會被 flag 的帳號,
|
||||
不是 Gitea 機器帳號的讀。
|
||||
|
||||
原因: 「讀得到」是一個可以一個指令驗掉的事實宣稱,卻被當成前提直接寫進紅線;收工方若不打那一下,
|
||||
就會交出一個「測試全綠、雲端永遠退回舊線」的東西——形狀跟 #137「假伺服器回 200」一模一樣。
|
||||
|
||||
正確做法: 匿名優先、匿名被拒(401/403/404)且環境拿得到 token 才帶 token 再問一次(`fetch_gitea()`);
|
||||
假伺服器要有 private 模式(匿名 404、帶 token 200)照真 Gitea 回;真跑兩條都跑(帶 token 讀到、拔 token 退回)。
|
||||
收到「X 讀得到/X 不存在」這種宣稱先打一次再動手——那是一個 curl 的成本。
|
||||
|
||||
Reference in New Issue
Block a user