docs(ops): add VTuber dev baseline decision package [skip ci]
This commit is contained in:
@@ -1,3 +1,29 @@
|
||||
## 2026-06-24|VTuber dev baseline owner decision package
|
||||
|
||||
**背景**:Blocked products pick list 將 VTuber 排在最後一個候選,因為它不是一般 dirty review,而是 repository identity / HEAD 異常。本輪只讀 `/Users/ogt/VTuber`,不 commit、不 branch、不 push、不建立 Gitea repo、不讀 env 或 secret value。
|
||||
|
||||
**只讀 readback**:
|
||||
- local branch:`main`。
|
||||
- local HEAD:invalid;`git rev-parse HEAD` 回 `fatal: ambiguous argument 'HEAD'`。
|
||||
- Gitea `wooo/vtuber`:not found。
|
||||
- tracked modified:`0`。
|
||||
- tracked deleted:`0`。
|
||||
- staged additions:`2`,為 `apps/admin/public/.gitkeep`、`apps/web/public/.gitkeep`。
|
||||
- untracked files:`84`。
|
||||
- untracked porcelain entries:`30`。
|
||||
- env-like paths observed but not read:`.env.example`、`apps/admin/.env.example`、`apps/api/.env.example`、`apps/web/.env.example`、`deploy/.env.prod`、`deploy/.env.prod.example`。
|
||||
- default quarantine:`deploy/.env.prod`、`apps/web/tsconfig.tsbuildinfo`。
|
||||
|
||||
**文件**:
|
||||
- `docs/operations/vtuber-dev-baseline-owner-decision.snapshot.json`
|
||||
- `docs/operations/VTUBER-DEV-BASELINE-OWNER-DECISION-2026-06-24.md`
|
||||
|
||||
**判定**:VTuber 不能進入 `dev` branch 流程;必須先做 repository identity repair,決定是新 repo bootstrap、找正確既有 repo,或先修 local git history / initial commit。
|
||||
|
||||
**下一步**:建立 repo bootstrap owner package;owner 明確接受 repo identity、source include list、staged `.gitkeep` 處理、VRM / GLB model asset policy、Nginx / compose / deploy script scope 後,才可建立 Gitea repo 或遠端 branch。
|
||||
|
||||
**邊界**:沒有產品 repo 寫入、沒有 remote write、沒有 runtime write、沒有 secret collection、沒有讀 `deploy/.env.prod`、沒有建 repo;Mac Mini / MacBook Pro 仍不得把 VTuber 視為雙機可開發 ready。
|
||||
|
||||
## 2026-06-24|Bitan Pharmacy dev baseline owner decision package
|
||||
|
||||
**背景**:Blocked products pick list 將 Bitan 排在第七候選,且使用者回報 `[Bitan Pharmacy] Public content cleanliness check failed` 類告警。本輪只讀 `/Users/ogt/bitan-pharmacy`,先把 internal repo / public content evidence / dirty source 分桶;沒有 commit、branch、push、讀 `.env`、讀 `.npmrc` 或讀 secret value。
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
# VTuber Dev Baseline Owner Decision
|
||||
|
||||
- generated_at: `2026-06-24T14:08:41+08:00`
|
||||
- product_id: `vtuber`
|
||||
- local_path: `/Users/ogt/VTuber`
|
||||
- status: `blocked, repository identity repair required`
|
||||
|
||||
## Readback
|
||||
|
||||
| Gate | Result |
|
||||
|------|--------|
|
||||
| local branch | `main` |
|
||||
| local HEAD | invalid / no commit HEAD |
|
||||
| local HEAD error | `fatal: ambiguous argument 'HEAD'` |
|
||||
| Gitea repo | `wooo/vtuber` not found |
|
||||
| tracked modified | `0` |
|
||||
| tracked deleted | `0` |
|
||||
| staged additions | `2` |
|
||||
| untracked files | `84` |
|
||||
| untracked porcelain entries | `30` |
|
||||
|
||||
Staged additions already present in local repo:
|
||||
|
||||
- `apps/admin/public/.gitkeep`
|
||||
- `apps/web/public/.gitkeep`
|
||||
|
||||
## Untracked 分桶
|
||||
|
||||
| Bucket | Count | 判定 |
|
||||
|--------|------:|------|
|
||||
| `apps/web` | `33` | source / asset candidates |
|
||||
| `apps/admin` | `15` | source candidates |
|
||||
| `apps/api` | `13` | source candidates |
|
||||
| `packages/db` | `5` | DB schema / seed candidates |
|
||||
| `packages/ui` | `2` | UI package candidates |
|
||||
| `deploy` | `4` plus env-like files | deploy / Nginx / compose candidates, env quarantine required |
|
||||
| `scripts` | `3` | ops candidates |
|
||||
| `docs` | `2` | product docs candidates |
|
||||
| root | `7` | repo bootstrap candidates |
|
||||
|
||||
Env-like paths observed but not read:
|
||||
|
||||
- `.env.example`
|
||||
- `apps/admin/.env.example`
|
||||
- `apps/api/.env.example`
|
||||
- `apps/web/.env.example`
|
||||
- `deploy/.env.prod`
|
||||
- `deploy/.env.prod.example`
|
||||
|
||||
Quarantined by default:
|
||||
|
||||
- `apps/web/tsconfig.tsbuildinfo`
|
||||
- `deploy/.env.prod`
|
||||
|
||||
## 判定
|
||||
|
||||
VTuber 不能進入 Gitea `dev` branch 流程。這不是一般 dirty worktree;它目前沒有有效 HEAD,遠端 `wooo/vtuber` 也不存在。這表示要先做 repo identity 決策:
|
||||
|
||||
1. 這是新產品 repo bootstrap。
|
||||
2. 或者本地資料夾應該對應到另一個既有 Gitea repo。
|
||||
3. 或者需要先修 local git history / initial commit。
|
||||
|
||||
在決策前,不可把 84 個 untracked files 直接推成產品基準。
|
||||
|
||||
## Owner Decision
|
||||
|
||||
需要 owner 回覆:
|
||||
|
||||
1. VTuber 是否要建立全新 Gitea repo,或對應另一個既有 repo。
|
||||
2. 兩個已 staged `.gitkeep` 要保留 staged、提交到初始 baseline,還是重置後重新 bootstrap。
|
||||
3. `deploy/.env.prod` 一律不可讀、不可複製、不可進 source control。
|
||||
4. env example 檔只能 metadata-only review,確認不含真實 secret 後才可納入。
|
||||
5. VRM / GLB model assets 是否屬於 source artifact。
|
||||
6. Nginx / compose / deploy scripts 是否屬於初始 baseline。
|
||||
7. owner 接受 repo identity 與 source include list 後,才可建立 Gitea repo / branch / MacBook workspace。
|
||||
|
||||
## 安全邊界
|
||||
|
||||
- 未讀 env 檔內容。
|
||||
- 未讀 secret value。
|
||||
- 未修改 VTuber repo。
|
||||
- 未建立 branch、commit、repo 或 push。
|
||||
- 未同步 raw `.git`、runtime volume 或 raw Codex conversations。
|
||||
- 未執行 deploy、Nginx、Docker、production smoke 或 runtime write。
|
||||
151
docs/operations/vtuber-dev-baseline-owner-decision.snapshot.json
Normal file
151
docs/operations/vtuber-dev-baseline-owner-decision.snapshot.json
Normal file
@@ -0,0 +1,151 @@
|
||||
{
|
||||
"schema_version": "vtuber_dev_baseline_owner_decision_v1",
|
||||
"generated_at": "2026-06-24T14:08:41+08:00",
|
||||
"product_id": "vtuber",
|
||||
"local_path": "/Users/ogt/VTuber",
|
||||
"gitea_repo": "wooo/vtuber",
|
||||
"remote_refs": {
|
||||
"main": "",
|
||||
"dev": "",
|
||||
"status": "repository_not_found"
|
||||
},
|
||||
"local_readback": {
|
||||
"branch": "main",
|
||||
"head": "invalid_unborn_or_no_commit_head",
|
||||
"head_error": "fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree",
|
||||
"tracked_modified_count": 0,
|
||||
"tracked_deleted_count": 0,
|
||||
"staged_addition_count": 2,
|
||||
"untracked_file_count": 84,
|
||||
"untracked_porcelain_entry_count": 30,
|
||||
"status": "repository_identity_repair_required"
|
||||
},
|
||||
"remote_readback": {
|
||||
"ls_remote": "failed_repository_not_found",
|
||||
"error_summary": "Cannot find repository: wooo/vtuber"
|
||||
},
|
||||
"staged_additions_seen_but_not_modified": [
|
||||
"apps/admin/public/.gitkeep",
|
||||
"apps/web/public/.gitkeep"
|
||||
],
|
||||
"untracked_classification": {
|
||||
"apps_web_count": 33,
|
||||
"apps_admin_count": 15,
|
||||
"apps_api_count": 13,
|
||||
"packages_db_count": 5,
|
||||
"packages_ui_count": 2,
|
||||
"deploy_count": 4,
|
||||
"scripts_count": 3,
|
||||
"docs_count": 2,
|
||||
"root_count": 7
|
||||
},
|
||||
"untracked_source_groups": {
|
||||
"root": [
|
||||
".env.example",
|
||||
".gitignore",
|
||||
"README.md",
|
||||
"package.json",
|
||||
"test-browser.js",
|
||||
"test_glb.js",
|
||||
"tsconfig.base.json"
|
||||
],
|
||||
"apps_admin": [
|
||||
"apps/admin/.env.example",
|
||||
"apps/admin/.eslintrc.json",
|
||||
"apps/admin/Dockerfile",
|
||||
"apps/admin/next-env.d.ts",
|
||||
"apps/admin/next.config.js",
|
||||
"apps/admin/package.json",
|
||||
"apps/admin/src/app/inventory/page.tsx",
|
||||
"apps/admin/src/app/operations/page.tsx",
|
||||
"apps/admin/src/app/orders/page.tsx",
|
||||
"apps/admin/src/app/products/page.tsx",
|
||||
"apps/admin/src/lib/api.ts",
|
||||
"apps/admin/tsconfig.json"
|
||||
],
|
||||
"apps_api": [
|
||||
"apps/api/.env.example",
|
||||
"apps/api/.eslintrc.json",
|
||||
"apps/api/Dockerfile",
|
||||
"apps/api/nest-cli.json",
|
||||
"apps/api/package.json",
|
||||
"apps/api/src/app.controller.ts",
|
||||
"apps/api/src/app.module.ts",
|
||||
"apps/api/src/app.service.ts",
|
||||
"apps/api/src/database/database.module.ts",
|
||||
"apps/api/src/database/prisma.service.ts",
|
||||
"apps/api/src/main.ts",
|
||||
"apps/api/tsconfig.build.json",
|
||||
"apps/api/tsconfig.json"
|
||||
],
|
||||
"apps_web": [
|
||||
"apps/web/.env.example",
|
||||
"apps/web/.eslintrc.json",
|
||||
"apps/web/Dockerfile",
|
||||
"apps/web/next-env.d.ts",
|
||||
"apps/web/next.config.js",
|
||||
"apps/web/package.json",
|
||||
"apps/web/public/models/realistic-host.glb",
|
||||
"apps/web/public/models/xiaoyai.vrm",
|
||||
"apps/web/src/app/[locale]/live/demo/page.tsx",
|
||||
"apps/web/src/app/cart/page.tsx",
|
||||
"apps/web/src/app/checkout/page.tsx",
|
||||
"apps/web/src/app/live/page.tsx",
|
||||
"apps/web/src/app/products/[slug]/page.tsx",
|
||||
"apps/web/src/components/virtual-host.tsx",
|
||||
"apps/web/src/lib/api.ts",
|
||||
"apps/web/src/middleware.ts",
|
||||
"apps/web/tsconfig.json",
|
||||
"apps/web/tsconfig.tsbuildinfo"
|
||||
],
|
||||
"packages_deploy_and_docs": [
|
||||
"deploy/apply-nginx-110-live-fallback.sh",
|
||||
"deploy/deploy-prod.sh",
|
||||
"deploy/docker-compose.prod.yml",
|
||||
"deploy/vtuber-nginx-110-live-fallback.conf",
|
||||
"deploy/.env.prod",
|
||||
"deploy/.env.prod.example",
|
||||
"docs/PRD.md",
|
||||
"docs/TASKS.md",
|
||||
"packages/db/prisma/schema.prisma",
|
||||
"packages/db/prisma/seed.ts",
|
||||
"packages/db/src/index.ts",
|
||||
"packages/ui/src/index.ts",
|
||||
"scripts/check-vtuber-offline-110.sh",
|
||||
"scripts/deploy-and-verify-vtuber110.sh",
|
||||
"scripts/verify-live-domain-110.sh"
|
||||
]
|
||||
},
|
||||
"excluded_or_quarantined_by_default": [
|
||||
"apps/web/tsconfig.tsbuildinfo",
|
||||
"deploy/.env.prod"
|
||||
],
|
||||
"secret_or_env_paths_seen_but_not_read": [
|
||||
".env.example",
|
||||
"apps/admin/.env.example",
|
||||
"apps/api/.env.example",
|
||||
"apps/web/.env.example",
|
||||
"deploy/.env.prod",
|
||||
"deploy/.env.prod.example"
|
||||
],
|
||||
"risk_assessment": {
|
||||
"secret_value_collected": false,
|
||||
"env_file_read": false,
|
||||
"runtime_write_performed": false,
|
||||
"product_repo_write_performed": false,
|
||||
"remote_write_performed": false,
|
||||
"risk_level": "blocked_repository_identity_repair_required",
|
||||
"reason": "The local repository has no valid HEAD, two staged .gitkeep files, 84 untracked files, and the expected Gitea repository wooo/vtuber is not found. This must be treated as repo bootstrap or repo identity repair before any source control action."
|
||||
},
|
||||
"owner_decision_required": [
|
||||
"Decide whether VTuber is a new repository bootstrap or should map to another existing Gitea repository.",
|
||||
"Approve creating or identifying the correct Gitea repository before any branch action.",
|
||||
"Approve whether the two staged .gitkeep files should remain staged, be committed, or be reset in a new repo bootstrap flow.",
|
||||
"Confirm deploy/.env.prod remains excluded and is not read or copied.",
|
||||
"Confirm env example files are metadata-only and contain no real secrets before source control inclusion.",
|
||||
"Approve or reject VRM / GLB model assets as source artifacts.",
|
||||
"Approve or reject Nginx / compose / deploy scripts as part of the initial baseline.",
|
||||
"Approve remote main / dev branch creation only after repository identity and initial source include list are accepted."
|
||||
],
|
||||
"recommended_next_step": "Resolve repository identity first, then create a bootstrap owner package before any Gitea repository creation, branch creation, or MacBook workspace bootstrap."
|
||||
}
|
||||
Reference in New Issue
Block a user