diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 544979b6..86cfa2e3 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,32 @@ +## 2026-06-24|Blocked products owner pick list readback + +**背景**:AwoooGo MacBook auth blocker closeout 後,接續盤點剩餘 8 個尚未能轉成 Gitea `dev` workspace 的產品。本輪只讀產品 repo,只看 branch / HEAD / remote refs / dirty count / untracked count / path sample,不 fetch、不 pull、不 push、不建立 `dev`、不複製 raw `.git`、不讀 `.env` 或 secret value。 + +**Readback**: +- Blocked products `8`,ready for remote dev branch creation `0`。 +- Remote `dev` missing:2026FIFA、Agent Bounty、StockPlatform v2、VibeWork、ClawBot / OpenClaw。 +- Internal or missing repo inventory:Bitan、Tsenyang Website、VTuber。 +- Smallest next candidate:ClawBot / OpenClaw,tracked dirty `2` (`docker-compose.yml`, `main.py`),untracked `0`。 +- Largest unsafe candidate:StockPlatform v2,tracked dirty `60`,untracked `3800`,shortstat `60 files changed, 8355 insertions(+), 3173 deletions(-)`。 +- Tsenyang dirty surface is small but internal repo inventory is missing: tracked dirty `6`, untracked `2` presentation outputs。 +- VTuber remains repository identity repair first: Gitea `wooo/vtuber` returns repository not found and local HEAD readback is abnormal. + +**新增文件 / snapshot**: +- `docs/operations/codex-gitea-blocked-products-owner-pick-list.snapshot.json` +- `docs/operations/CODEX-GITEA-BLOCKED-PRODUCTS-OWNER-PICK-LIST-2026-06-24.md` + +**下一步順序**: +1. ClawBot / OpenClaw two-file drift owner decision。 +2. Tsenyang Website internal inventory + small dirty review。 +3. Agent Bounty source vs backup archive split。 +4. 2026FIFA narrow analytics / web route drift review。 +5. VibeWork packages / MCP / brand asset pick list。 +6. StockPlatform v2 generated-vs-source classification。 +7. Bitan owner export + public-content evidence review。 +8. VTuber repository identity repair。 + +**邊界**:本輪沒有建立任何遠端 `dev` branch,沒有 product repo write,沒有 remote write,沒有 secret collection,沒有 runtime action。不能把這份 pick list 當作 owner approval。 + ## 2026-06-24|MacBook Pro AwoooGo Gitea SSH 與 dev workspace readback **背景**:上一輪 MacBook safe artifact sync 已清除 handoff artifact blocker,但 AwoooGo 在 MacBook 端仍因 Gitea auth / visibility gate 無法 clone。本輪只處理 MacBook 自己的 Gitea SSH public key 授權與 AwoooGo dev workspace,不複製 Mac Mini private key,不使用或保存密碼 / token,不同步 raw Codex App DB / auth / conversations / sessions、`.env`、runtime volume 或 raw `.git`。 diff --git a/docs/operations/CODEX-GITEA-BLOCKED-PRODUCTS-OWNER-PICK-LIST-2026-06-24.md b/docs/operations/CODEX-GITEA-BLOCKED-PRODUCTS-OWNER-PICK-LIST-2026-06-24.md new file mode 100644 index 00000000..191439b9 --- /dev/null +++ b/docs/operations/CODEX-GITEA-BLOCKED-PRODUCTS-OWNER-PICK-LIST-2026-06-24.md @@ -0,0 +1,48 @@ +# Codex Gitea Blocked Products Owner Pick List + +- generated_at: `2026-06-24T13:40:00+08:00` +- scope: remaining products that are not yet safe to convert into Gitea `dev` workspaces +- blocked_products: `8` +- ready_for_remote_dev_branch_creation: `0` + +## 結論 + +目前不能把剩餘 8 個產品直接建立成 Gitea `dev`。阻塞不是單純缺分支,而是本機工作樹含 drift、dirty、untracked、internal repo inventory 或 repository identity 問題。直接推會有三個風險: + +- 把舊版本當最新版本。 +- 把未審核刪檔 / untracked 產物 / 壓縮包 / log 混進 source control。 +- 把 internal repo 或錯 repo 當成產品主線。 + +## 建議順序 + +| Order | Product | Why | +|------:|---------|-----| +| 1 | ClawBot / OpenClaw | 只有 2 個 tracked file drift,最小可審核面。 | +| 2 | Tsenyang Website | internal repo 需 inventory,但 dirty 面小。 | +| 3 | Agent Bounty | A2A / treasury surface 明確,但有 untracked source 和 backup archives 需要分離。 | +| 4 | 2026FIFA | local HEAD 與 Gitea main 不同,且 analytics / web route untracked 需要 path-based review。 | +| 5 | VibeWork | monorepo packages / MCP / brand assets 需要 owner pick。 | +| 6 | StockPlatform v2 | 60 tracked dirty + 3800 untracked,必須先分類 generated vs source。 | +| 7 | Bitan | internal repo + 大 dirty 面 + public-content evidence,需要先 owner export。 | +| 8 | VTuber | repository identity / HEAD 異常,先修 inventory。 | + +## Product Gates + +| Product | Current state | Owner decision before dev | +|---------|---------------|---------------------------| +| `clawbot-openclaw` | local head differs from Gitea main; dirty `docker-compose.yml`, `main.py`; untracked `0` | Review two-file drift, choose local head or Gitea main as baseline, approve `dev`. | +| `tsenyang-website` | internal repo; tracked dirty `6`; untracked `2` presentation outputs | Provide authenticated inventory/export, decide whether OG assets and presentation outputs are source. | +| `agent-bounty-protocol` | local head differs; untracked `19`; includes A2A / treasury routes and backup archives | Separate source from `sync-backup-*.tgz`, owner-pick included files, approve baseline. | +| `2026fifa` | local head differs; status/diff timeout; untracked `38` | Run narrow analytics / web route drift review, owner-pick local changes, approve baseline. | +| `vibework` | local head differs; status/diff timeout; untracked `97` | Bucket docs / packages / MCP / public brand assets and choose source baseline. | +| `stockplatform-v2` | local head equals Gitea main; tracked dirty `60`; untracked `3800` | Classify source / migration / asset / generated outputs before any remote branch. | +| `bitan-pharmacy` | internal repo; tracked dirty `64`; untracked `252` | Provide owner export, separate logs/generated outputs, review public-content evidence. | +| `vtuber` | Gitea repo not found; local head readback abnormal; untracked `84` | Repair repository identity before any Gitea action. | + +## Hard Gates + +- No remote `dev` branch creation in this stage. +- No product repo write in this stage. +- No raw `.git` copy. +- No `.env`, runtime volume, raw Codex App DB, raw conversations, or secret value sync. +- No source-control inclusion of backup archives, logs, generated outputs, or presentation exports unless owner marks them as release artifacts. diff --git a/docs/operations/codex-gitea-blocked-products-owner-pick-list.snapshot.json b/docs/operations/codex-gitea-blocked-products-owner-pick-list.snapshot.json new file mode 100644 index 00000000..12e6b463 --- /dev/null +++ b/docs/operations/codex-gitea-blocked-products-owner-pick-list.snapshot.json @@ -0,0 +1,241 @@ +{ + "schema_version": "codex_gitea_blocked_products_owner_pick_list_v1", + "generated_at": "2026-06-24T13:40:00+08:00", + "scope": "Remaining products that are not yet safe to convert into Gitea dev workspaces", + "summary": { + "blocked_product_count": 8, + "remote_dev_missing_count": 5, + "internal_or_missing_repo_count": 3, + "local_head_drift_count": 4, + "dirty_or_untracked_count": 8, + "ready_for_remote_dev_branch_creation_count": 0, + "remote_write_performed": false, + "local_product_write_performed": false, + "secret_values_collected": false, + "raw_git_sync_allowed": false, + "raw_conversation_sync_allowed": false, + "env_or_runtime_volume_sync_allowed": false + }, + "products": [ + { + "product_id": "2026fifa", + "priority": "P1", + "risk_class": "local_head_drift_and_heavy_status", + "local_path": "/Users/ogt/Documents/2026FIFAWorldCup", + "local_branch": "main", + "local_head": "118954e781b97843fe4457731951bc0fcaecd402", + "gitea_repo": "wooo/2026FIFAWorldCup", + "remote_main": "f26def598fe58562067170dc3cc4c2521933846a", + "remote_dev": "", + "tracked_status": "timeout", + "untracked_count": 38, + "diff_shortstat": "timeout", + "sample_paths": [ + "docs/crawler-source-policy.md", + "docs/fifa-official-data-seed-2026-06-14.md", + "platform/backend/app/analytics/agent_review_worker.py", + "platform/web/app/agent-verification/page.tsx", + "platform/web/app/api/analytics/source-health/route.ts" + ], + "owner_decision_required": [ + "accept_or_reject_gitea_main_as_dev_baseline", + "decide_whether_local_untracked_analytics_and_web_routes_are_product_changes", + "approve_remote_dev_branch_creation_only_after_pick_list" + ], + "recommended_next_gate": "Build a narrow path-based drift review for analytics / web route additions before any dev branch creation." + }, + { + "product_id": "agent-bounty-protocol", + "priority": "P1", + "risk_class": "local_head_drift_and_untracked_product_surface", + "local_path": "/Users/ogt/Documents/agent-bounty-protocol", + "local_branch": "main", + "local_head": "0601df8bd9c0aaedb9ce3a226a6f1aeca645ca0a", + "gitea_repo": "wooo/agent-bounty-protocol", + "remote_main": "b7a733f44f4f645dd21a9b4a9075b89c4a324f64", + "remote_dev": "", + "tracked_status": "timeout", + "untracked_count": 19, + "diff_shortstat": "timeout", + "sample_paths": [ + "apps/web/src/app/agents/connect/actions.ts", + "apps/web/src/app/api/a2a/agents/connect/route.ts", + "apps/web/src/app/api/admin/treasury/usdc-balance/route.ts", + "apps/web/src/lib/a2a-agent-connect.ts", + "sync-backup-a2a-campaign-kit-20260611183651.tgz" + ], + "owner_decision_required": [ + "decide_whether_a2a_and_treasury_untracked_files_are_latest_product_source", + "exclude_sync_backup_archives_from_source_control_unless_owner_marks_them_as_release_artifacts", + "approve_dev_branch_baseline_after_pick_list" + ], + "recommended_next_gate": "Separate source files from backup archives, then create an owner-selected include / exclude list." + }, + { + "product_id": "stockplatform-v2", + "priority": "P1", + "risk_class": "large_dirty_worktree", + "local_path": "/Users/ogt/stockplatform-v2", + "local_branch": "main", + "local_head": "1ef097e148ff6645e608fe5823aff9f038314512", + "gitea_repo": "wooo/stockplatform-v2", + "remote_main": "1ef097e148ff6645e608fe5823aff9f038314512", + "remote_dev": "", + "tracked_dirty_count": 60, + "untracked_count": 3800, + "diff_shortstat": "60 files changed, 8355 insertions(+), 3173 deletions(-)", + "sample_paths": [ + "apps/admin/src/app/admin-dashboard.tsx", + "apps/api/app/api/routes/recommendations.py", + "apps/api/app/main.py", + "apps/admin/src/app/agents/page.tsx", + "apps/api/migrations/versions/20260613_0035_notification_action_audit_trail.py" + ], + "owner_decision_required": [ + "classify_3800_untracked_paths_before_source_control", + "separate_generated_assets_from_source", + "approve_stock_dev_branch_only_after_dirty_review" + ], + "recommended_next_gate": "Run a path-classification inventory that buckets source / migration / asset / generated outputs before any remote branch write." + }, + { + "product_id": "vibework", + "priority": "P1", + "risk_class": "local_head_drift_and_large_untracked_product_surface", + "local_path": "/Users/ogt/Documents/VibeWork", + "local_branch": "main", + "local_head": "48275cc52be79107e887147d3fe10310a887afe9", + "gitea_repo": "wooo/vibework", + "remote_main": "76a4ee15026af278a3660ad4b4547e9308b107be", + "remote_dev": "", + "tracked_status": "timeout", + "untracked_count": 97, + "diff_shortstat": "timeout", + "sample_paths": [ + "docs/PHASE_1_COMMERCIAL_BATTLE_PLAN.md", + "packages/contracts/src/index.ts", + "packages/mcp-server/src/index.ts", + "pnpm-workspace.yaml", + "public/brand/vibework-logo-full.svg" + ], + "owner_decision_required": [ + "decide_whether_local_monorepo_packages_are_latest_source", + "review_brand_assets_and_docs_before_source_control", + "approve_dev_branch_after_pick_list" + ], + "recommended_next_gate": "Bucket docs / packages / public brand assets, then decide which become the Gitea dev baseline." + }, + { + "product_id": "clawbot-openclaw", + "priority": "P1", + "risk_class": "small_tracked_drift", + "local_path": "/Users/ogt/clawbot-v5", + "local_branch": "main", + "local_head": "f4b84d730ae0ef2cb2fb5cc49b4eb585b10246e2", + "gitea_repo": "wooo/clawbot-v5", + "remote_main": "22074fbe4d6ec6c11c86f76139eea55756d1d160", + "remote_dev": "", + "tracked_dirty_count": 2, + "untracked_count": 0, + "diff_shortstat": "2 files changed, 9 insertions(+), 1 deletion(-)", + "sample_paths": [ + "docker-compose.yml", + "main.py" + ], + "owner_decision_required": [ + "review_docker_compose_and_main_py_drift", + "decide_whether_local_head_or_gitea_main_is_dev_baseline", + "approve_dev_branch_creation" + ], + "recommended_next_gate": "This is the smallest next candidate: inspect two tracked files and create a precise owner decision record." + }, + { + "product_id": "bitan-pharmacy", + "priority": "P2", + "risk_class": "internal_repo_large_dirty_worktree", + "local_path": "/Users/ogt/bitan-pharmacy", + "local_branch": "main", + "local_head": "e122c8cbd9522999fd9844c2b63790fadcc89c20", + "gitea_repo": "internal:bitan-pharmacy", + "remote_main": "", + "remote_dev": "", + "tracked_dirty_count": 64, + "untracked_count": 252, + "diff_shortstat": "64 files changed, 4069 insertions(+), 665 deletions(-)", + "sample_paths": [ + "messages/zh-TW.json", + "next.config.ts", + "src/app/admin/layout.tsx", + "scripts/deploy-production-safe.sh", + "logs/public-content-cleanliness.latest.json" + ], + "owner_decision_required": [ + "provide_authenticated_gitea_inventory_or_owner_export", + "separate_logs_and_generated_outputs_from_source", + "review_public_content_cleanliness_evidence_before_dev_branch" + ], + "recommended_next_gate": "Resolve internal repo inventory first, then run dirty review." + }, + { + "product_id": "tsenyang-website", + "priority": "P2", + "risk_class": "internal_repo_small_dirty_worktree", + "local_path": "/Users/ogt/tsenyang-website", + "local_branch": "main", + "local_head": "b369ed8cb6666e8ddaa2d31e1418a02794fdea9d", + "gitea_repo": "internal:tsenyang-website", + "remote_main": "", + "remote_dev": "", + "tracked_dirty_count": 6, + "untracked_count": 2, + "diff_shortstat": "6 files changed, 163 insertions(+), 63 deletions(-)", + "sample_paths": [ + "public/og/taiwan-ai-agent-checklist.png", + "public/og/taiwan-ai-agent-webinar.svg", + "outputs/manual-20260605-ai-agent-deck-v2/presentations/tsenyang-ai-agent-proposal-fixed/output/TsenYang_AI_Agent_Proposal_V2_Fixed_20260605.pptx" + ], + "owner_decision_required": [ + "provide_authenticated_gitea_inventory_or_owner_export", + "decide_whether_presentation_outputs_belong_in_source_control", + "approve_dev_branch_after_small_dirty_review" + ], + "recommended_next_gate": "Small candidate after internal repo inventory: review OG assets and presentation outputs." + }, + { + "product_id": "vtuber", + "priority": "P3", + "risk_class": "repository_inventory_repair_required", + "local_path": "/Users/ogt/VTuber", + "local_branch": "main", + "local_head": "HEAD", + "gitea_repo": "wooo/vtuber", + "remote_error": "remote: Repository not found", + "tracked_dirty_count": 2, + "untracked_count": 84, + "diff_shortstat": "", + "sample_paths": [ + "apps/admin/public/.gitkeep", + "apps/web/public/.gitkeep", + ".env.example", + "README.md", + "apps/api/package.json" + ], + "owner_decision_required": [ + "repair_local_HEAD_or_confirm_new_repo_bootstrap", + "create_or_identify_correct_gitea_repository", + "exclude_env_and_generated_outputs_before_source_control" + ], + "recommended_next_gate": "Repair repository identity before any Gitea action." + } + ], + "recommended_execution_order": [ + "clawbot-openclaw", + "tsenyang-website", + "agent-bounty-protocol", + "2026fifa", + "vibework", + "stockplatform-v2", + "bitan-pharmacy", + "vtuber" + ] +}