chore(release): 0.2.1 — the first release in which a green result is evidence - #70
Merged
Conversation
The first release in which a GREEN result is evidence. Two ways a run could report `looks safe to adopt` over something it never measured are closed (MP-159, MP-160), and the first error a stranger hits no longer hands them the command they just ran (MP-161/MP-170). `[M]` 749 passed + 4 xfailed (753 collected), 95% of 2085, ruff + black clean. `[M]` Verified from a clean-venv wheel install: init --demo / baseline / check all behave as the README documents.
…at was wrong a fifth time The pre-release claims audit BLOCKED 0.2.1 on two doc defects, neither in code. 1. CHANGELOG link definitions were stale: `[Unreleased]` still compared from v0.2.0, and there was no `[0.2.1]` definition at all, so the new heading rendered unlinked. 2. The 0.2.1 summary claimed 'the first release in which a GREEN result is evidence'. Refuted three ways: ADR-0033's own stated accepted failure mode (a run exits 0 over a scenario it never measured), the strict xfail pinning MP-165, and MP-44 -- which the auditor proved live by RENDERING a Report, showing `_report_header` branches on five conditions and never on `meta.skipped`, so a document that measured 1 of 14 still leads with 'No behavioral change observed'. The entry now says what is true: two specific holes are closed, and a green exit code is still not proof of full coverage. Also fixed, and it is the same mistake a fifth time: README's exit-code paragraph omitted provider rejection, though `check` exits 3 whenever `unmeasured or rejected`. The MP-160 commit claimed the contract was 'restored on all four' surfaces. There were five. Added the missing CHANGELOG entry for MP-161/MP-170 -- the summary advertised the fix while the document carried no record of it, including the user-visible `scan` and `init` path corruption. `[M]` 749 passed + 4 xfailed; README's 749 / 753 / 95% independently reconfirmed by the auditor, along with both suite hashes.
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.
Version bump only — the substance shipped in #67, #68 and #69.
The first release in which a GREEN result is evidence. Until now, two reachable paths let
modelpin checkreport "looks safe to adopt" over something it never measured, and PyPI's0.2.0still contains both.What a user gets that they did not have
[M]On a real six-scenario suite againstopenai/gpt-oss-120b, all six declaredtoolsand only four ever called one: a third of the suite was collecting a clearance it had not earned.[M]In the reproduction that scenario was a proven regression, reported as adoptable.pip install 'modelpin': the command they had just run. Rich was eating[providers]as a style tag.Verified before tagging
[M]749 passed + 4 xfailed (753 collected), 95% of 2085; ruff + black clean.[M]twine checkPASSES on both the wheel and the sdist.[M]Clean-venv install of the actual 0.2.1 wheel, no extras, empty directory:version→ 0.2.1,init --demo→ 0,baseline→ 0,check→ exit 1 with the regression,scan→ 0. The README quickstart runs verbatim from the shipped artifact.[M]modelpin/data/models.jsonis absent from the wheel by design —watcher/registry.pymirrors it into Python precisely because "underpip installthere is no such file", and sniffing the cwd was judged worse than the failure.Release mechanics
Publishing is Trusted Publishing (OIDC) from
release.yml, fired by a published GitHub Release — not by pushing a tag. After merge: tagv0.2.1at the merge commit, re-point the floatingv1to the same commit (it currently points at63a8bbb, andv1must resolve to a commit containing the rootaction.ymlor every consumer's workflow breaks), then publish the Release.