Narrow the infra-artifact version hash to what the VM actually runs #396
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
Context
Follow-up from PR #395 (PRD 0069 Stage 2). The prebuilt infra rootfs is pulled by a version tag that is a content hash of everything baked into the image. Per review (#395), that hash covers the entire
bot_bottle/package, becauseDockerfile.orchestratordoesCOPY bot_bottle /app/bot_bottlewholesale.Problem
Because the whole package is copied in (and therefore hashed), any commit under
bot_bottle/bumps the artifact version — including changes to modules the infra VM never runs at runtime (e.g.publish_infra.py,infra_artifact.py, the docker/macos backends, CLI files). So an unrelated change invalidates the published artifact, and a default-path (pull) firecracker launch then 404s until someone republishes the ~195 MB rootfs.This is correct (it never boots stale code), but it makes the pull model impractical on a rolling dev branch — during this PR's work alone it forced three republishes for changes that didn't affect the VM's behavior.
Options
BOT_BOTTLE_INFRA_BUILD=localand only publish at release points. The model already assumes this; cheapest.Dockerfile.orchestrator/Dockerfile.infraCOPYonly the modules the control plane + gateway import (or add the host-only tooling to.dockerignore), and hash exactly those build inputs. Unrelated changes then stop churning the tag. More work; needs care to not miss a transitively-imported module (a missed file = the staleness bug the strict hash was protecting against).Priority
Low — the
localescape hatch fully covers dev today; this is an ergonomics/rollout improvement, not a correctness gap.