IU Core 2400x — Nuxt assembly status (deploy-gated)
04 — Nuxt assembly status (deploy-gated, no code change)
1. What 1500x / 2000x established
The Nuxt assembly contract (filters, sort, tabs for 3 axes, render
behaviour) was authored in 1500x's nuxt_assembly_contract.py and
verified end-to-end against the 2000x Directus registration. The
contract is a pure-data spec — no Nuxt code lives in the IU Core repo,
in keeping with the UI boundary law:
PG tables/functions/views -> Directus collections/permissions/REST -> Nuxt existing screens/components.
The IU Core repo MUST NOT contain Nuxt business logic.
2. What changed in 2400x — only the collection name
The Directus collection name flipped from
v_ui_iu_three_axis_envelope (view-backed) to
iu_three_axis_envelope (managed table). Two consequences:
- The 1500x/2000x assembly contract already supports the override via
the env var
IU_CORE_DIRECTUS_COLLECTION. No contract code change. - The Nuxt-side env /
runtime configfor the IU Core admin screen needs to be set to the new collection name. That is a deploy step, gated on the operator-controlled Nuxt build, and is intentionally not performed by this macro.
3. Discovery probe — Nuxt container
$ docker ps --filter name=incomex-nuxt --format '{{.Image}} {{.Status}}'
nuxt-ssr-local:d28gmr-1778407456 Up 10 days (healthy)
The container is live and healthy. The macro does not exec into it, does not restart it, does not deploy a new image. The Nuxt SDK pattern in 1500x's contract document works as-is against the new collection name once the env override is set.
4. UI boundary preserved (binding)
- No direct PG access from Nuxt.
- No bypassing Directus / REST.
- No Nuxt component edits in the IU Core repo (none exist; this was re-verified in this macro).
- No deploy / restart by this macro.
5. Operator next steps (deploy-gated)
- Set
IU_CORE_DIRECTUS_COLLECTION=iu_three_axis_envelopein the Nuxt runtime config or.envfor the SSR build. - Rebuild + redeploy
incomex-nuxt(operator gate). - The 1500x assembly contract drives Nuxt's
useDirectus/useItemscalls without further code change — collection, per-axis tab grouping, MUST-NOT filters, render template all come from the contract.
6. Five-layer impact (this section)
| layer | impact |
|---|---|
| Nuxt | none — config-only operator action queued, not performed |
7. Disposition
DONE_WITH_EXTERNAL_BLOCKER — the IU Core layer is complete; the
remaining step is a one-line Nuxt env override + redeploy on the
operator's release schedule.