docs(ops): add VTuber dev baseline decision package [skip ci]

This commit is contained in:
Your Name
2026-06-24 14:10:54 +08:00
parent 1b1686deba
commit 6374370b59
3 changed files with 261 additions and 0 deletions

View File

@@ -1,3 +1,29 @@
## 2026-06-24VTuber 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 HEADinvalid`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 packageowner 明確接受 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`、沒有建 repoMac Mini / MacBook Pro 仍不得把 VTuber 視為雙機可開發 ready。
## 2026-06-24Bitan 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。

View File

@@ -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。

View 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."
}