Release 0.9.3 - #218
Merged
Merged
Conversation
ccomb
added a commit
that referenced
this pull request
Jul 15, 2026
The engine's delete-by-ids selection shipped in v0.9.3 (#218) with a wire bump serving as its capability marker: an older engine drops the unknown `ids` key and reads the request as an empty filter — "everything" — which a destructive operation must never let happen. The client therefore checks the engine's advertised `wireVersion` and refuses to send `ids` to anything below 3, with a clear upgrade message; nothing is sent at all in that case (spec-pinned). The compat policy grows a second constant for this: `REQUIRED_WIRE` stays the floor (2 — wire-2 engines v0.9.1/v0.9.2 keep working for everything else), and `KNOWN_WIRE` (3) is the newest revision this client understands, so the "upgrade pyvolca" warning now fires only above what the client knows instead of on every connection to a 0.9.3 engine. `keep` and `extra` compose with `ids`; the filter arguments (and `exact`) are refused client-side, mirroring the engine. README compatibility line regenerated. 241 tests green.
Cut the 0.9.3 release: date the changelog section, drop the `-dev`
suffix, and advertise wire revision 3.
Since 0.9.2 the engine gained the delete-by-ids selection, a server
that starts without --config, and two honesty fixes: the supply-chain
and consumers name= filter actually filters, and a scoring integrity
error answers 500 instead of a silent 0.
The wire bump carries no break — every change is additive and existing
clients keep working. It exists as a capability discriminator: a client
about to send the delete ids selection must be able to tell it from an
older engine, which would ignore the unknown key and treat the request
as an empty filter ("everything") — a guess a destructive operation
must never make. pyvolca's REQUIRED_WIRE deliberately stays 2 so the
current client keeps accepting 0.9.1/0.9.2 engines; only the future
ids= parameter will demand revision 3.
Final state after this merges: main carries the released 0.9.3 version
and a dated changelog, ready to tag.
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.
Cut the 0.9.3 release: date the changelog section, drop the
-devsuffix, and advertise wire revision 3.Since 0.9.2 the engine gained the delete-by-ids selection, a server that starts without
--config, and two honesty fixes: the supply-chain and consumersname=filter actually filters, and a scoring integrity error answers 500 instead of a silent 0.The wire bump carries no break — every change is additive and existing clients keep working (pyvolca 0.8.x prints at most an upgrade hint). It exists as a capability discriminator: a client about to send the delete
idsselection must be able to tell it from an older engine, which would ignore the unknown key and treat the request as an empty filter ("everything") — a guess a destructive operation must never make. pyvolca'sREQUIRED_WIREdeliberately stays 2 so the current client keeps accepting 0.9.1/0.9.2 engines; only the futureids=parameter will demand revision 3.Final state after this merges: main carries the released
0.9.3version and a dated changelog, ready to tag.