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 nginxlocation /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.vuehardcodedCAT-017/orphan_count: hd.totalGap,[entityType].ts/raw-countsreducemath. Followpivot-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/registriesover 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_statusshown honestly (FAILED today). - CI gate: lint Nuxt source for
reduce(/Math.abs(gap)/hardcodedCAT-*→ 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
- RG1+RG2 signed; six objects committed.
- PIV-500/301/302/303/311 committed (doc 04 gate).
- parent_code wired (doc 05 gate).
- Macro 2 threshold/label/pin live; phantom-law ratified (RG4).