refactor!: remove the deprecated warden role #30
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "refactor/remove-warden"
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?
Why
warden is deprecated. castrum still shipped the role, plus three ai-stack settings that existed only for its escalation path. One of them,
ai_stack_localrecall_port(default8082), published LocalRecall, which put it on the LAN wherever a host kept the default, because Docker publishes past the castrum table. Design and plan:.plans/2026-10-08-warden-removal{-design,}.md(local).What changed
wardenrole is removed, along with itsservice_rolesandMOLECULE_ROLESentries, its catalogue row and the docs that used it as an example. firewall-apply's scenarios keep their cases through swarm.ai_stack_localrecall_portandai_stack_network_subnetare removed, and so is ai-net'sattachable. LocalRecall publishes no port; only localagi reaches it, on ai-net. The templates, README, molecule assertions and migration doc follow.refactor(ai-stack)!has the check and the fallback.refactor(roles)!commit body lists the one-off cleanup for a host that ran warden.Verification
make checkpassed after each commit, and every relative link resolves.compose.yml.j2with the role's defaults differs from main only in the header comment,attachableand LocalRecall'sports:. The new molecule assertions hold against that render.change-revieweranddocs-auditorran on the branch; the confirmed findings are fixed.make test(no podman in the agent sandbox). It covers the ai-stack and firewall-applydefaultandpeeredscenarios.Risks and follow-ups
ai_stack_localrecall_port: ""only after this one. Merged first, the old default would publish LocalRecall on 8082 there.docker network inspect ai-stack_ai-net --format '{{.Attachable}}'. If it still printstrue, rundocker compose downinai_stack_root, then the play.ai_stack_localrecall_port published LocalRecall (default 8082) for warden's jail sessions; ai_stack_network_subnet pinned ai-net so warden's rule could admit it; attachable let warden's jails join ai-net. With warden gone all three serve nothing, and the publish put LocalRecall on the LAN wherever a host kept the default, because Docker publishes past the castrum table. LocalRecall now publishes no port, and ai-net is a plain bridge; only localagi reaches LocalRecall, through LOCALAGI_LOCALRECALL_URL. The published-service assert checks LocalAI and LocalAGI only. The compose and env templates lose their escalation-path comments; the README, defaults, port-file comment, ADVANCED_USAGE's ai_mainframes row and the migration doc follow (step 1 records the old ports, step 6 probes them). The molecule scenario asserts that localrecall has no ports and ai-net no other key. A local render with the role's defaults differs from main only in the header comment, attachable and localrecall's ports. On the one ai_mainframes host, which already set the port empty, ai-net loses attachable. Compose recreates a network whose config-hash label changed, restarting the stack once, but may reuse one an older Compose created without that label. After the live run, docker network inspect ai-stack_ai-net --format '{{.Attachable}}' prints false once ai-net was recreated. If it prints true, or compose refuses, run `docker compose down` in ai_stack_root, then the play. BREAKING CHANGE: ai_stack_localrecall_port and ai_stack_network_subnet are removed; LocalRecall is no longer published and ai-net is no longer attachable.