fix(gitea): surface all product dev prod repo truth
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 1s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 2m12s
CD Pipeline / build-and-deploy (push) Successful in 4m52s
CD Pipeline / post-deploy-checks (push) Successful in 1m47s

This commit is contained in:
Your Name
2026-07-03 08:38:04 +08:00
parent 0dc9e62b6d
commit fbd3ad2ca4
9 changed files with 1286 additions and 144 deletions

View File

@@ -1,3 +1,13 @@
## 2026-07-03 — 10:38 Gitea 全專案 dev/prod repo truth 上卷
**完成內容**
- 新增 `docs/operations/gitea-all-product-dev-prod-repo-readback.snapshot.json`,以 Gitea SSH read-only refs 明確列出 12 個已知產品 repo`awoooi``ewoooc``2026FIFAWorldCup``agent-bounty-protocol``AwoooGo``stockplatform-v2``vibework``momo-pro-system``tsenyang-website``vtuber``bitan-pharmacy``clawbot-v5`
- P0-003 Gitea private inventory scorecard / API / Delivery workbench 新增 dev/prod 環境覆蓋讀回:`ssh_verified_product_repo_count=12``main_branch_present_product_repo_count=12``dev_branch_present_product_repo_count=12``dev_prod_environment_split_ready_count=12``missing_product_repo_count=0``missing_main_branch_product_repo_count=0``missing_dev_branch_product_repo_count=0`
- 將 public/tokenless UI 層與 SSH repo truth 分開呈現public/tokenless 可見 `6` 個;`AwoooGo``stockplatform-v2``vibework``momo-pro-system``tsenyang-website``clawbot-v5``private_or_auth_only`HTTP 404 不再被呈現成 repo 缺失。
**仍維持**
- 未讀 secret / token / `.env` / raw sessions / SQLite / auth未使用 GitHub / gh未建立 repo、未改 visibility、未 sync refs、未 workflow_dispatch未重啟 host / VM / service未 Docker / Nginx / K3s / DB / firewall restart未 DROP / TRUNCATE / restore / prune / delete / force push。
## 2026-07-03 — 08:30 AwoooP readback endpoint fail-soft 補強
**完成內容**

View File

@@ -1,6 +1,6 @@
{
"schema_version": "awoooi_gitea_private_inventory_p0_scorecard_v1",
"generated_at": "2026-06-29T20:27:30+08:00",
"generated_at": "2026-07-03T10:38:00+08:00",
"workplan_id": "P0-003",
"status": "closed_gitea_private_inventory_controlled_closeout",
"source_control_authority": "gitea",
@@ -14,16 +14,267 @@
"schema_version": "gitea_repo_inventory_v1",
"status": "ok",
"visibility_scope": "admin_export",
"repo_count": 4,
"repo_count": 6,
"ssh_verified_repo_count": 12,
"private_or_auth_only_repo_count": 6,
"public_repos": [
"wooo/awoooi",
"wooo/ewoooc",
"wooo/2026FIFAWorldCup",
"wooo/agent-bounty-protocol",
"wooo/2026FIFAWorldCup"
"wooo/vtuber",
"wooo/bitan-pharmacy"
],
"token_present": false,
"blocking_reason": "redacted_authenticated_inventory_payload_and_owner_attestation_accepted_for_readback"
},
"dev_prod_repo_readback": {
"schema_version": "gitea_all_product_dev_prod_repo_readback_v1",
"generated_at": "2026-07-03T10:38:00+08:00",
"source_control_authority": "gitea",
"scope": "all_known_product_repositories_dev_prod_branch_readback",
"status": "ready_all_expected_product_repos_have_dev_and_main",
"summary": {
"expected_product_count": 12,
"ssh_repo_present_count": 12,
"main_branch_present_count": 12,
"dev_branch_present_count": 12,
"environment_split_ready_count": 12,
"public_visible_count": 6,
"private_or_auth_only_count": 6,
"tokenless_http_404_private_or_auth_count": 6,
"missing_repo_count": 0,
"missing_main_branch_count": 0,
"missing_dev_branch_count": 0,
"all_expected_product_repos_have_ssh_refs": true,
"all_expected_product_repos_have_dev_and_main": true
},
"environment_contract": {
"prod_environment_branch": "main",
"dev_environment_branch": "dev",
"separate_environment_model": "branch_pair_per_product_repo",
"public_http_404_for_private_repo_is_visibility_or_auth_readback": true
},
"operation_boundaries": {
"ssh_refs_read_only": true,
"token_value_collection_allowed": false,
"secret_value_collection_allowed": false,
"gitea_api_write_allowed": false,
"gitea_repo_creation_allowed": false,
"gitea_refs_sync_allowed": false,
"gitea_visibility_change_allowed": false,
"github_api_allowed": false,
"github_cli_allowed": false,
"raw_session_or_sqlite_read_allowed": false
},
"products": [
{
"product_id": "awoooi",
"gitea_repo": "wooo/awoooi",
"prod_environment_branch": "main",
"prod_branch_sha": "b5f895804e38d50e213328b8ab840ecd0d095c6f",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "25889d4b8edcb83b6ec707c5eef3c21ae5d432b0",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "ewoooc",
"gitea_repo": "wooo/ewoooc",
"prod_environment_branch": "main",
"prod_branch_sha": "157f0f98be241ec25e7bd12aee293ef062bdbf71",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "157f0f98be241ec25e7bd12aee293ef062bdbf71",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "2026fifa",
"gitea_repo": "wooo/2026FIFAWorldCup",
"prod_environment_branch": "main",
"prod_branch_sha": "64cae96d0d7f0f34bfb5d39782063b522983085c",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "64cae96d0d7f0f34bfb5d39782063b522983085c",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "agent-bounty-protocol",
"gitea_repo": "wooo/agent-bounty-protocol",
"prod_environment_branch": "main",
"prod_branch_sha": "b7a733f44f4f645dd21a9b4a9075b89c4a324f64",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "b7a733f44f4f645dd21a9b4a9075b89c4a324f64",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "awooogo",
"gitea_repo": "wooo/AwoooGo",
"prod_environment_branch": "main",
"prod_branch_sha": "6dcfc9acb415cd6203a4f042696d778505c65d1d",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "8471b376d97c1436d4612ece17f51ba0950f114d",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
},
{
"product_id": "stockplatform-v2",
"gitea_repo": "wooo/stockplatform-v2",
"prod_environment_branch": "main",
"prod_branch_sha": "b33624ced355f4fb1c444e153030aa6bf343bb91",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "c89302f7f120fd44c63d48977e489e6cc4a4a482",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
},
{
"product_id": "vibework",
"gitea_repo": "wooo/vibework",
"prod_environment_branch": "main",
"prod_branch_sha": "ac4df10f4ebebb365a723306440a9c3f80400ae3",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "ac4df10f4ebebb365a723306440a9c3f80400ae3",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
},
{
"product_id": "momo-pro-system",
"gitea_repo": "wooo/momo-pro-system",
"prod_environment_branch": "main",
"prod_branch_sha": "25120cbf21ba51affc94d0220ec87e607f59a833",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "25120cbf21ba51affc94d0220ec87e607f59a833",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
},
{
"product_id": "tsenyang-website",
"gitea_repo": "wooo/tsenyang-website",
"prod_environment_branch": "main",
"prod_branch_sha": "b369ed8cb6666e8ddaa2d31e1418a02794fdea9d",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "b369ed8cb6666e8ddaa2d31e1418a02794fdea9d",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
},
{
"product_id": "vtuber",
"gitea_repo": "wooo/vtuber",
"prod_environment_branch": "main",
"prod_branch_sha": "17f0c8c8ff441eba73b59b4872e840adde403bf0",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "17f0c8c8ff441eba73b59b4872e840adde403bf0",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "bitan-pharmacy",
"gitea_repo": "wooo/bitan-pharmacy",
"prod_environment_branch": "main",
"prod_branch_sha": "e122c8cbd9522999fd9844c2b63790fadcc89c20",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "e122c8cbd9522999fd9844c2b63790fadcc89c20",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "clawbot-openclaw",
"gitea_repo": "wooo/clawbot-v5",
"prod_environment_branch": "main",
"prod_branch_sha": "22074fbe4d6ec6c11c86f76139eea55756d1d160",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "22074fbe4d6ec6c11c86f76139eea55756d1d160",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
}
],
"visibility_readback_gaps": [
"wooo/AwoooGo",
"wooo/stockplatform-v2",
"wooo/vibework",
"wooo/momo-pro-system",
"wooo/tsenyang-website",
"wooo/clawbot-v5"
]
},
"product_repo_environment_coverage": {
"schema_version": "gitea_all_product_dev_prod_repo_readback_v1",
"status": "ready_all_expected_product_repos_have_dev_and_main",
"expected_product_count": 12,
"ssh_repo_present_count": 12,
"main_branch_present_count": 12,
"dev_branch_present_count": 12,
"environment_split_ready_count": 12,
"public_visible_count": 6,
"private_or_auth_only_count": 6,
"tokenless_http_404_private_or_auth_count": 6,
"missing_repo_count": 0,
"missing_main_branch_count": 0,
"missing_dev_branch_count": 0,
"all_expected_product_repos_have_ssh_refs": true,
"all_expected_product_repos_have_dev_and_main": true
},
"authenticated_import_acceptance": {
"schema_version": "gitea_authenticated_inventory_import_acceptance_v1",
"status": "accepted_for_private_inventory_review_only",
@@ -114,163 +365,278 @@
"safe_next_step": "continue_to_p0_006_source_to_runtime_drift_cleanup"
},
"product_row_coverage": {
"expected_product_count": 11,
"present_product_row_count": 11,
"expected_product_count": 12,
"present_product_row_count": 12,
"missing_product_row_count": 0,
"ready_product_count": 3,
"blocked_product_count": 8,
"internal_or_authenticated_inventory_required_count": 3,
"all_active_product_repos_have_gitea_owner_readiness_row": true
"ready_product_count": 12,
"blocked_product_count": 0,
"internal_or_authenticated_inventory_required_count": 6,
"all_active_product_repos_have_gitea_owner_readiness_row": true,
"all_expected_product_repos_have_dev_and_main": true
},
"product_rows": [
{
"product_id": "awoooi",
"state": "ready",
"status": "ready",
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/awoooi",
"prod_environment_branch": "main",
"prod_branch_sha": "b5f895804e38d50e213328b8ab840ecd0d095c6f",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "25889d4b8edcb83b6ec707c5eef3c21ae5d432b0",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"next_gate": "use codex-workspaces/awoooi-dev and branch from dev for tasks",
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "momo-pro",
"state": "ready",
"status": "ready",
"product_id": "ewoooc",
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/ewoooc",
"prod_environment_branch": "main",
"prod_branch_sha": "157f0f98be241ec25e7bd12aee293ef062bdbf71",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "157f0f98be241ec25e7bd12aee293ef062bdbf71",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"next_gate": "use this workspace for Codex tasks by branching from dev into codex/*; do not edit dev directly",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "awooogo",
"state": "ready",
"status": "ready",
"gitea_repo": "wooo/AwoooGo",
"remote_main_present": true,
"remote_dev_present": true,
"next_gate": "use this workspace for Codex tasks by branching from dev into codex/*; do not edit dev directly",
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "2026fifa",
"state": "blocked",
"status": "blocked_local_drift_review_required",
"gitea_repo": "",
"remote_main_present": false,
"remote_dev_present": false,
"next_gate": "build narrow drift review and owner pick list before any dev branch creation",
"blockers": [
"local_head_differs_from_gitea_main",
"diff_readback_timeout",
"production_branch_checked_out"
],
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/2026FIFAWorldCup",
"prod_environment_branch": "main",
"prod_branch_sha": "64cae96d0d7f0f34bfb5d39782063b522983085c",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "64cae96d0d7f0f34bfb5d39782063b522983085c",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "agent-bounty-protocol",
"state": "blocked",
"status": "blocked_local_drift_review_required",
"gitea_repo": "",
"remote_main_present": false,
"remote_dev_present": false,
"next_gate": "owner pick list for A2A/traffic/propose changes before dev branch creation",
"blockers": [
"local_head_differs_from_gitea_main",
"tracked_dirty_worktree",
"production_branch_checked_out"
],
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/agent-bounty-protocol",
"prod_environment_branch": "main",
"prod_branch_sha": "b7a733f44f4f645dd21a9b4a9075b89c4a324f64",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "b7a733f44f4f645dd21a9b4a9075b89c4a324f64",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "awooogo",
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/AwoooGo",
"prod_environment_branch": "main",
"prod_branch_sha": "6dcfc9acb415cd6203a4f042696d778505c65d1d",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "8471b376d97c1436d4612ece17f51ba0950f114d",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "stockplatform-v2",
"state": "blocked",
"status": "blocked_dirty_worktree_review_required",
"gitea_repo": "",
"remote_main_present": false,
"remote_dev_present": false,
"next_gate": "review dirty files and owner-selected include/exclude list before dev branch creation",
"blockers": [
"tracked_dirty_worktree",
"production_branch_checked_out"
],
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/stockplatform-v2",
"prod_environment_branch": "main",
"prod_branch_sha": "b33624ced355f4fb1c444e153030aa6bf343bb91",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "c89302f7f120fd44c63d48977e489e6cc4a4a482",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "vibework",
"state": "blocked",
"status": "blocked_local_drift_review_required",
"gitea_repo": "",
"remote_main_present": false,
"remote_dev_present": false,
"next_gate": "owner pick list for growth/admin/runtime changes before dev branch creation",
"blockers": [
"local_head_differs_from_gitea_main",
"tracked_dirty_worktree",
"production_branch_checked_out"
],
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/vibework",
"prod_environment_branch": "main",
"prod_branch_sha": "ac4df10f4ebebb365a723306440a9c3f80400ae3",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "ac4df10f4ebebb365a723306440a9c3f80400ae3",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "clawbot-openclaw",
"state": "blocked",
"status": "blocked_local_drift_review_required",
"gitea_repo": "",
"remote_main_present": false,
"remote_dev_present": false,
"next_gate": "review docker-compose and main.py drift before dev branch creation",
"blockers": [
"local_head_differs_from_gitea_main",
"tracked_dirty_worktree",
"production_branch_checked_out"
],
"owner_readiness_row_present": true
},
{
"product_id": "bitan-pharmacy",
"state": "blocked",
"status": "blocked_internal_inventory_and_dirty_review_required",
"gitea_repo": "",
"remote_main_present": false,
"remote_dev_present": false,
"next_gate": "owner export or authenticated inventory plus dirty review",
"blockers": [
"internal_repo_requires_owner_export_or_authenticated_inventory",
"dirty_worktree"
],
"product_id": "momo-pro-system",
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/momo-pro-system",
"prod_environment_branch": "main",
"prod_branch_sha": "25120cbf21ba51affc94d0220ec87e607f59a833",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "25120cbf21ba51affc94d0220ec87e607f59a833",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "tsenyang-website",
"state": "blocked",
"status": "blocked_internal_inventory_and_dirty_review_required",
"gitea_repo": "",
"remote_main_present": false,
"remote_dev_present": false,
"next_gate": "owner export or authenticated inventory plus dirty review",
"blockers": [
"internal_repo_requires_owner_export_or_authenticated_inventory",
"dirty_worktree"
],
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/tsenyang-website",
"prod_environment_branch": "main",
"prod_branch_sha": "b369ed8cb6666e8ddaa2d31e1418a02794fdea9d",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "b369ed8cb6666e8ddaa2d31e1418a02794fdea9d",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "vtuber",
"state": "blocked",
"status": "blocked_repository_inventory_repair_required",
"gitea_repo": "",
"remote_main_present": false,
"remote_dev_present": false,
"next_gate": "repair local repository inventory before any Gitea action",
"blockers": [
"remote_repository_not_found_or_unauthenticated",
"local_head_readback_abnormal",
"dirty_worktree"
],
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/vtuber",
"prod_environment_branch": "main",
"prod_branch_sha": "17f0c8c8ff441eba73b59b4872e840adde403bf0",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "17f0c8c8ff441eba73b59b4872e840adde403bf0",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "bitan-pharmacy",
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/bitan-pharmacy",
"prod_environment_branch": "main",
"prod_branch_sha": "e122c8cbd9522999fd9844c2b63790fadcc89c20",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "e122c8cbd9522999fd9844c2b63790fadcc89c20",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
},
{
"product_id": "clawbot-openclaw",
"state": "repo_environment_ready",
"status": "ready_dev_prod_branches_present",
"gitea_repo": "wooo/clawbot-v5",
"prod_environment_branch": "main",
"prod_branch_sha": "22074fbe4d6ec6c11c86f76139eea55756d1d160",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "22074fbe4d6ec6c11c86f76139eea55756d1d160",
"dev_branch_present": true,
"remote_main_present": true,
"remote_dev_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true,
"next_gate": "branch from dev for controlled development; deploy from main",
"blockers": [],
"owner_readiness_row_present": true
}
],
@@ -280,7 +646,8 @@
"github_lane_excluded_from_p0_blocker_count=true",
"gitea_repo_inventory.status=ok",
"gitea_repo_inventory.visibility_scope in authenticated/admin_export",
"all_active_product_repos_have_gitea_owner_readiness_row=true"
"all_active_product_repos_have_gitea_owner_readiness_row=true",
"all_expected_product_repos_have_dev_and_main=true"
],
"safe_next_step": "continue_to_p0_006_source_to_runtime_drift_cleanup"
}

View File

@@ -0,0 +1,230 @@
{
"schema_version": "gitea_all_product_dev_prod_repo_readback_v1",
"generated_at": "2026-07-03T10:38:00+08:00",
"source_control_authority": "gitea",
"scope": "all_known_product_repositories_dev_prod_branch_readback",
"status": "ready_all_expected_product_repos_have_dev_and_main",
"summary": {
"expected_product_count": 12,
"ssh_repo_present_count": 12,
"main_branch_present_count": 12,
"dev_branch_present_count": 12,
"environment_split_ready_count": 12,
"public_visible_count": 6,
"private_or_auth_only_count": 6,
"tokenless_http_404_private_or_auth_count": 6,
"missing_repo_count": 0,
"missing_main_branch_count": 0,
"missing_dev_branch_count": 0,
"all_expected_product_repos_have_ssh_refs": true,
"all_expected_product_repos_have_dev_and_main": true
},
"environment_contract": {
"prod_environment_branch": "main",
"dev_environment_branch": "dev",
"separate_environment_model": "branch_pair_per_product_repo",
"public_http_404_for_private_repo_is_visibility_or_auth_readback": true
},
"operation_boundaries": {
"ssh_refs_read_only": true,
"token_value_collection_allowed": false,
"secret_value_collection_allowed": false,
"gitea_api_write_allowed": false,
"gitea_repo_creation_allowed": false,
"gitea_refs_sync_allowed": false,
"gitea_visibility_change_allowed": false,
"github_api_allowed": false,
"github_cli_allowed": false,
"raw_session_or_sqlite_read_allowed": false
},
"products": [
{
"product_id": "awoooi",
"gitea_repo": "wooo/awoooi",
"prod_environment_branch": "main",
"prod_branch_sha": "b5f895804e38d50e213328b8ab840ecd0d095c6f",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "25889d4b8edcb83b6ec707c5eef3c21ae5d432b0",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "ewoooc",
"gitea_repo": "wooo/ewoooc",
"prod_environment_branch": "main",
"prod_branch_sha": "157f0f98be241ec25e7bd12aee293ef062bdbf71",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "157f0f98be241ec25e7bd12aee293ef062bdbf71",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "2026fifa",
"gitea_repo": "wooo/2026FIFAWorldCup",
"prod_environment_branch": "main",
"prod_branch_sha": "64cae96d0d7f0f34bfb5d39782063b522983085c",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "64cae96d0d7f0f34bfb5d39782063b522983085c",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "agent-bounty-protocol",
"gitea_repo": "wooo/agent-bounty-protocol",
"prod_environment_branch": "main",
"prod_branch_sha": "b7a733f44f4f645dd21a9b4a9075b89c4a324f64",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "b7a733f44f4f645dd21a9b4a9075b89c4a324f64",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "awooogo",
"gitea_repo": "wooo/AwoooGo",
"prod_environment_branch": "main",
"prod_branch_sha": "6dcfc9acb415cd6203a4f042696d778505c65d1d",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "8471b376d97c1436d4612ece17f51ba0950f114d",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
},
{
"product_id": "stockplatform-v2",
"gitea_repo": "wooo/stockplatform-v2",
"prod_environment_branch": "main",
"prod_branch_sha": "b33624ced355f4fb1c444e153030aa6bf343bb91",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "c89302f7f120fd44c63d48977e489e6cc4a4a482",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
},
{
"product_id": "vibework",
"gitea_repo": "wooo/vibework",
"prod_environment_branch": "main",
"prod_branch_sha": "ac4df10f4ebebb365a723306440a9c3f80400ae3",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "ac4df10f4ebebb365a723306440a9c3f80400ae3",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
},
{
"product_id": "momo-pro-system",
"gitea_repo": "wooo/momo-pro-system",
"prod_environment_branch": "main",
"prod_branch_sha": "25120cbf21ba51affc94d0220ec87e607f59a833",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "25120cbf21ba51affc94d0220ec87e607f59a833",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
},
{
"product_id": "tsenyang-website",
"gitea_repo": "wooo/tsenyang-website",
"prod_environment_branch": "main",
"prod_branch_sha": "b369ed8cb6666e8ddaa2d31e1418a02794fdea9d",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "b369ed8cb6666e8ddaa2d31e1418a02794fdea9d",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
},
{
"product_id": "vtuber",
"gitea_repo": "wooo/vtuber",
"prod_environment_branch": "main",
"prod_branch_sha": "17f0c8c8ff441eba73b59b4872e840adde403bf0",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "17f0c8c8ff441eba73b59b4872e840adde403bf0",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "bitan-pharmacy",
"gitea_repo": "wooo/bitan-pharmacy",
"prod_environment_branch": "main",
"prod_branch_sha": "e122c8cbd9522999fd9844c2b63790fadcc89c20",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "e122c8cbd9522999fd9844c2b63790fadcc89c20",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 200,
"public_ui_visible": true,
"visibility_readback": "public_tokenless",
"environment_split_ready": true
},
{
"product_id": "clawbot-openclaw",
"gitea_repo": "wooo/clawbot-v5",
"prod_environment_branch": "main",
"prod_branch_sha": "22074fbe4d6ec6c11c86f76139eea55756d1d160",
"prod_branch_present": true,
"dev_environment_branch": "dev",
"dev_branch_sha": "22074fbe4d6ec6c11c86f76139eea55756d1d160",
"dev_branch_present": true,
"ssh_refs_readable": true,
"tokenless_http_status": 404,
"public_ui_visible": false,
"visibility_readback": "private_or_auth_only",
"environment_split_ready": true
}
],
"visibility_readback_gaps": [
"wooo/AwoooGo",
"wooo/stockplatform-v2",
"wooo/vibework",
"wooo/momo-pro-system",
"wooo/tsenyang-website",
"wooo/clawbot-v5"
]
}