Skip to content

fix(packages): --staged excuses only the pre-bump lag producer of PC-RELEASE-LEVEL - #246

Merged
chrisdpurcell merged 1 commit into
testingfrom
staged2
Sep 1, 2026
Merged

chrisdpurcell merged 1 commit into
testingfrom
staged2

Conversation

@chrisdpurcell

Copy link
Copy Markdown
Collaborator

Summary

Correction to check-release --staged (PR #239): PC-RELEASE-LEVEL has several producers and only the unbumped-version lag ("proposed tool release must advance beyond the released baseline") is expected mid-train. The staged expectation is now keyed on that producer via an additive CatalogDiff.pre_bump_lag, so a breaking default promotion, a proposed-major mismatch, or a wrong bump level still exits 1 under --staged. Non-staged output is unchanged; docs/usage.md documents the JSON coherence rule (ok is the gate, classification the unstaged release verdict).

Governing work

Supporting: #227

Acceptance coverage

  • Review finding MUST-FIX 3 (/tmp/ps529-session/reviews/review-landed.md).
  • New tests: test_release.py (lag vs non-lag producers), test_cli.py (breaking promotion still exits 1 under --staged).

Verification

tests/package_contract/test_cli.py (22), test_release.py (30), tests/test_usage_doc_inventory.py (65), tests/control_plane/test_catalog_refresh.py (33); ruff, basedpyright, five validators, prettier + markdownlint — all exit 0. Live --staged on the tree exits 0 with the lag finding labelled expected.

PC-RELEASE-LEVEL has two producers in classify_catalog_diff: the pre-bump
lag (the proposed tool version has not advanced past the baseline) and a
breaking default promotion without an owner-designated major, which is a
genuinely forbidden transition. Keying the staged expectation on the code
excused both, so --staged could exit 0 on a real release violation.

The classifier now names its own lag findings through the additive
CatalogDiff.pre_bump_lag, and the CLI labels exactly those plus the two
single-producer consistency codes. `findings` and every rendered report
are unchanged, so non-staged output stays byte-identical. docs/usage.md
states the producer distinction and documents why a staged pass reads
ok:true with classification:"forbidden".

Refs #227
Refs #236
@chrisdpurcell
chrisdpurcell marked this pull request as ready for review September 1, 2026 20:59
@chrisdpurcell
chrisdpurcell merged commit 93e6780 into testing Sep 1, 2026
3 of 4 checks passed
@chrisdpurcell
chrisdpurcell deleted the staged2 branch September 1, 2026 20:59
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