fix: retire retired-host drift in engine ALLOWED_NODES + port binding #10
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/node-ip-drift"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Two stale references to decommissioned hosts in the deploy engine source:
docker-compose.ymlpublished the API on100.74.17.6(Bruno's dead Tailscale IP). The live sol-prod deployment was already hand-fixed to100.64.148.46as an uncommitted edit, so a redeploy from git would revert the correct binding. This commits the correct sol-prod IP.KUA_ALLOWED_NODESdefault — wasgal,bruno,genesisin both the compose fallback andserver.js:69. All three are retired/never-existed (Bruno retired, Gal decommissioned, Genesis never provisioned). A stale authorized-node name is a latent foothold if that tailnet hostname is ever re-registered. Default is nowsol-prod(the engine host itself); the deployed.envexplicitly sets the real setsol-prod,sol-dev.Runtime already reconciled
On sol-prod I removed the dead nodes from the untracked
/root/apps/kua-deploy/.env(gal,bruno,genesis,sol-prod,sol-dev→sol-prod,sol-dev), recreated the engine, and verified it healthy ({"status":"ok","apps":24}). This PR makes the source durable so the drift doesn't return on the next engine redeploy.Not in this PR (flagged, needs its own verified fix)
docker-compose.yml:21still setsHOSTNAME=bruno, which feeds the engine'sisLocal()host match — same Bruno-drift class, but it changes runtime host-resolution logic so it wants separate verification.origin/productionis 4 commits ahead oforigin/main— do not release main→production naively; reconcile first (see the in-flightfix/1-reconcile-prod-to-mainwork).🤖 Generated with Claude Code
Extends the retired-host drift cleanup after the 2026-07-15 SOL audit found the sibling of the KUA_ALLOWED_NODES gap: - REGISTRY_SERVERS default was `bruno,gal,genesis,eva`, and validateEntry rejects any production.server not in that set (server.js:189,202). Compose never injected KUA_REGISTRY_SERVERS, so on a default the engine would 400 every app_register/PATCH with production.server=sol-prod (the MCP's default). Default is now `sol-prod` and compose injects `KUA_REGISTRY_SERVERS=${...:-sol-prod}`. - Two `|| 'bruno'` runtime fallbacks (recreate helper server param; runtime-status server resolution) now fall back to `sol-prod`. NOT changed (coupled to the isLocal execution path — deferred to a tested rollout): compose HOSTNAME=bruno and kua-deploy's own kua.json deploy server. Changing HOSTNAME without migrating every app's production.server, or vice versa, would flip isLocal and break deploy execution. Tracked as a follow-up needing a canary. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>Closing as already-in-
main. This branch's content (compose IP → 100.64.148.46, KUA_ALLOWED_NODES/REGISTRY_SERVERS defaults → sol-prod, bruno fallbacks) was folded intomainas part of the engine fix (mainis now at the deployed808544d, which includes it). TheHOSTNAME=bruno→sol-prodchange flagged here was also completed in that engine fix. Nothing left to merge. Follow-up hardening continues in #11 (Phase 0.5 capabilities).Pull request closed