281 lines
12 KiB
JSON
281 lines
12 KiB
JSON
{
|
|
"schema_version": "vibework_dev_baseline_owner_decision_v1",
|
|
"generated_at": "2026-06-24T13:58:34+08:00",
|
|
"product_id": "vibework",
|
|
"local_path": "/Users/ogt/Documents/VibeWork",
|
|
"gitea_repo": "wooo/vibework",
|
|
"remote_refs": {
|
|
"main": "76a4ee15026af278a3660ad4b4547e9308b107be",
|
|
"dev": ""
|
|
},
|
|
"local_readback": {
|
|
"branch": "main",
|
|
"head": "48275cc52be79107e887147d3fe10310a887afe9",
|
|
"tracked_modified_count": 105,
|
|
"tracked_deleted_count": 0,
|
|
"untracked_count": 97,
|
|
"diff_shortstat": "timeout_interrupted_after_30s",
|
|
"diff_check": "failed_targeted_docs_phase_0_trailing_whitespace",
|
|
"status": "high_risk_owner_pick_required"
|
|
},
|
|
"tracked_modified_groups": {
|
|
"runtime_and_deploy": [
|
|
".env.production.example",
|
|
".gitignore",
|
|
"Dockerfile",
|
|
"deploy/nginx/vibework.wooo.work.conf",
|
|
"docker-compose.production.yml",
|
|
"package.json",
|
|
"pnpm-lock.yaml",
|
|
"prisma/schema.prisma",
|
|
"tailwind.config.ts",
|
|
"tsconfig.json"
|
|
],
|
|
"docs": [
|
|
"docs/API_CONTRACT_DRAFT.md",
|
|
"docs/DEPLOYMENT_STRATEGY.md",
|
|
"docs/DESIGN_REFERENCE_NOTES.md",
|
|
"docs/PHASE_0_IMPLEMENTATION_PLAN.md",
|
|
"docs/PHASE_2_API_CONTRACT.md",
|
|
"docs/PHASE_2_PLANNING.md",
|
|
"docs/RELEASE_PROCESS.md"
|
|
],
|
|
"ops_scripts": [
|
|
"scripts/ops/build-image.sh",
|
|
"scripts/ops/deploy-compose-remote.sh",
|
|
"scripts/ops/smoke-check.sh"
|
|
],
|
|
"public_assets": [
|
|
"public/images/vibework-hero.png"
|
|
],
|
|
"admin_and_ai_routes": [
|
|
"src/app/admin/growth-launch/page.tsx",
|
|
"src/app/admin/growth-leads/page.tsx",
|
|
"src/app/api/ai/intake-assistant/apply/route.ts",
|
|
"src/app/api/ai/intake-assistant/route.ts",
|
|
"src/app/api/ai/milestone-assistant/apply/route.ts",
|
|
"src/app/api/ai/milestone-assistant/route.ts",
|
|
"src/app/api/ai/support/route.ts"
|
|
],
|
|
"product_api_routes": [
|
|
"src/app/api/v1/admin/change-requests/[changeRequestId]/intervene/route.ts",
|
|
"src/app/api/v1/admin/coder-applications/[applicationId]/review/route.ts",
|
|
"src/app/api/v1/admin/marketing-content/[itemId]/route.ts",
|
|
"src/app/api/v1/admin/marketing-content/route.ts",
|
|
"src/app/api/v1/admin/users/[userId]/status/route.ts",
|
|
"src/app/api/v1/auth/demo-login/route.ts",
|
|
"src/app/api/v1/auth/password-login/route.ts",
|
|
"src/app/api/v1/auth/register/route.ts",
|
|
"src/app/api/v1/growth/events/route.ts",
|
|
"src/app/api/v1/growth/leads/[leadId]/route.ts",
|
|
"src/app/api/v1/growth/leads/export/route.ts",
|
|
"src/app/api/v1/growth/leads/route.ts",
|
|
"src/app/api/v1/projects/[projectId]/change-requests/route.ts",
|
|
"src/app/api/v1/projects/[projectId]/intake-sessions/[sessionId]/route.ts",
|
|
"src/app/api/v1/projects/[projectId]/prd/current/freeze/route.ts",
|
|
"src/app/api/v1/projects/[projectId]/prd/current/route.ts",
|
|
"src/app/api/v1/projects/[projectId]/workspace/milestones/[milestoneId]/evidence/route.ts",
|
|
"src/app/api/v1/projects/[projectId]/workspace/milestones/[milestoneId]/review/route.ts",
|
|
"src/app/api/v1/projects/[projectId]/workspace/milestones/route.ts",
|
|
"src/app/api/v1/projects/intake-sessions/route.ts"
|
|
],
|
|
"public_pages": [
|
|
"src/app/case-studies/[slug]/page.tsx",
|
|
"src/app/case-studies/page.tsx",
|
|
"src/app/clients/page.tsx",
|
|
"src/app/coders/page.tsx",
|
|
"src/app/compare/[slug]/page.tsx",
|
|
"src/app/compare/page.tsx",
|
|
"src/app/early-access/page.tsx",
|
|
"src/app/faq/page.tsx",
|
|
"src/app/globals.css",
|
|
"src/app/how-it-works/page.tsx",
|
|
"src/app/industries/[slug]/page.tsx",
|
|
"src/app/industries/page.tsx",
|
|
"src/app/layout.tsx",
|
|
"src/app/partners/page.tsx",
|
|
"src/app/pricing/page.tsx",
|
|
"src/app/resources/[slug]/page.tsx",
|
|
"src/app/resources/page.tsx",
|
|
"src/app/robots.ts",
|
|
"src/app/services/[slug]/page.tsx",
|
|
"src/app/sitemap.ts",
|
|
"src/app/tools/scope-score/page.tsx"
|
|
],
|
|
"features_and_libraries": [
|
|
"src/features/admin/AdminDashboardPage.tsx",
|
|
"src/features/admin/GrowthAnalyticsAdminPage.tsx",
|
|
"src/features/admin/GrowthLaunchAdminPage.tsx",
|
|
"src/features/admin/admin-api.ts",
|
|
"src/features/auth/LoginPage.tsx",
|
|
"src/features/coder/CoderMatchesPage.tsx",
|
|
"src/features/growth/GrowthLeadCaptureForm.tsx",
|
|
"src/features/growth/PublicGrowthPages.tsx",
|
|
"src/features/growth/ScopeScoreTool.tsx",
|
|
"src/features/intake/IntakeWizard.tsx",
|
|
"src/features/marketing/MarketingHomePage.tsx",
|
|
"src/features/match/MatchResultsPage.tsx",
|
|
"src/features/workspace/ProjectWorkspacePages.tsx",
|
|
"src/i18n/dictionaries/en.json",
|
|
"src/i18n/dictionaries/zh-TW.json",
|
|
"src/lib/domain/admin.ts",
|
|
"src/lib/domain/growth-analytics.ts",
|
|
"src/lib/domain/growth-launch.ts",
|
|
"src/lib/domain/growth-leads.ts",
|
|
"src/lib/domain/growth.ts",
|
|
"src/lib/domain/marketing.ts",
|
|
"src/lib/domain/notification.ts",
|
|
"src/lib/server/admin.ts",
|
|
"src/lib/server/ai-assistant.ts",
|
|
"src/lib/server/auth.ts",
|
|
"src/lib/server/growth-analytics.ts",
|
|
"src/lib/server/growth-launch.ts",
|
|
"src/lib/server/growth-leads.ts",
|
|
"src/lib/server/marketing-db.ts",
|
|
"src/lib/server/marketing-metadata.ts",
|
|
"src/lib/server/marketing.ts",
|
|
"src/lib/server/matchmaking.ts",
|
|
"src/lib/server/notifications.ts",
|
|
"src/lib/server/project-workspace.ts",
|
|
"src/lib/server/store.ts",
|
|
"src/middleware.ts"
|
|
]
|
|
},
|
|
"untracked_groups": {
|
|
"docs": [
|
|
"cross_audit_report.md",
|
|
"docs/ADMIN_BACKOFFICE_READINESS_AUDIT.md",
|
|
"docs/ADMIN_BACKOFFICE_WAVE8_JSON_PARSE_400.md",
|
|
"docs/FULL_PRODUCT_UX_BACKLOG_2026-06-11.md",
|
|
"docs/HANDOFF_PHASE0.md",
|
|
"docs/NGINX_ROUTING_GOVERNANCE.md",
|
|
"docs/PHASE_1_COMMERCIAL_BATTLE_PLAN.md",
|
|
"docs/PHASE_5_PLANNING.md",
|
|
"docs/PHASE_MASTER_FINAL_PLAN.md",
|
|
"docs/VALIDATION_STATUS_2026-06-04.md"
|
|
],
|
|
"workspace_packages": [
|
|
"packages/contracts/package.json",
|
|
"packages/contracts/src/enums/index.ts",
|
|
"packages/contracts/src/errors/index.ts",
|
|
"packages/contracts/src/index.ts",
|
|
"packages/contracts/src/schemas/index.ts",
|
|
"packages/contracts/src/types/index.ts",
|
|
"packages/contracts/tsconfig.json",
|
|
"packages/mcp-server/package.json",
|
|
"packages/mcp-server/src/index.ts",
|
|
"packages/mcp-server/tsconfig.json",
|
|
"pnpm-workspace.yaml"
|
|
],
|
|
"brand_and_public_assets": [
|
|
"public/brand/vibework-logo-full-dark.svg",
|
|
"public/brand/vibework-logo-full.svg",
|
|
"public/brand/vibework-logo-icon-dark.svg",
|
|
"public/brand/vibework-logo-icon.svg",
|
|
"public/images/avatar-client-pm.png",
|
|
"public/images/avatar-coder-assistant.png",
|
|
"public/images/avatar-support.png",
|
|
"public/images/client-empty-candidates.png",
|
|
"public/images/client-empty-state.png",
|
|
"public/images/coder-empty-evidence.png",
|
|
"public/images/coder-empty-state.png",
|
|
"public/images/marketing-feature-match.png",
|
|
"public/images/marketing-feature-milestone.png",
|
|
"public/images/marketing-feature-prd.png",
|
|
"public/images/vibework-hero-162baf5a13a2.png"
|
|
],
|
|
"ops_and_verification": [
|
|
"scripts/ops/check-middleware-route-policy.mjs",
|
|
"scripts/ops/check-public-header-policy.mjs",
|
|
"scripts/ops/expected-hero-sha256",
|
|
"scripts/ops/pre-push-release-guard.sh",
|
|
"scripts/ops/verify-production-image.sh",
|
|
"scripts/replaybook.js",
|
|
"scripts/seed_tasks.js",
|
|
"scripts/seed_tasks.ts",
|
|
"scripts/simulate_drift.js",
|
|
"scripts/verify-prisma.js",
|
|
"scripts/verify-prisma.ts",
|
|
"scripts/verify_day6.js",
|
|
"scripts/verify_e2e.js",
|
|
"scripts/verify_e2e.ts",
|
|
"scripts/verify_mcp.js",
|
|
"scripts/verify_vibework.js",
|
|
"scripts/verify_vibework.ts"
|
|
],
|
|
"new_api_routes": [
|
|
"src/app/api/cron/reaper/route.ts",
|
|
"src/app/api/matching/run/route.ts",
|
|
"src/app/api/mcp/[tool]/route.ts",
|
|
"src/app/api/v1/acquire/lead/[leadId]/cancel/route.ts",
|
|
"src/app/api/v1/acquire/lead/[leadId]/confirm/route.ts",
|
|
"src/app/api/v1/acquire/lead/[leadId]/status/route.ts",
|
|
"src/app/api/v1/acquire/lead/route.ts",
|
|
"src/app/api/v1/admin/growth-launch/action-items/[itemId]/route.ts",
|
|
"src/app/api/v1/admin/growth-launch/action-items/route.ts",
|
|
"src/app/api/v1/admin/growth-launch/content-items/[itemId]/route.ts",
|
|
"src/app/api/v1/admin/growth-launch/content-items/route.ts",
|
|
"src/app/api/v1/admin/growth-launch/site-signals/[signalId]/route.ts",
|
|
"src/app/api/v1/admin/growth-leads/[leadId]/route.ts",
|
|
"src/app/api/v1/admin/growth-leads/route.ts",
|
|
"src/app/api/v1/admin/projects/[projectId]/workspace/status/route.ts",
|
|
"src/app/api/v1/growth/signals/route.ts",
|
|
"src/app/api/v1/scout/events/route.ts",
|
|
"src/app/api/v1/stripe/webhook/route.ts"
|
|
],
|
|
"new_pages_features_and_libraries": [
|
|
"src/app/en/[...slug]/page.tsx",
|
|
"src/app/error.tsx",
|
|
"src/app/global-error.tsx",
|
|
"src/app/loading.tsx",
|
|
"src/app/services/page.tsx",
|
|
"src/features/admin/GrowthLeadsPage.tsx",
|
|
"src/features/brand/BrandLogo.tsx",
|
|
"src/features/growth/EnglishGrowthPages.tsx",
|
|
"src/features/growth/GrowthPages.tsx",
|
|
"src/features/growth/GrowthTrackedLink.tsx",
|
|
"src/features/growth/PublicGrowthFooter.tsx",
|
|
"src/features/marketing/MarketingHeroSearch.tsx",
|
|
"src/features/marketing/MarketingLeadForm.tsx",
|
|
"src/features/marketing/OfficialSiteHeader.tsx",
|
|
"src/lib/domain/growth-signals.ts",
|
|
"src/lib/seo/growth.tsx",
|
|
"src/lib/seo/private.ts",
|
|
"src/lib/seo/site.ts",
|
|
"src/lib/server/demand-acquisition.ts",
|
|
"src/lib/server/growth-metadata.ts",
|
|
"src/lib/server/growth-signals.ts",
|
|
"src/lib/server/payment.js",
|
|
"src/lib/server/prisma.js",
|
|
"src/lib/server/rate-limit.ts",
|
|
"src/lib/server/sandbox.ts",
|
|
"src/lib/server/stripe-checkout.ts"
|
|
]
|
|
},
|
|
"secret_or_env_paths_seen_but_not_read": [
|
|
".env",
|
|
".env.example",
|
|
".env.production.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": "high_owner_pick_required",
|
|
"reason": "VibeWork local tree spans runtime config, Nginx, Docker, Prisma, growth APIs, MCP, Stripe webhook, public pages, marketing assets, docs, and verification tooling. Local HEAD differs from Gitea main, remote dev is missing, and diff check currently fails on docs trailing whitespace."
|
|
},
|
|
"owner_decision_required": [
|
|
"Decide whether local head 48275cc52be79107e887147d3fe10310a887afe9 is the intended latest product baseline candidate.",
|
|
"Approve or reject each tracked modified group before any branch creation.",
|
|
"Approve or reject each untracked group before any branch creation.",
|
|
"Confirm env-like files remain excluded unless a separate metadata-only owner review explicitly approves example-file handling.",
|
|
"Confirm docs/PHASE_0_IMPLEMENTATION_PLAN.md trailing whitespace cleanup strategy before using this tree as a dev baseline.",
|
|
"Confirm whether pnpm workspace and packages/contracts plus packages/mcp-server should become part of the product baseline.",
|
|
"Confirm Stripe webhook, MCP route, Nginx route, Docker, Prisma, and growth lead APIs are in the same release scope or must be split.",
|
|
"Approve remote dev branch only after the include / exclude list is accepted."
|
|
],
|
|
"recommended_next_step": "Create a path-bucketed owner response for VibeWork before any product repo commit, remote dev branch creation, or MacBook workspace bootstrap."
|
|
}
|