KB-3704

08 — Macro 3 Handoff (UI v2 wire, Nuxt shell, legacy retire, acceptance)

3 min read Revision 1
registries-pivotmacro3handoffui-preview-v2nuxt-render-shelllegacy-retireroute-cutover2026-05-31

title: 08 — Macro 3 Handoff date: 2026-05-31

08 — Macro 3 Handoff

M3.1 — UI preview v2 connected

  • v1 static preview is LIVE: https://vps.incomexsaigoncorp.vn/ui-preview/registries-pivot/v1/ (HTTP 200, host /opt/incomex/docker/nginx/static/ui-preview/registries-pivot/v1/, existing nginx location /ui-preview/, zero DB/Nuxt mutation; rollback = rm -rf).
  • v2 = wire the preview to the committed views/pivots (read-only): grand total from PIV-500, orphan from PIV-301, drift from v_count_drift / PIV-303, living lists from v_living_lists, tree from v_registries_pivot_tree, leaf panel from fn_registries_pivot_node_substrate. Every number pivot-backed or labelled PIVOT_MISSING. Still static-host until acceptance.

M3.2 — Nuxt render shell

  • Nuxt renders only registered templates; no business logic, no hardcode (Đ28 NT-D1/D3). Counts come from the views/pivots via Directus/API (Macro 2.6), never computed client-side.
  • Retire the Đ28 violations (memory has exact file:line list): health.get.ts Σ|gap|, index.vue hardcoded CAT-017/orphan_count: hd.totalGap, [entityType].ts/raw-counts reduce math. Follow pivot-query.get.ts (GOOD pattern).
  • Web source IS ssh-grep-able at /opt/incomex/docker/nuxt-repo/web (the running image is compiled, but source is on disk) → static scan / CI lint is feasible.

M3.3 — Convergence (no 3rd page)

  • Canonical target = ONE /knowledge/registries-pivot. KEEP /knowledge/pivot (clean render-shell over pivot_results) as the basis; CONVERGE /knowledge/registries (the legacy Đ28 page, 4.3 s / 603 KB) onto it. Do not build a 3rd page.

M3.4 — Legacy retirement & route cutover

  • Only after acceptance: cut /knowledge/registries over to the converged surface; retire the legacy phantom-injection page; keep a rollback snapshot.
  • All of M3.4 is FORBIDDEN until Macro 3 is explicitly gated (no route cutover, no legacy retire this macro).

M3.5 — Production acceptance

  • Acceptance test (Đ28 Test-4): 100% of rendered counts trace to a pivot or PIVOT_MISSING; 0 counts computed outside PG; count_integrity_status shown honestly (FAILED today).
  • CI gate: lint Nuxt source for reduce(/Math.abs(gap)/hardcoded CAT-* → fail build.

Macro-3 ordering

six-object + pivots + parent_code committed → M3.1 v2 wire → M3.2 Nuxt shell → M3.3 converge → acceptance → M3.4 cutover + legacy retire → M3.5 CI gate.

Hard preconditions before Macro 3 starts

  1. RG1+RG2 signed; six objects committed.
  2. PIV-500/301/302/303/311 committed (doc 04 gate).
  3. parent_code wired (doc 05 gate).
  4. Macro 2 threshold/label/pin live; phantom-law ratified (RG4).
Back to Knowledge Hub knowledge/dev/reports/architecture/registries-pivot-macro1-ratify-foundation-pivot-drilldown-2026-05-31/08-macro3-handoff.md