# 卡在人類閘前的產物（`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、零件在真端點上跑出正確雜湊），
不是「推上去了」。
