Skip to content

feat(OSPS-BR-02.02): associate release assets with release identifiers - #445

Open
jmeridth wants to merge 3 commits into
mainfrom
feat/osps-br-02-02
Open

feat(OSPS-BR-02.02): associate release assets with release identifiers#445
jmeridth wants to merge 3 commits into
mainfrom
feat/osps-br-02-02

Conversation

@jmeridth

@jmeridth jmeridth commented Aug 13, 2026

Copy link
Copy Markdown
Member

Closes #17

What/Why

Implements OSPS-BR-02.02, the remaining half of the parent issue (BR-02.01 already landed): release assets must be clearly associated with the release identifier or another unique identifier. The new ReleaseAssetsAssociatedWithRelease step checks whether each published, non-draft release's asset names embed the release identifier (tag, tag without the leading v, or an unspaced release name), exempting signature/checksum/attestation/SBOM companions and standard docs files that are associated through the artifact they accompany. Unrecognized identifiers surface as NeedsReview rather than Failed because the control permits "another unique identifier" the scanner cannot observe (the same rationale the QA-02.02 SBOM check uses). Release gating reuses reusable_steps.HasPublishedRelease, so drafts are excluded and unobservable release data degrades to NeedsReview, with explicit confidence on every return.

Proof it works

  • 16-case table test asserting result, message, and confidence for every branch: unobservable data, drafts, no assets, tag/v-prefix/release-name association, case-insensitivity, companion exemptions, cross-release aggregation, message capping at five with an overflow note, a single-digit-tag overmatch guard, and companion-only releases.
  • Helper tests for identifier-candidate derivation and companion classification.
  • go test ./... across all packages and go test -race on the touched packages pass locally.

Risk + AI role

Low: a new single-step check plus wiring; no existing control logic modified. AI-generated end to end with maintainer-approved design; the interpretation (naming heuristic with NeedsReview, no Failed path) was an explicit maintainer decision over structural-only or fail-on-missing readings.

Review focus

  • The control interpretation: is NeedsReview-not-Failed the right call for assets without a recognizable identifier, and is the companion-file exemption list appropriately scoped?
  • Identifier candidate rules: v-prefix stripping with the two-character guard, and skipping spaced release names.

@jmeridth
jmeridth requested a review from a team as a code owner August 13, 2026 04:11
@jmeridth
jmeridth force-pushed the feat/osps-br-02-02 branch from fef1edd to 2c45635 Compare August 13, 2026 04:15
@jmeridth jmeridth self-assigned this Aug 13, 2026
@jmeridth
jmeridth marked this pull request as draft August 13, 2026 04:16
@jmeridth
jmeridth marked this pull request as ready for review August 13, 2026 04:16
Relates to #17

What/Why

Implements the remaining half of OSPS-BR-02: release asset names must
carry the release identifier (tag, tag without the leading v, or an
unspaced release name), with signature, checksum, attestation, and SBOM
companions plus standard docs files exempt. Unrecognized identifiers
surface as NeedsReview rather than Failed because the control allows
another unique identifier the scanner cannot observe.

Proof it works

gofmt, go vet ./..., go test ./... (all packages), and go test -race on
the touched packages pass locally. A 16-case table test asserts result,
message, and confidence for every branch, plus helper tests for
identifier-candidate derivation and companion classification.

Risk + AI role

Low: new single-step check plus wiring; no existing control logic
modified. AI-generated end to end by Claude Fable 5 with
maintainer-approved design.

Review focus

Control interpretation (NeedsReview over Failed for unrecognized
identifiers) and the identifier-candidate rules (v-prefix stripping with
the two-character guard, spaced release names skipped).

Signed-off-by: jmeridth <jmeridth@gmail.com>
…t catalog ID

Relates to #448

What/Why

Step doc comments should describe the behavior being assessed; the
catalog-ID linkage lives in the dispatch map. Reword this PR's new
comments so they do not re-couple logic to requirement IDs.

Proof it works

Comment-only change. go build clean and all evaluation_plans package
tests green.

Risk + AI role

Low. Comment-only. AI-generated (Claude Fable 5), human-directed.

Review focus

Wording accuracy: the reworded comments must still say exactly what
the check enforces.

Signed-off-by: jmeridth <jmeridth@gmail.com>
@jmeridth

Copy link
Copy Markdown
Member Author

🤖 e922b1f rewords this PR's new doc comment to describe behavior instead of the catalog ID, per #448 category 1. The ID linkage stays in the dispatch map entry.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement OSPS-BR-02

1 participant