身為雲端 session,我要一啟動就載到 ISEP 的閘與 command,我才不會在沒有閘的情況下做事 #5

Closed
opened 2026-08-20 04:52:37 +00:00 by claude-code · 2 comments
Member

Parent: #1

目的:雲端每次從 github.com/youlinhsieh/inkstoneco 啟動,要能在啟動當下就載到 ISEP 這一份的閘、command、skill——而不是靠事後 clone、靠複製、靠有人記得重跑產生器。

這條為什麼存在InkStoneCo#14(雲端 33 支 guard 一支都沒生效)與 #57(薄殼比真身少 7 支)是同一個病的兩次發作。舊解法是產生「薄殼 payload」——那等於維持兩份。本票要的是只有一份

怎麼驗:能貼出雲端 session 實際載到的閘清單,且與 ISEP 的註冊條數逐條相符;不是「我推上去了」,是「那邊真的載到了」。

紅線:不准回頭做「薄殼只裝子集」——那正是要拆掉的東西。私 repo 的取用憑證走既有 credential 機制,不得寫進任何檔案。

Parent: #1 **目的**:雲端每次從 `github.com/youlinhsieh/inkstoneco` 啟動,要能**在啟動當下**就載到 ISEP 這一份的閘、command、skill——而不是靠事後 clone、靠複製、靠有人記得重跑產生器。 **這條為什麼存在**:`InkStoneCo#14`(雲端 33 支 guard 一支都沒生效)與 `#57`(薄殼比真身少 7 支)是同一個病的兩次發作。舊解法是產生「薄殼 payload」——那等於維持兩份。本票要的是**只有一份**。 **怎麼驗**:能貼出雲端 session 實際載到的閘清單,且與 ISEP 的註冊條數逐條相符;不是「我推上去了」,是「那邊真的載到了」。 **紅線**:不准回頭做「薄殼只裝子集」——那正是要拆掉的東西。私 repo 的取用憑證走既有 credential 機制,不得寫進任何檔案。
claude-code added this to the (deleted) milestone 2026-08-20 04:52:37 +00:00
claude-code added the
s
todo
p
high
type
feature
labels 2026-08-20 04:52:37 +00:00
claude-code added
s
doing
and removed
s
todo
labels 2026-08-20 04:54:51 +00:00
Author
Member

BLUF:機制找到、本機隔離環境實測兩輪通過、真雲端 session 未驗——分支 leaf/5-cloud

結論:不需要「薄殼裝子集」也不需要「複製一份」。code-on-web 的 Setup script
(session 啟動前跑,跑在會被拍成快照的 VM 上)裡跑 claude plugin marketplace add +
claude plugin install isep@inkstone --scope user,就能讓 ISEP 在 Claude Code
啟動當下已經在磁碟上——滿足 docs/governance/sdd-gitea-governance.md §11.3
L11.3.1/L11.3.2/L11.3.3。完全不需要碰 youlinhsieh/inkstoneco(GitHub 薄殼)。

對 L11.3.4(驗收標準:逐條對上 ISEP 註冊條數)

本機隔離 $HOME(不影響本機正在跑的其他 session)跑了兩輪真的 claude plugin
CLI,對真的私有 Gitea repo:

裝到隔離環境的 ISEP 當時 main 的來源 對上了嗎
Skills(commands+skills 目錄合計) 9 9
Commands 目錄檔名 7 個 .md 7 個 .md diff 完全一致
Skills 目錄 2 個 2 個
Hook 腳本實體檔 42 支 42 支
hooks.json 註冊的唯一 hook 路徑 39 支 39 支 diff 完全一致

known_marketplaces.json 存的來源網址不帶 token(用 git config --global url.insteadOf 重寫認證,不是把 token 嵌進 marketplace 網址)。測試途中 ISEP
main 因為 #6/#9 合併往前推進,下一次 claude plugin marketplace update
立刻拿到新內容——證明讀的是 Gitea 當下 HEAD,不是任何時間點的快照複製本。

完整過程、指令、輸出見分支上的 docs/cloud-session-bootstrap.md
要貼進 code-on-web 的 Setup script 內容見 docs/cloud-setup-script.sh

明講:沒驗到的三格

  1. 沒有在真正的 code-on-web 雲端 session 裡跑過——Cloud environment 的
    Setup script/Environment variables 是 leo 的 claude.ai 帳號層級設定,
    我判斷這不該我自己動手改,交給 leo。
  2. 沒有驗到 hook 真的攔下第一個工具呼叫的完整 runtime 行為——只驗到
    plugin 在磁碟上正確就位、claude plugin list 回報 enabled。完整跑一個已登入
    session 需要這台機器的 Claude Code 登入憑證(在 macOS Keychain,非可複製檔案),
    判斷匯出去測試超出這張票範圍,沒做。這格的依據是官方文件(plugin-marketplaces
    文件「Pre-populate plugins for containers」段:登記在 startup 同步完成,
    interactive 與 -p 模式皆適用),不是我自己重現的 runtime 實測。
  3. Environment caching 的 ~7 天新鮮度窗口沒有解——setup script 只在
    environment 第一次開 session 時跑,之後沿用快照直到過期或設定變更。
    這是另一種新鮮度問題,不是本票「載不載得到」的範圍,留給 leo 決定要不要另開票。

需要 leo 做的(帳號層級設定,非 GitHub push,我沒有動手)

  1. code-on-web → Cloud environments → 目標 environment → Environment
    variables
    GITEA_TOKEN_CLAUDE_CODE=<既有那把值>(沿用 InkStoneCo#14
    已建立的名字,不是新造)。
  2. Setup script 欄位貼 docs/cloud-setup-script.sh 內容。
  3. 開新 session 或用 dashboard rebuild environment,驗 claude plugin list
    顯示 isep@inkstone enabled,對照 §逐條對照 那張表核一次數字。

紅線確認

  • 未 push GitHub、未 push 本 repo main。全部改動在 leaf/5-cloud
    c750d5e,已推 Gitea)。
  • 未把任何 token 值寫進任何檔案/commit/票;docs/cloud-setup-script.sh
    只引用環境變數名字。
  • 未動 system-dev/labels.yamlscripts/gitea-labels-*README.md
  • 未動 youlinhsieh/inkstoneco(新機制不需要它)。
## BLUF:機制找到、本機隔離環境實測兩輪通過、真雲端 session 未驗——分支 `leaf/5-cloud` **結論**:不需要「薄殼裝子集」也不需要「複製一份」。code-on-web 的 **Setup script** (session 啟動前跑,跑在會被拍成快照的 VM 上)裡跑 `claude plugin marketplace add` + `claude plugin install isep@inkstone --scope user`,就能讓 ISEP 在 Claude Code 啟動當下已經在磁碟上——滿足 `docs/governance/sdd-gitea-governance.md` §11.3 L11.3.1/L11.3.2/L11.3.3。**完全不需要碰 `youlinhsieh/inkstoneco`(GitHub 薄殼)。** ### 對 L11.3.4(驗收標準:逐條對上 ISEP 註冊條數) 本機隔離 `$HOME`(不影響本機正在跑的其他 session)跑了兩輪真的 `claude plugin` CLI,對真的私有 Gitea repo: | | 裝到隔離環境的 | ISEP 當時 main 的來源 | 對上了嗎 | |---|---|---|---| | Skills(commands+skills 目錄合計) | 9 | 9 | ✅ | | Commands 目錄檔名 | 7 個 `.md` | 7 個 `.md` | ✅ diff 完全一致 | | Skills 目錄 | 2 個 | 2 個 | ✅ | | Hook 腳本實體檔 | 42 支 | 42 支 | ✅ | | `hooks.json` 註冊的唯一 hook 路徑 | 39 支 | 39 支 | ✅ diff 完全一致 | `known_marketplaces.json` 存的來源網址不帶 token(用 `git config --global url.insteadOf` 重寫認證,不是把 token 嵌進 marketplace 網址)。測試途中 ISEP `main` 因為 `#6`/`#9` 合併往前推進,下一次 `claude plugin marketplace update` 立刻拿到新內容——證明讀的是 Gitea 當下 HEAD,不是任何時間點的快照複製本。 完整過程、指令、輸出見分支上的 `docs/cloud-session-bootstrap.md`; 要貼進 code-on-web 的 Setup script 內容見 `docs/cloud-setup-script.sh`。 ### 明講:沒驗到的三格 1. ❌ **沒有在真正的 code-on-web 雲端 session 裡跑過**——Cloud environment 的 Setup script/Environment variables 是 leo 的 claude.ai 帳號層級設定, 我判斷這不該我自己動手改,交給 leo。 2. ❌ **沒有驗到 hook 真的攔下第一個工具呼叫的完整 runtime 行為**——只驗到 plugin 在磁碟上正確就位、`claude plugin list` 回報 enabled。完整跑一個已登入 session 需要這台機器的 Claude Code 登入憑證(在 macOS Keychain,非可複製檔案), 判斷匯出去測試超出這張票範圍,沒做。這格的依據是官方文件(plugin-marketplaces 文件「Pre-populate plugins for containers」段:登記在 startup 同步完成, interactive 與 `-p` 模式皆適用),不是我自己重現的 runtime 實測。 3. ❌ **Environment caching 的 ~7 天新鮮度窗口沒有解**——setup script 只在 environment 第一次開 session 時跑,之後沿用快照直到過期或設定變更。 這是另一種新鮮度問題,不是本票「載不載得到」的範圍,留給 leo 決定要不要另開票。 ### 需要 leo 做的(帳號層級設定,非 GitHub push,我沒有動手) 1. code-on-web → Cloud environments → 目標 environment → **Environment variables** 加 `GITEA_TOKEN_CLAUDE_CODE=<既有那把值>`(沿用 `InkStoneCo#14` 已建立的名字,不是新造)。 2. **Setup script** 欄位貼 `docs/cloud-setup-script.sh` 內容。 3. 開新 session 或用 dashboard rebuild environment,驗 `claude plugin list` 顯示 `isep@inkstone enabled`,對照 §逐條對照 那張表核一次數字。 ### 紅線確認 - 未 push GitHub、未 push 本 repo `main`。全部改動在 `leaf/5-cloud` (`c750d5e`,已推 Gitea)。 - 未把任何 token 值寫進任何檔案/commit/票;`docs/cloud-setup-script.sh` 只引用環境變數名字。 - 未動 `system-dev/`、`labels.yaml`、`scripts/gitea-labels-*`、`README.md`。 - 未動 `youlinhsieh/inkstoneco`(新機制不需要它)。
claude-code added
s
review
and removed
s
doing
labels 2026-08-20 05:40:02 +00:00
claude-code added
s
pending
and removed
s
review
labels 2026-08-20 05:42:37 +00:00
claude-code removed this from the (deleted) milestone 2026-08-20 05:42:38 +00:00
claude-code added this to the (deleted) milestone 2026-08-20 08:32:03 +00:00
Author
Member

[decision] 這張票是重複的,內容已折回 inkstone/InkStoneCo#14,本票關閉

leo 2026-08-20:「如果你開的票與舊有的重疊就刪掉你新開的保留舊的,你在讓事情複雜化」。

這張是總管 2026-08-20 新開的,而同一條線早就有票在跑 ⇒ 留舊的。
本票的內容已經以留言形式貼回 inkstone/InkStoneCo#14,那裡有這件事完整的來歷。

(機器帳號沒有 repo admin,刪不掉,只能關。要真的抹掉請用管理員帳號刪。)

[decision] 這張票是重複的,內容已折回 inkstone/InkStoneCo#14,本票關閉 leo 2026-08-20:「**如果你開的票與舊有的重疊就刪掉你新開的保留舊的,你在讓事情複雜化**」。 這張是總管 2026-08-20 新開的,而同一條線早就有票在跑 ⇒ 留舊的。 本票的內容已經以留言形式貼回 inkstone/InkStoneCo#14,那裡有這件事完整的來歷。 (機器帳號沒有 repo admin,刪不掉,只能關。要真的抹掉請用管理員帳號刪。)
claude-code added the
close
duplicate
label 2026-08-20 08:39:26 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: inkstone/ISEP#5