Skip to content

Unify the versioning scheme - #17

Merged
euyis1019 merged 1 commit into
mainfrom
chore/unify-versioning
Aug 20, 2026
Merged

Unify the versioning scheme#17
euyis1019 merged 1 commit into
mainfrom
chore/unify-versioning

Conversation

@euyis1019

@euyis1019 euyis1019 commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Closes #16.

The problem

Three version numbers, no stated relationship between them:

Where Before What it means
manifest.jsonbench_version 2026.08.17-v0_4.2 which tasks the benchmark contains
manifest.jsonsite.site_version 2026.07.10-fixtures the fixtures — but no code ever read it
package.json, pyproject.toml 0.1.0 the harness code

Two of them are dates, one is semver, and the v0_4.x part is left over from the private repo.

What this PR does

Keeps two of them, deletes the third.

1. The dataset version becomes 0.4.2 (was 2026.08.17-v0_4.2).

This number answers one question: if I re-run the benchmark, can I compare my numbers with the published ones? So it is bumped by what the answer becomes:

Bump When Still comparable?
MAJOR tasks added or removed, or a grader, fixture or capability assignment changed No, the denominator moved
MINOR tasks or subsets added, existing ones untouched Yes, for the existing subsets
PATCH task descriptions and other text that does not run Yes

validate now rejects anything that is not MAJOR.MINOR.PATCH.

Why 0.4.2 and not 1.0.0: the published runs recorded 2026.08.02-v0_4.1, which is 0.4.1. Everything that changed since is task descriptions — a PATCH. Restarting at 1.0.0 would tell a reader the dataset changed and the published numbers no longer apply, which is not true.

2. The harness version stays 0.1.0, but now lives in one place.

runner/version.py holds it, pyproject.toml reads it from there, and a test keeps package.json in sync. Runs record it as harness_version, so a report can say which code produced it.

3. site_version is deleted.

Nothing read it. The fixtures it labelled are part of the dataset: editing a fixture changes results, so that is a MAJOR bump of the dataset version. Every run already records runner.fixtures.tree_sha256, which can be checked — unlike a label someone has to remember to update.

What breaks

  1. The old dated bench_version is now a hard validate error. The three published runs keep their old string; new runs record semver.
  2. run_manifest.json no longer carries site.site_version. It is in the three published run manifests and will be in none of the future ones.

Neither affects reproducibility: a run is identified by the sha256 digests in run_manifest.json, not by these labels.

Checks

  • validate, scenarios --check, pytest: 599 passed, 7 skipped (11 new)
  • The published four-engine report still regenerates byte-for-byte identical to the committed copy

The repo carried three version identifiers in two styles, with nothing stating
how they relate: `bench_version` (`2026.08.17-v0_4.2`), `site.site_version`
(`2026.07.10-fixtures`, read by no code at all), and the harness `0.1.0`. The
`v0_4.x` part is lineage from a private repository and carries no meaning here.

Two axes, one style. `bench_version` becomes plain semver and its shape is now
enforced by `validate`, so the number answers the only question it exists for:
whether two runs are comparable. MAJOR is task membership, graders, fixtures or
capability assignments; MINOR is additive; PATCH is descriptions and other
non-executable metadata. The published runs sit at `0.4.1` and HEAD at `0.4.2`,
which under these rules is a PATCH apart — hence the numbering rather than a
fresh `1.0.0`, which would have read as an incompatible dataset.

The fixture tree belongs to the dataset axis, so `site_version` is dropped
rather than kept in sync; a run already records `runner.fixtures.tree_sha256`,
which is checkable where a hand-maintained label is not. The harness version
moves to `runner/version.py` as the single source `pyproject.toml` reads, and
runs now record it as `harness_version`.

Reports keep regenerating byte-identically from the published evidence: runs
predating this scheme carry no `harness_version`, and the report header only
gains the field when one is present.
@euyis1019
euyis1019 merged commit 3f1580a into main Aug 20, 2026
1 check passed
@euyis1019
euyis1019 deleted the chore/unify-versioning branch August 20, 2026 13:27
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.

Unify the versioning scheme

1 participant