docs(ops): add blocked products owner pick list [skip ci]
This commit is contained in:
@@ -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`。
|
||||
|
||||
@@ -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.
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user