Done (5eb27cd): changed docker/compose.py and smolmachines/launch.py to bind-mount the egress directory (/etc/egress) instead of just the routes file, matching the fix applied to macos-contai…
Done in 8ab2472.
Added a Freezer ABC (backend/freeze.py) following the same pattern as BottleBackend:
Freezer.commit(agent: ActiveAgent, bottle: Bottle)— primary entry point for…
Fixed in 3cd4a7a.
container export requires the container to be stopped. The commit command now:
- Checks if the bottle is running (
container list --quiet) - Prompts "commit will stop it.…
Done — stripped the legacy fallback, _routes_path now just returns egress_state_dir(slug) / EGRESS_ROUTES_FILENAME. (5606797)
For smolmachines, the local registry machinery already exists in local_registry.py — the implementation path is: docker-commit the running container, push it to the ephemeral registry, and…
re: #2144 — cannot justify the union. Clean split landed in latest commit: BottleSpec.manifest: ManifestIndex (always, CLI-supplied intent) and BottlePlan.manifest: Manifest (always, loaded…
Got it — that's a cleaner design. Manifest becomes a value type holding exactly one agent: ManifestAgent and bottle: ManifestBottle; resolve (or a replacement) becomes a pure name-scanner…
You're right — load_for_agent was returning self in the eager path, leaving all agents and bottles on the manifest. Fixed: both paths now return a manifest with exactly one agent and its…
from_json_obj is the test/programmatic path: the caller passes in an in-memory dict that already contains the full manifest, so there is nothing to defer — the data is already there. Lazy…