Package-level declarations
Types
Whether a difference between two Manifests keeps the contract.
The comparison of a service's Manifest with its baseline, the committed Manifest of its contract. A breaking change fails the gate (failed); a change that breaks on purpose, for a new major version, is recorded as the new baseline instead.
Compares two Manifests and classifies every difference of the wire contract as ChangeKind.ADDITIVE or ChangeKind.BREAKING. Entries are matched by name: a removed context, aggregate, command, event, route, lifecycle command, query model, subscription, published stream or error code is breaking, an added one additive. A command or an event renamed with its former name in its aliases keeps matching: the rename is additive, though the routes the old name gave are reported removed.
Reads and writes Manifests as JSON text, and finds the fragments on a classpath.
What the plugin's workers run: the plugin resolves these tools (victools, Jackson, the kernel) into a configuration of the build's project and loads them in an isolated class loader, so none of them reaches the build script's class path. The plugin calls these functions by name, through reflection, and passes only JDK types across that boundary.
Which way a schema's values flow: an INPUT is what old clients send, such as a command or a route's request, so it may only accept more; an OUTPUT is what old clients read, such as a route's response, so it may only produce less: a type widened, an enum value added, a field made optional or an alternative added breaks it, and a required field added or an optional one removed does not. A STORED schema is what the service's own records were written with, an event's or a state's, which it reads back: an input for the structure, but no stored record is checked against a constraint (a bound, a pattern, a multipleOf), so a constraint changed either way is additive there; whether it breaks is its readers' to say, an OUTPUT's.