Repository navigation
Conversation
The repository had exactly one tag, v2025.01 from January 2025, in a vYYYY.NN shape used once and never repeated - so nothing said whether ".01" was a month or a counter, and three contract changes shipped untagged behind it. Adopt vMAJOR.MINOR.PATCH instead, matching every other Oddin contract repository, with the major anchored to the contract generation rather than to this repository's history: v1.x.y describes wire v1, the one behind the /v1/ REST paths and the feed/v1 and rest/v1 SDK packages, so a major bump is something clients are told about rather than something they discover. Additive attributes and messages are minor; corrections that do not change what the producer sends are patch. v2025.01 is referenced nowhere - not by the SDKs, not by the docs - so it is left in place rather than continued. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pushing a tag ran the schema check and produced nothing; the release had to be built by hand, which is how the repository ended up with one tag in twenty months. A tag now publishes the GitHub release itself, gated on the schema check for that same tag so a schema that does not compile cannot become a download. It attaches a zip of schema/ alone - consumers regenerating bindings want the XSDs, not the fixtures and the checker. Two behaviours worth knowing rather than rediscovering: a release created by hand before the tag is pushed keeps its notes and only gains the asset, so a breaking change can still be explained properly; and a tag with a hyphen in it is published as a pre-release, matching how the SDKs tag their release candidates. The job elevates to contents:write on its own rather than widening the workflow default, so the job that executes repository code keeps read. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
dsaiko
force-pushed
the
docs/versioning-policy
branch
from
September 14, 2026 13:14
2d80e03 to
66cbdd1
Compare
Contributor
Author
|
Landed on Content is unchanged from what was reviewed here: |
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.
The repository had exactly one tag —
v2025.01, January 2025 — in avYYYY.NNshape used once and never repeated. Nothing said whether
.01was a month or acounter, and three contract changes (#15, #16, #18) shipped untagged behind it.
Nothing enforced a release either:
ci.ymlalready triggered onv*tags but hadno release job, so pushing a tag ran the schema check and produced nothing. That
is how a published contract ends up with one release in twenty months.
This fixes both halves.
The scheme, written into the README
vMAJOR.MINOR.PATCH, with the major tracking the contract generation ratherthan this repository's history.
v1.x.ydescribes wire v1 — the one behind the/v1/REST paths and thefeed/v1/rest/v1SDK packages. Av2.0.0wouldonly ever accompany a
/v2/, which means a major bump is something clients aretold about rather than something they discover. Additive attributes and messages
are minor; corrections that do not change what the producer sends are patch.
This also brings the repo in line with every other Oddin contract repo —
protocol_buffers
v0.1091.0, otsschemav0.29.0, bragischemav0.2.13, and thethree SDKs — where
oddsfeedschemawas the only CalVer outlier.v2025.01is referenced nowhere (not by the SDKs, not bydocs), so it is leftin place as a legacy tag rather than continued.
The release job
A
v*tag now publishes the GitHub release itself:needs: schema, so a tag whose schema does not compile cannotbecome a download. Given
match_summary.xsddid not compile from beforev2025.01until Make the schema describe what the producers actually send #18, this is not hypothetical.oddsfeedschema-vX.Y.Z.zipcontainingschema/alone. Consumerswho regenerate bindings want the XSDs, not the fixtures and the checker that
GitHub's own source archives carry.
gains the asset — so a breaking change can still be explained properly, the way
v1.0.0was. A bare tag gets generated notes instead.v1.1.0-rc.1) is published as a pre-release, matchinghow the SDKs tag their release candidates.
contents: writeper job, so the job that executesrepository code keeps read-only.
Verified the three branches of that shell against a mock
gh:v1.0.0is already tagged and released by hand, so the job first runs on the nexttag. No schema change here —
make checkstill passes at 31 schemas, 41 payloads,0 problems.
Note for whoever reviews this
The
oddsfeedschema-main-rulesetsetsrequire_code_owner_review, but therepository has no
CODEOWNERSfile. Worth either adding one or dropping thatrequirement.
🤖 Generated with Claude Code