# Workflow / Runner / Secret 名稱 Inventory 契約 | 項目 | 內容 | |------|------| | 日期 | 2026-06-11 | | 狀態 | 草案,missing evidence | | Schema | `docs/schemas/source_control_workflow_secret_name_inventory_v1.schema.json` | | Snapshot | `docs/security/source-control-workflow-secret-name-inventory.snapshot.json` | | Local evidence | `docs/security/source-control-workflow-secret-name-local-evidence.snapshot.json` | | Export request | `docs/security/source-control-workflow-secret-name-export-request.snapshot.json` | | Owner response 收件包 | `docs/security/SOURCE-CONTROL-WORKFLOW-SECRET-NAME-OWNER-RESPONSE.md` / `docs/security/source-control-workflow-secret-name-owner-response.snapshot.json` | | 模式 | `inventory_contract_only` | | runtime 執行授權 | `false` | ## 0. 核心結論 `source_control_workflow_secret_name_inventory_v1` 是 S4.1 的 workflow / runner / secret 名稱 inventory 契約。 它只定義 GitHub primary cutover 前要收集哪些只讀欄位:workflow 名稱、trigger、runner label、webhook 目的地、deploy key 名稱、branch protection、CODEOWNERS、secret 名稱與 owner。 它不收集 secret value,不修改 workflow,不搬移 secrets,也不授權 GitHub primary cutover。目前 `inventory_complete_count=0`。 S4.2 已補本機可見 evidence:5 個 repos 有 workflow / CODEOWNERS evidence、33 個 workflow files、42 個 referenced secret names、5 個 runner labels。這只是 local partial evidence,仍不代表 GitHub primary ready。 S4.3 已補 redacted export request package:9 個 in-scope repos 需要 owner / read-only export,5 類 export lanes 包含 webhook、runner、deploy key、branch protection / CODEOWNERS 與 repository secret name parity;所有 export 都禁止 secret value 與 write token。 S4.12 已補 owner response request packet、template status ledger、audit event templates、redaction examples、collection checks、intake preflight checks 與收件包:1 個 request packet、5 個 template statuses、3 個 audit event templates、5 個 redaction examples、6 個 collection checks、6 個 intake preflight checks 與 5 個 response templates 對應 webhook、runner、deploy key、branch protection / CODEOWNERS 與 repository secret name parity;目前 received / accepted response 皆為 0、audit events emitted 仍為 0。response 通過也只更新 read-only evidence,不代表修改 workflow、secret、runner、deploy key 或 branch protection。 ## 1. 目前狀態 | 指標 | 數量 | |------|------| | Candidate repos | 10 | | In-scope repos | 9 | | External scope review | 1 | | Inventory complete | 0 | | Missing inventory | 9 | | Secret value collection allowed | `false` | | Local evidence repos | 5 | | Local workflow files | 33 | | Local referenced secret names | 42 | | Redacted export request repos | 9 | | Redacted export lanes | 5 | | S4.12 request packet | 1 | | S4.12 template statuses | 5 | | S4.12 audit event templates | 3 | | S4.12 redaction examples | 5 | | S4.12 collection checks | 6 | | S4.12 intake preflight checks | 6 | | S4.12 response templates | 5 | | S4.12 received / accepted / rejected | `0 / 0 / 0` | ## 2. Inventory Lanes | Lane | 可保存 | 禁止保存 | |------|--------|----------| | Workflow | workflow path、名稱、trigger、runner label、environment、referenced secret names | secret value、token value | | Webhook | webhook 名稱、目的地 host、事件類型、enabled flag、owner | webhook secret、含 token URL | | Runner | runner label、scope、executor type、host alias、owner | registration token、SSH private key | | Deploy key | key 名稱、read-only flag、repo scope、owner | private key | | Branch protection / CODEOWNERS | protected branch、required checks、CODEOWNERS path、owner team | admin override token | | Secret names | secret name、scope、owning team、used by workflow、rotation owner | secret value、credential value | | Redaction audit | redaction status、evidence ref、producer、reviewer | raw secret、raw token、raw private key | ## 3. AwoooP 可做 1. 顯示每個 repo 缺哪些 inventory lane。 2. 顯示 secret 只允許名稱與 owner,不允許 value。 3. 將 redacted inventory snapshot 寫入 Audit evidence。 4. 對缺資料 repo 顯示 owner review lane。 5. 將失敗或含敏感值 payload 交給 mirror quarantine。 6. 顯示 S4.2 本機 evidence 與仍缺的 API / export lanes。 7. 顯示 S4.3 export request 的欄位清單、拒收欄位與 acceptance gate。 8. 顯示 S4.12 owner response request packet、template status ledger、audit event templates、redaction examples、collection checks、intake preflight checks、templates、acceptance checks 與 rejection rules。 ## 4. AwoooP 不可做 1. 不收集、保存、顯示 secret value。 2. 不修改 workflow、webhook、runner、deploy key 或 branch protection。 3. 不建立 GitHub repo。 4. 不 sync refs。 5. 不切 GitHub primary。 6. 不停用或降級 Gitea。 7. 不顯示 repo、refs、secret、primary switch 類 action button。 ## 5. 階段定位 S4.1 讓 GitHub primary readiness 的「workflow / secret 名稱 parity」缺口變成可追蹤清單。 S4.2 讓本機可見 workflow / CODEOWNERS / referenced secret names 先形成 partial evidence。 S4.3 讓後續 webhook、runner、deploy key、branch protection / CODEOWNERS 與 repository secret parity 的 owner / read-only export 有明確的欄位、拒收規則與驗收 gate。 S4.12 讓 owner response request、template status、audit event templates、redaction examples、collection checks、intake preflight checks 與 response 有固定收件格式與拒收規則,避免 GitHub hosted runner 額度風險、secret value、write token 或未脫敏 payload 被誤接進 AwoooP。 這仍是低摩擦框架期:只定義欄位、只顯示缺口、只留痕,不碰任何實際 secret 或發版流程。後續即使取得 redacted export,也只代表 evidence 可 review,不代表 GitHub primary ready。