docs(ops): add blocked product response acceptance ledger [skip ci]

This commit is contained in:
Your Name
2026-06-24 14:34:10 +08:00
parent 759f8ff361
commit f704607793
3 changed files with 288 additions and 0 deletions

View File

@@ -1,3 +1,24 @@
## 2026-06-24Blocked products owner response acceptance ledger
**背景**blocked product decision packages `8/8`、owner response templates `8/8` 與 Mac Mini / MacBook Pro Start Here sync readback 已完成,但 owner response received / accepted 仍是 `0/8`。本輪補上「收到回覆後如何驗收」的 acceptance ledger避免一般「批准繼續」被誤判成 source-control 或 runtime 授權。
**新增文件**
- `docs/operations/codex-gitea-blocked-products-owner-response-acceptance.snapshot.json`
- `docs/operations/CODEX-GITEA-BLOCKED-PRODUCTS-OWNER-RESPONSE-ACCEPTANCE-2026-06-24.md`
**固定口徑**
- blocked products`8`
- acceptance candidates`8`
- required owner response fields`14`
- acceptance checks`16`
- rejection guards`15`
- default blockers`21`
- owner response received / accepted / rejected`0 / 0 / 0`
- review branch ready / remote dev ready / remote dev created`0 / 0 / 0`
- product repo write / runtime write / secret collection`0`
**邊界**:這是只讀 acceptance ledger不是 owner response、review branch、remote `dev` branch、Gitea repo write、runtime write、secret collection、raw `.git` sync 或 raw conversation sync。
## 2026-06-24Codex Start Here / Dashboard blocked-products sync readback
**背景**blocked product decision packages `8/8` 與 owner response templates `8/8` 已推上 Gitea 後,更新兩台 Codex 共用開工入口,避免新視窗讀到舊的 registry / artifact sync 狀態。

View File

@@ -0,0 +1,78 @@
# Codex Gitea Blocked Products Owner Response Acceptance
- generated_at: `2026-06-24T14:44:00+08:00`
- blocked_products: `8`
- owner_response_received: `0 / 8`
- owner_response_accepted: `0 / 8`
- review_branch_ready: `0 / 8`
- remote_dev_branch_ready: `0 / 8`
- runtime_write_authorized: `0`
## 目的
這份文件把 blocked products 的 owner response 驗收規則固定下來。前一階段已完成 `8/8` owner decision packages 與 `8/8` owner response templates本階段只建立「收到回覆後怎麼驗收」的 ledger不代表已收到或接受任何產品回覆。
## 必填欄位
每個產品都必須有完整、具體、無 secret 的 owner response至少包含
- `owner_role_or_team`
- `decision`
- `decision_reason`
- `accepted_baseline_source`
- `include_groups`
- `exclude_groups`
- `quarantined_paths_ack`
- `env_secret_policy_ack`
- `generated_artifact_policy_ack`
- `review_branch_allowed`
- `remote_dev_branch_allowed`
- `runtime_write_allowed`
- `followup_owner`
- `evidence_refs`
## 驗收檢查
回覆必須同時通過:
- owner / team、decision、reason、baseline source 皆明確。
- include / exclude 不能只寫「全部」或「照你判斷」,必須對到 path group / artifact class。
- `runtime_write_allowed` 必須是 `false`,因為這條流程只允許 source-control readiness不允許部署、restart、DB、host、K8s 或 runtime write。
- `remote_dev_branch_allowed` 必須逐產品明確,不能由一般「批准繼續」推論。
- evidence refs 必須是 redacted refs不得包含 secret value、hash、partial token、`.env` 內容或 raw conversation。
## 拒收規則
以下任何一項出現,就不得標 accepted
- 只有一般批准語句,沒有產品級決策。
- 要求同步 raw `.git`、raw Codex / ChatGPT history、`.env`、runtime volume、secret value。
- 要求直接建立 remote `dev`,但沒有逐產品 include / exclude。
- 要求 runtime write、部署、restart、firewall、Nginx、K8s、DB 或主機操作。
- generated outputs、logs、backup archives 沒有明確 sanitized artifact policy。
- Bitan / Tsenyang / VTuber 這類 internal or missing repo 沒有 owner export / repo identity 決策。
## 產品狀態
| Product | 狀態 | 主要 blocker |
|---------|------|--------------|
| `clawbot-openclaw` | `waiting_owner_response` | two-file drift not accepted |
| `tsenyang-website` | `waiting_owner_response` | presentation output policy missing |
| `agent-bounty-protocol` | `waiting_owner_response` | A2A / treasury scope and backup archive policy missing |
| `2026fifa` | `waiting_owner_response` | narrow scanner not completed |
| `vibework` | `waiting_owner_response` | release scope not split or accepted |
| `stockplatform-v2` | `waiting_owner_response` | tmp/generated/source candidate policy missing |
| `bitan-pharmacy` | `waiting_owner_response` | internal inventory and content evidence policy missing |
| `vtuber` | `waiting_owner_response` | repository identity and remote repo unresolved |
## 下一步
只有當某一產品收到完整、遮罩、可驗證來源的 owner response且通過本 ledger 的所有 acceptance checks才可以進入該產品的 review branch / remote `dev` final confirmation。到那之前8 個 blocked products 全部維持 blocked。
## 邊界
- 沒有讀、收、保存 secret value / token / private key / env content。
- 沒有同步 raw `.git`、runtime volume 或 raw conversation。
- 沒有修改任何產品 repo。
- 沒有建立 review branch、remote `dev` branch 或 Gitea repo。
- 沒有部署、restart、reload、DB / K8s / host / firewall / Nginx runtime write。

View File

@@ -0,0 +1,189 @@
{
"schema_version": "codex_gitea_blocked_products_owner_response_acceptance_v1",
"generated_at": "2026-06-24T14:44:00+08:00",
"scope": "Acceptance ledger for blocked product owner responses before any remote dev branch or product repo write",
"summary": {
"blocked_product_count": 8,
"acceptance_candidate_count": 8,
"required_owner_response_field_count": 14,
"acceptance_check_count": 16,
"rejection_guard_count": 15,
"default_blocker_count": 21,
"owner_response_received_count": 0,
"owner_response_accepted_count": 0,
"owner_response_rejected_count": 0,
"review_branch_ready_count": 0,
"remote_dev_branch_ready_count": 0,
"remote_dev_branch_created_count": 0,
"product_repo_write_authorized_count": 0,
"product_repo_write_performed_count": 0,
"runtime_write_authorized_count": 0,
"runtime_write_performed_count": 0,
"secret_values_collected_count": 0,
"env_file_content_read_count": 0,
"raw_git_sync_allowed": false,
"raw_conversation_sync_allowed": false
},
"required_owner_response_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"accepted_baseline_source",
"include_groups",
"exclude_groups",
"quarantined_paths_ack",
"env_secret_policy_ack",
"generated_artifact_policy_ack",
"review_branch_allowed",
"remote_dev_branch_allowed",
"runtime_write_allowed",
"followup_owner",
"evidence_refs"
],
"acceptance_checks": [
"owner_role_or_team_is_present",
"decision_is_product_specific",
"decision_reason_is_present",
"baseline_source_is_explicit",
"include_groups_are_specific",
"exclude_groups_are_specific",
"quarantined_paths_ack_is_true",
"env_secret_policy_ack_is_true",
"generated_artifact_policy_ack_is_true",
"review_branch_allowed_is_explicit",
"remote_dev_branch_allowed_is_explicit",
"runtime_write_allowed_is_false",
"evidence_refs_are_redacted",
"followup_owner_is_present",
"no_secret_value_or_partial_secret_present",
"no_raw_conversation_or_raw_git_sync_requested"
],
"rejection_guards": [
"generic_approval_phrase_only",
"missing_owner_role_or_team",
"missing_decision_reason",
"missing_baseline_source",
"ambiguous_include_or_exclude_groups",
"requests_secret_value_or_env_content",
"requests_raw_git_directory_sync",
"requests_raw_codex_or_chatgpt_history_sync",
"requests_runtime_volume_sync",
"requests_runtime_write",
"requests_product_repo_write_without_review_branch",
"requests_remote_dev_branch_without_explicit_product_decision",
"includes_generated_outputs_without_sanitized_policy",
"includes_logs_or_backup_archives_without_policy",
"missing_redacted_evidence_refs"
],
"products": [
{
"product_id": "clawbot-openclaw",
"acceptance_status": "waiting_owner_response",
"decision_package": "docs/operations/CLAWBOT-OPENCLAW-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
"response_template_section": "P1-1 ClawBot / OpenClaw",
"default_blockers": [
"owner_response_missing",
"two_file_drift_not_accepted"
],
"review_branch_ready": false,
"remote_dev_branch_ready": false
},
{
"product_id": "tsenyang-website",
"acceptance_status": "waiting_owner_response",
"decision_package": "docs/operations/TSENYANG-WEBSITE-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
"response_template_section": "P1-2 Tsenyang Website",
"default_blockers": [
"owner_response_missing",
"presentation_output_policy_missing"
],
"review_branch_ready": false,
"remote_dev_branch_ready": false
},
{
"product_id": "agent-bounty-protocol",
"acceptance_status": "waiting_owner_response",
"decision_package": "docs/operations/AGENT-BOUNTY-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
"response_template_section": "P1-3 Agent Bounty",
"default_blockers": [
"owner_response_missing",
"a2a_treasury_scope_not_accepted",
"backup_archive_policy_missing"
],
"review_branch_ready": false,
"remote_dev_branch_ready": false
},
{
"product_id": "2026fifa",
"acceptance_status": "waiting_owner_response",
"decision_package": "docs/operations/2026FIFA-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
"response_template_section": "P1-4 2026FIFA",
"default_blockers": [
"owner_response_missing",
"narrow_scanner_not_completed"
],
"review_branch_ready": false,
"remote_dev_branch_ready": false
},
{
"product_id": "vibework",
"acceptance_status": "waiting_owner_response",
"decision_package": "docs/operations/VIBEWORK-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
"response_template_section": "P1-5 VibeWork",
"default_blockers": [
"owner_response_missing",
"release_scope_not_split_or_accepted",
"diff_check_debt_unresolved"
],
"review_branch_ready": false,
"remote_dev_branch_ready": false
},
{
"product_id": "stockplatform-v2",
"acceptance_status": "waiting_owner_response",
"decision_package": "docs/operations/STOCKPLATFORM-V2-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
"response_template_section": "P1-6 StockPlatform v2",
"default_blockers": [
"owner_response_missing",
"tmp_generated_outputs_not_excluded",
"source_candidate_policy_missing"
],
"review_branch_ready": false,
"remote_dev_branch_ready": false
},
{
"product_id": "bitan-pharmacy",
"acceptance_status": "waiting_owner_response",
"decision_package": "docs/operations/BITAN-PHARMACY-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
"response_template_section": "P1-7 Bitan Pharmacy",
"default_blockers": [
"owner_response_missing",
"internal_inventory_missing",
"public_content_cleanliness_evidence_policy_missing"
],
"review_branch_ready": false,
"remote_dev_branch_ready": false
},
{
"product_id": "vtuber",
"acceptance_status": "waiting_owner_response",
"decision_package": "docs/operations/VTUBER-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
"response_template_section": "P1-8 VTuber",
"default_blockers": [
"owner_response_missing",
"repository_identity_unresolved",
"remote_repo_missing"
],
"review_branch_ready": false,
"remote_dev_branch_ready": false
}
],
"hard_gates": [
"Owner response accepted count remains 0 until product-specific responses pass all acceptance checks.",
"A generic approval phrase cannot create review branches, remote dev branches, or product repo writes.",
"remote_dev_branch_allowed=true is product-specific and does not imply runtime write.",
"runtime_write_allowed must remain false in this owner response flow.",
"Secrets, env contents, raw git directories, raw conversations, runtime volumes, generated outputs, logs, and backup archives remain excluded unless a sanitized product-specific policy accepts them."
],
"recommended_next_step": "Process the smallest low-blast-radius product first only after a complete owner response arrives; otherwise keep all eight products in waiting_owner_response."
}