Skip to content

Revert v0.1.0-draft.1 two-tag arrangement#6

Merged
kikashy merged 1 commit into
mainfrom
revert/versioning-two-tags
Jul 23, 2026
Merged

Revert v0.1.0-draft.1 two-tag arrangement#6
kikashy merged 1 commit into
mainfrom
revert/versioning-two-tags

Conversation

@kikashy

@kikashy kikashy commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Reverts #5.

What happened

#5 prepared a second tag, v0.1.0-draft.1, to publish the permanent https://judgmentpack.org/schema/ $id values under an immutable release. The tag was pushed and the release workflow failed immediately:

ValueError: release tag does not match the conformance specVersion

Why it cannot work

tools/build_release.py:52-67 binds the release tag to specVersion in three independent assertions, plus a fourth on release notes:

assertion value tag v0.1.0-draft.1
conformance/manifest.jsonspecVersion 0.1.0-draft
schema → properties.specVersion.const 0.1.0-draft
schema → $id path segment 0.1.0-draft
releases/<tag>.md exists only v0.1.0-draft.md

The design is one tag per specification version, tag string equal to specVersion. A second tag for the same version would require either bumping specVersion across the manifest, schema const, schema $id, all 47 conformance cases and the examples — announcing a revision when nothing normative changed — or relaxing an invariant that is doing real work.

Reverting is better than leaving VERSIONING.md describing an arrangement that will never exist.

State

The tag has been deleted. No GitHub release was created — the run died at the build step — so per VERSIONING.md no immutable release was ever established, and nothing consumed it.

Consequence

main carries the correct permanent $id values; only the tagged v0.1.0-draft artifacts carry the temporary repository-hosted form. Implementations needing the permanent identifiers pin the commit until a future specification version is tagged. judgment-pack-runtime's release gate already accepts a full-length commit digest as an immutable reference.

Follow-up worth considering

Correcting the tagged $id values properly means a future specVersion bump. Worth a decision on whether 0.1.1-draft is warranted for that alone.

Verified

Restores the exact pre-#5 state (git diff 4609d83 for both files is empty). 37/37 tests pass.

🤖 Generated with Claude Code

This reverts commit ef5f715. The two-tag arrangement it documented cannot
exist: `tools/build_release.py` binds the release tag to `specVersion` in
three independent assertions -- `conformance/manifest.json` specVersion, the
Core schema's `properties.specVersion.const`, and the schema `$id` path
segment -- and additionally requires `releases/<tag>.md`. A tag of
`v0.1.0-draft.1` against `specVersion` `0.1.0-draft` fails validation before
any bundle is built, which is what happened when the tag was pushed.

The design is one tag per specification version, with the tag string equal to
`specVersion`. Republishing the same version under a second tag would require
either faking a version bump across the manifest, schema, 47 conformance
cases, and examples, or relaxing an invariant that is doing useful work.

The schema `$id` values on `main` are correct and permanent; only the tagged
`v0.1.0-draft` artifacts carry the temporary repository-hosted form.
Implementations needing the permanent identifiers should pin the commit until
a future specification version is tagged, which the runtime's release gate
already supports for a full-length commit digest.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: kikashy <kikashy@hotmail.com>
@kikashy
kikashy merged commit 5df1f55 into main Jul 23, 2026
4 checks passed
@kikashy
kikashy deleted the revert/versioning-two-tags branch July 23, 2026 22:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant