release: 0.19.0 — a compaction is not a new session - #343
Merged
Conversation
Co-Authored-By: Max <noreply>
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.
Release 0.19.0 — five PRs since v0.18.0 (2026-08-08).
What ships
docs/validators.mdcitations (#333); README badge pinned to the manifest (#335)batchdeclared in.supertool.jsonTwo of the five came from outside the org, which is a first for this tracker.
The headline change
SessionStartfires at every auto-compaction, and the hook readsession_idout of that payload while discardingsource— so every memory file was re-cat'd into a context that had just been replaced by a summary. The reporter measuredcompactfiring about as often asstartupacross 40 days.At
source=compactthe bodies are no longer repeated, with one exception:identity.mdworks by presence, and no other line of the hook's output even names the file. Everything else is named with its byte size rather than dropped — #124's vocabulary for "kept but not injected", because a recap that shrinks in silence is indistinguishable from a store that emptied.Unrecognised input runs the old way. No
source, an empty value, a spelling from a future release, or no stdin at all all fall through to today's full output. An absence read ascompactwould silently stop injecting memory for anyone whose payload shape differs from the one the heuristic was written against — the failure this plugin exists to prevent.Two CHANGELOG entries added here, not in their own PRs
#323 and #337 merged without one, so they would have shipped unrecorded. #323 is an external contributor's fix, and the CHANGELOG is where that shows up. Both entries are written in this release commit rather than backfilled into merged PRs.
Release mechanics
Three version sites, all at
0.19.0:.claude-plugin/plugin.json, the README badge, and the CHANGELOG heading.tests/test_version_manifest.py— 5 passed locally. A residual sweep for0.18.0across all tracked files (no extension allowlist, per #335's lesson) returns nothing outsideCHANGELOG.md.The
plugin.jsonbump silently no-matched on the first attempt and was caught by reading the file back rather than by trusting the edit's exit. That is the half-bumped release the version guards exist to prevent, and the read-back is what found it.Gates
maingreen at leg level one506937— 12/12, one workflow declared (tests), one dispatched, none unaccounted for.v0.18.0..e506937: round 1 in flight — this does not merge until it reports. An audit that did not run must never read as an audit that found nothing.cohort-*mechanism, verified rather than assumed.