KB-7774

IU Core 3000x — 04 Nuxt deploy status + exact blocker

5 min read Revision 1
iu-core3000xdieu44nuxtdeploy-gatedblockerfrontend-authoringout-of-scope

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_envelope in the Nuxt runtime config and redeploy incomex-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_COLLECTION in the Nuxt env has no effect today: no compiled code reads it.
  • Redeploying / restarting incomex-nuxt would 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.py is a pure-data contract (a recipe Nuxt SHOULD follow). The Nuxt developer still needs to:
    1. write the admin screen using useDirectus / readItems;
    2. read useRuntimeConfig().public.iuCoreDirectusCollection (or equivalent) to get the collection name;
    3. ship a new Nuxt build that contains the new screen;
    4. add IU_CORE_DIRECTUS_COLLECTION=iu_three_axis_envelope to the nuxt: block of /opt/incomex/docker/docker-compose.yml;
    5. docker compose up -d nuxt.

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):

  1. Frontend authors the IU admin screen against the 1500x contract.
  2. Frontend authors a Nuxt build consuming the env-driven collection name.
  3. Compose patch adds IU_CORE_DIRECTUS_COLLECTION=iu_three_axis_envelope.
  4. Single-container docker compose up -d nuxt restart.
  5. dot_iu_nuxt_config_verify to confirm the env reaches the running container; smoke-test the screen against live Directus.
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-3000x-nuxt-redeploy-auto-refresh-retrieval-open-goal/04-nuxt-deploy-status-and-exact-blocker.md