Skip to content

Release v0.2.0: Vault Lab ships; release and method versions split - #1

Merged
SaMullinsJr merged 1 commit into
mainfrom
release/v0.2.0
Jul 16, 2026
Merged

Release v0.2.0: Vault Lab ships; release and method versions split#1
SaMullinsJr merged 1 commit into
mainfrom
release/v0.2.0

Conversation

@SaMullinsJr

Copy link
Copy Markdown
Member

Why

Tag v0.1.0 certifies a repository with no Lab in it; main's README leads with the Lab. Anyone downloading the release gets a different product than anyone browsing the repo. This is the GPT surface review's Priority 1 ("cut v0.2.0, not v0.1.1 — Vault Lab is a substantial new public surface").

The defect that blocked it

GPT's instruction was not executable as written, and this PR fixes why. check_version_parity.py welded eight files to one version string — including templates/vault.toml's method_version. Bumping everything to 0.2.0 pushes method_version out of the 0.1.x series that bvm-lint itself enforces (lint.py, BVM002), so the checker rejects its own templates and two conformance tests fail. Verified empirically before changing anything.

The weld was invisible at v0.1.0 because the method and the release were born together; the Lab is the first release where the two genuinely diverge.

The split

Track Names Files Now
Release what ships from this repo pyproject.toml, bvm_lint.__version__, CITATION.cff, README badge, CHANGELOG.md 0.2.0
Method the spec contract vaults declare via method_version SPEC.md, templates/vault.toml, examples/…/vault.toml 0.1.0, unchanged

This is honest, not cosmetic: since v0.1.0, SPEC.md, src/, and schemas/ are byte-identical except for the SPEC.md status line (which said "release candidate" — stale since 2026-07-15). The method did not change; a teaching surface was added.

check_version_parity.py now enforces the two tracks separately and pins the method version to the 0.1.x series, with a new regression test for the series-escape case (all method files agreeing on 0.2.0 must still fail).

Against the review's five release items

  1. Complete changelog entry[0.2.0] documents the Lab, the fail-closed runner, the version-model split, and boundaries.
  2. Corrected specification status — SPEC.md no longer says "release candidate"; its **Version:** stays 0.1.0.
  3. Governing Vault Lab specification linkedlab/README.md gains a contract section: sealed build spec v0.3.0 cited by SHA-256 (2afb782d…), with the two required verbatim statements reproduced — checked against lab/tools/lab.py's actual strings.
  4. Release-tag CI evidence — CI runs on this PR; after merge I'll tag v0.2.0 and cut the GitHub release with notes linking the tag's CI run.
  5. Method vs Lab/release version distinction — the split above, stated in README, CHANGELOG, and enforced in code.

Verification

REPOSITORY VERIFY PASS
  68 tests OK (was 67; +1 series-escape regression)
  VERSION PARITY PASS (release 0.2.0, method 0.1.0)
  DIAGNOSTIC PARITY CHECK PASS (49 codes)
  RELEASE SURFACE CHECK PASS
  VAULT LAB CHECK PASS (5 cases, 4 scenarios, surfaces present)
  bvm-lint 0.2.0

After merge

I'll tag v0.2.0 on the merge commit and publish the GitHub release. Until then the safe public claim is unchanged: Vault Lab is available on unreleased main.

The public record was stale: tag v0.1.0 certified a repo with no Lab in it
while main's README led with the Lab. Cutting v0.2.0 was blocked by a defect
in the release machinery itself: check_version_parity.py welded eight files
to one version string, so bumping to 0.2.0 forced templates' method_version
out of the 0.1.x series that bvm-lint accepts — the checker rejected its own
templates (BVM002) and two conformance tests failed. Verified empirically
before this change.

The split: RELEASE version (pyproject, bvm_lint __version__, CITATION.cff,
README badge, CHANGELOG) names what ships from the repo and moves to 0.2.0.
METHOD version (SPEC.md, templates/vault.toml, examples vault.toml) names
the specification contract vaults declare conformance to and stays 0.1.0 —
honestly: SPEC.md, src/ and schemas/ are byte-identical to v0.1.0 except the
SPEC.md status line ("release candidate" was stale).

check_version_parity.py now enforces the two tracks separately and pins the
method version to the 0.1.x series (BVM002 contract), with a regression test
for the series-escape case. lab/README.md gains the governing-contract
section: sealed build spec v0.3.0 cited by SHA-256, plus the two verbatim
statements (opening boundary, final bounded claim) matching lab/tools/lab.py.

REPOSITORY VERIFY PASS: 68 tests, version parity (release 0.2.0, method
0.1.0), diagnostic parity 49 codes, release surface, vault lab check.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@SaMullinsJr
SaMullinsJr merged commit 8bfd8f5 into main Jul 16, 2026
6 checks passed
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