feat(smolmachines): rewrite Smolfile to smolvm 0.8.0 schema + drop gvproxy (PRD 0023 chunk 2a) #64
Reference in New Issue
Block a user
Delete Branch "prd-0023-chunk-2a-smolfile-rewrite"
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?
Summary
First sub-PR of chunk 2: rewrite the Smolfile renderer chunk 1 shipped (it emitted the gvproxy-era shape that smolvm doesn't accept) and drop the dead gvproxy code. Net: −410 lines.
What changed
Smolfile renderer now emits smolvm 0.8.0's actual schema:
That's it.
image/entrypoint/cmdcome from the.smolmachineartifact built in chunk 2b;cpus/memorystay at smolvm defaults until the manifest grows knobs for them.Tests round-trip the output through stdlib
tomlliband explicitly assert no--outbound-localhost-onlyleaks (the TSI flag the PRD's design pivot specifically rejected) and no leftoverunixgram/gvproxykeys from the abandoned design.util.py:
smolmachines_gvproxy_subnet→smolmachines_bundle_subnet, returning(subnet, gateway, bundle_ip). Bundle always lands at.2; gateway at.1. Third octet fromsha256(slug) % 254, skipping17to avoid the docker-default bridge collision.allocate_loopback_port: deleted. The bundle gets a pinned docker IP now; no per-bottle loopback ports.smolmachines_preflight: only checkssmolvmon PATH (no moregvproxy).prepare.py:
http://<bundle-ip>:8888) since the guest will have no DNS resolver inside TSI's allowlist.bottle_plan.py: swap the gvproxy fields for
bundle_subnet/bundle_gateway/bundle_ip/smolfile_path. The.smolmachineartifact path lands in chunk 2b.Deleted:
claude_bottle/backend/smolmachines/gvproxy_config.py(101 lines).tests/unit/test_smolmachines_gvproxy_config.py(117 lines).Test status
516 unit tests passing (was 532; deleted 17 gvproxy-config + old smolfile cases, added 13 new for the rewritten renderer + util).
What's left in chunk 2
smolvm.pysubprocess wrapper (machine create / start / exec / cp / stop / delete+pack create).sidecar_bundle.py(per-bottle docker bridge with pinned IP, bundle bringup + teardown).launch.pyend-to-end wiring (bundle → VM via--from --smolfile,SmolmachinesBottle.execviasmolvm machine exec) + integration smoke + localhost-reach probe + egress-port-bypass probe.