feat: add contract-version discovery command#20
Merged
Conversation
Add a read-only `schema-versions` command (alias `contracts`) that prints the resolved tool_version plus every supported output-envelope and input-schema version as canonical JSON, then exits 0 without loading any mission, vehicle, or asset file. A backend can call it at startup to pin and check contract compatibility instead of running a full job to read versions off an envelope. Every printed version is sourced from the same module constant the envelopes emit; a drift test asserts the printed map matches those constants so the two cannot silently diverge. The batch input version, which has no named constant, is read from the BatchManifest Literal field annotation. No new schema or envelope version is introduced and golden fixtures are unchanged.
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.
Summary
Add a read-only
schema-versionscommand (aliascontracts) that prints the resolved tool_version plus every supported output-envelope and input-schema version as canonical JSON, then exits 0 without loading any mission, vehicle, or asset file. A backend can call it at startup to pin and check contract compatibility instead of running a full job to read versions off an envelope.Test Plan
uv run pytestpassesuv run ruff check .passesContract Impact
docs/VERSIONING_POLICY.md