身為每天開新 session 的人,我要一開場就知道這台機器缺什麼,我才不會做完一整條線才發現跑不了 #115
Notifications
Due Date
No due date set.
Depends on
#112 身為被閘擋下來的人,我要它教的那行指令真的跑得動,我才不會為了繞過它而放棄開子票
inkstone/ISEP
Reference: inkstone/ISEP#115
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?
目標
一個 session 開場時,沒有任何東西檢查「這台機器上該有的東西在不在、該讀的規約有沒有互相打架」。
ISEP 有 58 支閘,全部都在檢查我要做的動作對不對;沒有一支檢查我站的地方對不對。
今天一個 session 內撞到三次,形狀相同:
① 該有的 credential 不在,而我到要用的那一刻才知道
Arcrun#192要清空 youlin,需要CLOUDFLARE_API_TOKEN_YOULIN_CC_USE。雲端這台機器:
env | grep -ciE 'cloudflare|^CF_|wrangler'→ 0、InkStoneCo/.env不存在、~/.wrangler不存在。憑證地圖(
wiki/credentials-map.md)明明寫著那把 token 該在InkStoneCo/.env——但那份
.env是 gitignore,不隨 repo clone,所以雲端永遠拿不到。⇒ 地圖說「有」,機器上「沒有」,而兩者從不對帳。
更貴的是它發生在流程末端:我派了工人寫完清空腳本、寫完測試,
到要真的跑的那一刻才發現跑不了。這件事在 session 第一秒就能知道。
⚠️ 附帶查定(
wiki/ops-facts.md同日):雲端 session 的環境變數在 container 啟動那一刻凍結。leo 事後去後台設 Environment 變數,這個 session 讀不到
⇒ 「你去設一下我再查」在同一個 session 裡永遠是 0。這一點也該在開場就講明白,
否則每次都會浪費一輪往返(今天就浪費了一輪)。
② 一支 skill 的格式,教我違反現行鐵律
/isep:wiki-update要我把「正在做/下次 session 第一件事/待負責人確認」寫進status.md。那是進度,而 D52+D72 寫死「進度一律去 Gitea 撈,不要在任何檔案裡另養一份,它一定會漂」
——開場 hook 自己每次都印這句。
⇒ 同一套系統的兩個部位互相打架:hook 印的規約 vs skill 教的動作。
我這次是自己看出來才沒照做;下一個 session 未必——而照做的後果正是那條鐵律要防的:
養出第二份會漂的進度。
③ 閘教了一行不存在的指令(已另立
inkstone/ISEP#112)comment-carries-task-guard.sh教人跑scripts/ticket subtask,那個子命令不存在。三件的共同形狀:規約、工具、環境三者各自更新,而沒有任何一處在對帳。
每一次都是「當事人自己撞到才知道」,而撞到的時機一次比一次晚
(③在動作當下、②在寫檔當下、①在整條線做完之後)。
驗收條件
(只報名字不報值;報「這裡沒有」而不是「不存在」)
(例:雲端拿不到
.env⇒ 貼在對話裡/設 Environment 後開新 session,且要講明「這個 session 讀不到後來設的變數」)
/isep:wiki-update這一支要修好(它該教的是「進度去 Gitea、wiki 只收事實」)
(是誰定期對帳、還是讓它們共用同一份真相源)
⚠️ 不要為此造一支「每次開場掃描全世界」的重閘——開場成本要小。
判準是「這個 session 待會會用到的東西」,不是「所有可能的東西」。
deliverable 類型
code