IU Core 3000x — 04 Nuxt deploy status + exact blocker
04 — Nuxt deploy status · exact blocker recorded
1. What 2400x said
The 2400x final report (doc 06 §2.2 + doc 07 §3.1) carried the residual:
Set
IU_CORE_DIRECTUS_COLLECTION=iu_three_axis_envelopein the Nuxt runtime config and redeployincomex-nuxt. The 1500x assembly contract already supports the override.
2. What 3000x found on the live VPS
Discovery (no mutation):
$ docker inspect incomex-nuxt --format '{{json .Config.Env}}'
NUXT_AGENT_DATA_API_KEY=…
NUXT_DIRECTUS_URL=http://directus:8055
NUXT_DIRECTUS_INTERNAL_URL=http://directus:8055
NUXT_PUBLIC_DIRECTUS_URL=https://directus.incomexsaigoncorp.vn
NUXT_DIRECTUS_SERVICE_TOKEN=…
PORT=3000
NUXT_PUBLIC_AGENT_DATA_BASE_URL=http://agent-data:8000
NUXT_PUBLIC_SITE_URL=https://vps.incomexsaigoncorp.vn
NODE_ENV=production
No IU_CORE_DIRECTUS_COLLECTION and no Nuxt env var referencing the
three-axis envelope. Then we grep'd the compiled SSR artifact mounted
into the container:
$ grep -rh 'IU_CORE_DIRECTUS_COLLECTION|iu_three_axis_envelope|
v_ui_iu_three_axis_envelope|iuCoreDirectusCollection' \
/opt/incomex/deploys/nuxt-output/
(zero hits)
/opt/incomex/deploys/nuxt-output/ is the mount-only .output
artifact (server/index.mjs + chunks + nitro.json). There is no Nuxt
source on the VPS, and the compiled bundle does not consume any
IU Core env variable.
3. The exact blocker
The "deploy-gated" residual from 2400x was misframed:
- Setting
IU_CORE_DIRECTUS_COLLECTIONin the Nuxt env has no effect today: no compiled code reads it. - Redeploying / restarting
incomex-nuxtwould be a no-op for IU Core — the user-facing IU admin screen the contract describes has not yet been authored in the Nuxt codebase. - The 1500x
nuxt_assembly_contract.pyis a pure-data contract (a recipe Nuxt SHOULD follow). The Nuxt developer still needs to:- write the admin screen using
useDirectus/readItems; - read
useRuntimeConfig().public.iuCoreDirectusCollection(or equivalent) to get the collection name; - ship a new Nuxt build that contains the new screen;
- add
IU_CORE_DIRECTUS_COLLECTION=iu_three_axis_envelopeto thenuxt:block of/opt/incomex/docker/docker-compose.yml; docker compose up -d nuxt.
- write the admin screen using
Steps 1–3 are outside IU Core scope (frontend authoring); steps 4–5 become trivial once 1–3 land.
4. Why not redeploy preemptively
The mission explicitly forbids broad restarts and requires that any redeploy be safe and meaningful:
- A restart without consuming code is wasted (and not a no-cost operation — Nuxt has been up 10 days healthy; restarting risks unrelated regressions for zero IU Core gain).
- The redeploy slice was supposed to prove the IU admin screen renders three-axis data. With no IU admin screen, the proof is unobtainable.
We therefore do not redeploy in 3000x and instead record the exact follow-up so the next macro (or a frontend developer) knows what to do.
5. Operator commands that survive
dot_iu_nuxt_config_verify (new in 3000x) emits the expected env name
as a RAISE NOTICE so an operator can diff it against
docker inspect incomex-nuxt. The command is NOTICE-only — no DML / no
restart.
6. Five-layer impact (Nuxt row)
| layer | impact |
|---|---|
| Nuxt | NONE — no config change, no restart, no code mutation. Exact authoring blocker recorded. |
7. Disposition
BLOCKED_OUTSIDE_IU_CORE_SCOPE — IU Core's PG + Directus + Qdrant
surface is complete and proven; the residual is frontend authoring,
not an IU Core code or deploy gap. The 1500x assembly contract is the
single SSOT a frontend developer needs.
8. Carry-forward instruction
The next macro should NOT re-attempt a Nuxt redeploy unless the frontend authoring step has shipped. Recommended sequence (outside the scope of an IU Core macro):
- Frontend authors the IU admin screen against the 1500x contract.
- Frontend authors a Nuxt build consuming the env-driven collection name.
- Compose patch adds
IU_CORE_DIRECTUS_COLLECTION=iu_three_axis_envelope. - Single-container
docker compose up -d nuxtrestart. dot_iu_nuxt_config_verifyto confirm the env reaches the running container; smoke-test the screen against live Directus.