三樣都做完並實測過,但落地的最後一步是終端機裡等人親手打字的互動閘。 它們原本只存在於某個 session 的 scratchpad——那種目錄一關就沒了。 · recipes/gitea_put_file.yaml 出貨線 7 站等它 · recipes/cf_worker_deploy_simple.yaml ⚠️ 只適用無 bindings 的簡單情形(見 #90) · hash-component/ sha256/sha1/md5,已與系統原生指令逐位元核對 (.wasm 是 1.3MB 編譯產物,不進版控,README 附重編指令) README 寫了落地指令與各自的注意事項。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.8 KiB
卡在人類閘前的產物(Arcrun#89 / #90 / #91)
為什麼這個資料夾存在:這三樣東西都做完並實測過了,但落地的最後一步是 終端機裡等人親手打字的互動閘,AI 打不進去。 2026-08-11 它們原本只存在於某個 session 的暫存目錄——那種目錄一關就沒了。 先搶進版控,等人有空時再落地。
一、兩份 recipe(#89/#90)
recipes/gitea_put_file.yaml — 把檔案寫回 Gitea repo。出貨線有 7 站等它。
recipes/cf_worker_deploy_simple.yaml — 部署單檔 Worker(classic 格式)。
落地指令(一份跑一次):
acr recipe push pending-human-gate/recipes/gitea_put_file.yaml
跑的時候會停下來要你親手輸入資源名確認——那是「把資源變成可被外部呼叫」的暴露同意閘, 不是卡住,是設計如此。
⚠️ cf_worker_deploy_simple.yaml 先別急著推:#90 查出一件結構性的事——
recipe 引擎的 body 一律 JSON,而 Cloudflare 上傳 Worker 的 API 要的是原始 JS 或 multipart。
⇒ classic 版只適用於沒有 bindings 的簡單情形。而實查安裝器那站有 9 把 KV + 一顆 D1,
classic 版幫不上它。詳見 Leo/Arcrun#90。
金鑰(D36)
兩份 recipe 都只寫名字(gitea_token/cf_api_token),真身由 credential 中心在執行前回填。
對應的 auth-recipe 已經註冊在 leo21c 上,可以直接查證:
curl -s https://arcrun-cypher-executor.leo21c.workers.dev/auth-recipes/gitea
二、hash 零件(#91)
hash-component/ — sha256/sha1/md5,hex/base64。出貨線的版本號機制與成品指紋核對都要它。
已實測(tinygo 編出來、wasmtime 真跑,三種演算法都跟系統原生指令逐位元一致)。
.wasm 是 1.3 MB 編譯產物,沒有進版控——要驗自己重編:
cd pending-human-gate/hash-component && tinygo build -target=wasi -o /tmp/hash.wasm main.go
echo '{"algorithm":"sha256","input":"hello"}' | wasmtime /tmp/hash.wasm
printf 'hello' | shasum -a 256 # 兩者應該一致
落地要走零件投稿流程(D27/D28):docs/component-pr-review-standard.md 的 checklist
+ 人在終端機互動跑 scripts/component-arm.sh。
🔴 registry/components/ 底下有機械閘(component-guard.sh)擋著 AI 直接寫入——那是刻意的,
所以這份放在 pending-human-gate/,不是放在它最終該去的位置。
落地之後
三樣都上去之後,Arcrun#89/#91 才能從 ◐ 半通 變 ✅——
而判準是貼一次真實的執行輸出(recipe 對某個測試檔案回 2xx、零件在真端點上跑出正確雜湊),
不是「推上去了」。