/intent Deployment Build Fix — 2026-08-22
Decision
Repair the existing deploy-homepage.yml path. Do not create a second site service, alternate deploy workflow, DNS rule, or redirect.
Failed production attempt
Workflow run 32587878059 was a specifically approved homepage deployment. It passed:
- the exact approval-token gate;
- design-canon verification;
- truth-discipline self-test and real content scan;
- the marketing-surface drift guard.
actions/setup-node@v6 then failed with:
Some specified paths were not resolved, unable to cache dependencies.
The declared cache dependency was:
# MIZ OKI 3.5/intent-site/package-lock.json
That file does not exist. Because setup failed, the Vite build, docs portal generation, Cloud Build, Cloud Run deployment, and verification steps were skipped. Production traffic did not move.
Second build defect
Once the setup failure was isolated, the source entry's root favicon reference was identified as the next path-sensitive Vite failure in the repository directory containing # MIZ OKI 3.5. The root reference caused Vite 8 to resolve the path as a directory and raise EISDIR.
The /intent bundle does not need to compile the apex favicon. Flask continues to serve the existing site asset independently.
Patch
| File | Change |
|---|---|
.github/workflows/deploy-homepage.yml |
Remove npm cache configuration tied to the absent lockfile; run npm ci when a lockfile exists, otherwise use a bounded no-lock install fallback |
# MIZ OKI 3.5/intent-site/index.html |
Remove the root /favicon.ico link from Vite's source graph |
# MIZ OKI 3.5/intent-site/tests/build.test.mjs |
Reject generated HTML that reintroduces the root favicon reference |
# MIZ OKI 3.5/intent-site/README.md |
Correct the dependency and build contract |
# MIZ OKI 3.5/docs/INTENT_ROUTE_HOSTING.md |
Record the failed run, repair, verification, and deployment ceremony |
The workflow fallback is future-compatible:
if [ -f package-lock.json ]; then
npm ci
else
npm install --no-audit --no-fund --package-lock=false
fi
npm test
A later committed lockfile automatically restores npm ci without another workflow edit.
Safety properties preserved
- production upload remains
workflow_dispatchonly; - the exact
APPROVEDinput is still required; - design canon, content QA, and marketing drift checks remain ahead of the build;
- the docs portal still generates before Cloud Build;
- Cloud Run still deploys with the existing secret mounts and refuses a secretless retry;
- no DNS, domain, route, or canon-pinned customer page is changed;
- no deployment is performed by this repair branch.
Required verification before merge
- inspect the protected workflow diff;
- confirm setup-node has no nonexistent cache path;
- confirm
package.jsonretains exact top-level versions; - confirm the Vite entry has no root favicon import;
- confirm the build test pins canonical URL,
/intent/assets/, no preview-host marker, and no root favicon; - confirm no unrelated workflow, route, or infrastructure change is present.
Required verification after merge
A new specifically approved deploy-homepage.yml dispatch must prove the real runner path. The successful run must show:
- setup-node green;
- dependency installation green;
- Vite build and
npm testgreen; intent-dist/index.htmlpresent;- docs portal generation green;
- Cloud Build success;
- a new ready
mizoki-websiterevision serving traffic; /intent,/,/signal,/marketing,/media,/docs, and/api/healthsmoke checks green.
Do not claim /intent is published until those live checks pass.