The real requirement is not more rebuild plumbing — it is that a session simply gets the newest kit. Today the kit version a runner serves is whatever was baked into the image (AGENT_KIT_BAKED_VERSION), which has been stuck at v1.1.0 against a v3.3.0 kit; even perfect release propagation (companion issue) still leaves running pods one recycle behind.
Proposal: make the runner's session bootstrap kit-freshness-aware:
- At workspace/session start, resolve the latest kit runtime-home (GHCR
runtime-home:latest-by-digest or the releases API), compare against the installed version, and overlay the newer home if one exists — with the baked copy as the offline/failure fallback so a registry outage never blocks a session.
- Cache per pod so the check is one HTTP call per session start, not per prompt.
- Surface the state:
agent-kit doctor (or the session banner) should say baked vX / running vY / latest vZ so staleness is visible instead of silent.
AGENT_KIT_EXPECTED_VERSION already exists in the image env — today it merely mirrors the baked pin; repurpose or retire it as part of this.
Acceptance: cutting a kit release means the next session started on any existing runner pod runs the new kit, with no image rebuild and no recycle required.
The real requirement is not more rebuild plumbing — it is that a session simply gets the newest kit. Today the kit version a runner serves is whatever was baked into the image (
AGENT_KIT_BAKED_VERSION), which has been stuck at v1.1.0 against a v3.3.0 kit; even perfect release propagation (companion issue) still leaves running pods one recycle behind.Proposal: make the runner's session bootstrap kit-freshness-aware:
runtime-home:latest-by-digest or the releases API), compare against the installed version, and overlay the newer home if one exists — with the baked copy as the offline/failure fallback so a registry outage never blocks a session.agent-kit doctor(or the session banner) should saybaked vX / running vY / latest vZso staleness is visible instead of silent.AGENT_KIT_EXPECTED_VERSIONalready exists in the image env — today it merely mirrors the baked pin; repurpose or retire it as part of this.Acceptance: cutting a kit release means the next session started on any existing runner pod runs the new kit, with no image rebuild and no recycle required.