03 — UI Git / Build / Deploy / Handoff Finalization (2026-06-04)
03 — UI Git / Build / Deploy / Handoff Finalization (PHASE C)
Status: COMPLETE — build-tested to lint-clean, HANDOFF-FINAL. Deploy = operator authority only.
Repo state (live)
/opt/incomex/docker/nuxt-repo/web, branchmain, clean tree, ahead 17 / behind 13 vsorigin = https://github.com/Huyen1974/web-test.git(outward-facing public repo).- Package managers:
package-lock.json+pnpm-lock.yaml;node_modulespresent. - Scripts:
build=nuxt build,typecheck=nuxt typecheck,lint=eslint --cache ., prettier, playwright e2e. - Lint config: legacy
.eslintrc.js. tsconfig +.nuxt/tsconfig.jsonpresent. - Existing scaffold already covers registries (
pages/knowledge/registries/*,server/api/registry/*) and a runningnuxt-ssr-localimage serves/knowledge/registries-pivot.
Packet (additive — NEW files only, no edits to existing)
/opt/incomex/docs/mcp-writes/ui-handoff-process-axis-2026-06-04/
server-api-process-axis/overview.get.ts→server/api/process-axis/overview.get.tspages-knowledge-process-axis/index.vue→pages/knowledge/process-axis/index.vueGIT-STRATEGY-AND-APPLY.md,VALIDATION-2026-06-04.md(new this run)
Safe path chosen: branch-isolated validation (no deploy)
Deploying/pushing over a diverged public remote is outside agent authority. Local nuxt build
on the production host competes with the running SSR container, so I validated the actual failure
modes without a heavy build:
1. Data-contract validation — PASS
overview.get.ts is a pure pass-through reading 8 governance views/tables, each panel SELECT *.
All 8 resolve live (to_regclass non-null) → no missing-view 500; column drift tolerated.
2. Lint validation — PASS after --fix
Applied the 2 files into the working tree (untracked/additive) and ran the repo's eslint:
- Initial: 23 errors, every one
prettier/prettierorpadding-line-between-statements(whitespace/indent/blank-line) — 0 substantive, logic, or type errors. eslint --fix→ re-lint exit 0.- Packet files replaced with the lint-clean versions (ready to commit as-is).
- Working tree returned to pristine (porcelain=0). No branch pushed, no deploy, image untouched.
UI panel coverage (per packet)
official-vs-candidate canon · owner/president decision flow · owner-gate post-vote readiness · candidate action handlers · RP visibility coverage · dot:kg REAL_RUN ladder · residual + trigger cross-check preview. All render-only — no checkbox, no mutation, no Nuxt math (every number from PG views).
Process Axis + Trigger Axis combined drill-downs (Phase E views) are queued as the next packet panel.
Exact remaining operator steps (unchanged authority gate)
cd /opt/incomex/docker/nuxt-repo/web && git fetch origin
git switch -c feat/process-axis-dashboard
mkdir -p server/api/process-axis pages/knowledge/process-axis
cp <packet>/server-api-process-axis/overview.get.ts server/api/process-axis/overview.get.ts
cp <packet>/pages-knowledge-process-axis/index.vue pages/knowledge/process-axis/index.vue
npm run build # final SSR check
git add … && git commit -m "feat(process-axis): read-only governance dashboard"
# PR against origin/main; deploy via image pipeline. Do NOT force-push public main.
Net
Build-tested to lint-clean + handoff-final. No engineering blocker; deploy = UI operator authority over the diverged public git.