release: v0.18.2 - #274
Merged
Merged
release: v0.18.2#274
Conversation
Three fixes, one of which unblocks the production deploy. - #271 fix(deploy): resolve the proxy probe's named port so the migration can start. The migration Job's cloud-sql-proxy sidecar inherited a startupProbe targeting the named port `pg-health` while cleanContainerForJob strips `ports`, so kubelet parsed the name as an integer forever. A native sidecar that never reports `started` never launches the migrate container, so the Job burned its whole deadline having run nothing. - #272 fix(agent): compaction must not hoist an answered steer to the newest-input slot. Stage-2 compaction partitioned by item type and re-appended every mid-history non-tool item after the surviving pairs, so an already-answered mid-turn steer reappeared as the newest input and was obeyed a second time, on every remaining hop. - #266 fix(agent): "No result was produced" has to be true where it is posted. The failure notice now consults the turn's own side effects per conversation, and a HELD auto-relay ends the turn as `skipped` rather than being reported as a crash. No schema change: MIN/MAX_SUPPORTED_SCHEMA_VERSION stay at 9. Claude-Session: https://claude.ai/code/session_01Tw4EygpE4o73TMLzyPFWEv
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Patch release. Three fixes, one of which unblocks the production deploy.
What is in it
#271 — fix(deploy): resolve the proxy probe's named port so the migration can start
This is the one that matters operationally. The migration Job copies the Deployment's
cloud-sql-proxycontainer, whosestartupProbetargets the named portpg-health— butcleanContainerForJobstripsports, so the name had nothing to resolve against and kubelet parsed it as an integer forever (strconv.Atoi: parsing "pg-health": invalid syntax). The proxy is a native sidecar (restartPolicy: Always), so never reportingstartedmeans themigratecontainer is never launched at all. The Job then burned its entire deadline having run nothing, and its pod was reaped, so there were no logs to say so.Verified against the code:
cleanContainerForJob(recovery.ts:481) deletes bothportsandstartupProbe, andbuildMigrationJob(:541) re-attaches the copied probe to the sidecar. Confirmed in production: run34531956583ran 30 minutes againstMIGRATION_DEADLINE_SECONDS: 1800and reporteddeploy-release: job_failed, with preflight passing cleanly beforehand.#272 — fix(agent): compaction must not hoist an answered steer to the newest-input slot
Stage-2 compaction partitioned history by item type and re-appended every mid-history non-tool item after all surviving pairs, so it reordered rather than only deleting. The only non-tool items that appear mid-history are the three
role:'user'items the runtime injects itself, and all three are imperatives ("Re-assess your current plan … and continue", "Continue this same turn"). An already-answered steer therefore reappeared in the newest-input slot and was obeyed again — including anything side-effecting it asked for — on every remaining hop.Verified the new tests are not tautological: they fail on unmodified
main(not ok 41/42/43,# pass 40 # fail 3) and pass with the fix (# pass 43 # fail 0), with the 40 pre-existing tests unchanged in both.#266 — fix(agent): "No result was produced" has to be true where it is posted
The failure notice now checks, per conversation, whether the turn actually posted a
message.postedside effect there, and drops only theNo result was produced.clause when it did — keeping theAgent run failed…sentence, which is what the announce-then-die case needs. A HELD auto-relay (exit 2) now ends the turn asskippedinstead of being reported as a crash, and recordsturn.auto_relay_held. Confirmed the exit code survives the tool boundary:tBashsetsok = code === 0and putsexitCodeinoutput(tools-shared.ts:566-568).Schema
No migration added.
MIN_SUPPORTED_SCHEMA_VERSIONandMAX_SUPPORTED_SCHEMA_VERSIONboth stay at 9.Note for the deploy: production has not yet reached schema 9, so the candidate migration is still the full
0002..0009catch-up — which is exactly what #271 makes possible for the first time.Verification
All three PRs were green in CI before merge. On the merged tip (
8e80f3c) locally:lint,typecheck,server:typecheck, and all three guards (big-brain,llm-tracked,engine-registry) pass. Unit suite: 1368 pass, 2 fail, both environmental in this sandbox and green in CI — one needs a real Postgres, the other needsworkers/email-gate's ownnpm installforpostal-mime(it is not a root dependency and there are no npm workspaces).https://claude.ai/code/session_01Tw4EygpE4o73TMLzyPFWEv