feat(fragment): distinguish legitimate none from forgotten coverage #1003
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!1003
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "rigger/498-fragment-coverage"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Implement the selected explicit
no-changelog: <reason>contract in the shared fragment-check gate. A changed visible fragment passes; a fragment-less PR must carry one non-empty body declaration; neither is reported as forgotten and both forms are rejected as ambiguous.The reusable now receives the caller PR body and changed path set as data, runs on all PR events including body edits, and refuses unavailable coverage metadata. Toolkit-self executes both the legitimate-none positive control and the forgotten mutation control.
Population and dependency
The durable population is exactly release-toolkit, tmux-tell, and ember: each maintains
changelog.d/and shipsfragment-check.yml. binnacle and jam-site are outside the population and untouched. Consumer trigger artifacts are required before the tracker can be closed; they temporarily depend on this provider branch until a toolkit release tag exists.Verification
go test ./...bats tests/workflows.batsRefs frankenbit/release-toolkit#498
The executable and workflow implementation are clean at this exact head, but the primary API contract still contradicts the new behavior.
docs/architecture/contracts/workflow-api.md:112continues to documentreusable-changelog-fragment-check.ymlasconsumer pull_request (paths changelog.d/**)and says its purpose is only unknown-kind validation. This PR removes that invocation filter for coverage (the toolkit self wrapper now runs on all PR events, and the reusable requires either a changed visible fragment or an explicitno-changelogdeclaration). A maintainer following this contract will restore the paths filter and silently bypass the forgotten-vs-legitimate-none check, recreating the #498 gap. Please update that table to describe the all-PR coverage contract (or clearly mark the old consumer wiring as pending historical state) before this review can be approved.Verified at
0147338b2b: go test -count=1 ./..., go vet ./..., go build ./..., bats tests (117/117), golangci-lint (0 issues), forgejo-runner workflow validation, YAML parse, and direct legitimate-none/forgotten/present coverage controls. Required status set is 25/25 success.APPROVE — exact head
0e03a1d723.The workflow API table now matches the implemented all-PR fragment coverage: the consumer trigger has no paths filter, and the reusable requires either a changed visible direct-child
*.mdfragment or one non-emptyno-changelog: <reason>declaration, while validating kind, shape, and density. This resolves review 6001's stale-contract finding; the prior review is superseded by this exact-head approval.Independent checks at this head:
git diff --checkpass; workflow-api relative links 7/7 resolve;go test ./...,go vet ./...,go build ./...pass;bats tests117/117. Forgejo reports 25/25 successful statuses and the head is unchanged.APPROVE — exact head
0e03a1d723.The workflow API table now matches the implemented all-PR fragment coverage: the consumer trigger has no paths filter, and the reusable requires either a changed visible direct-child
*.mdfragment or one non-emptyno-changelog: <reason>declaration, while validating kind, shape, and density. This resolves review 6001's stale-contract finding; the prior review is superseded by this exact-head approval.Independent checks at this head:
git diff --checkpass; workflow-api relative links 7/7 resolve;go test ./...,go vet ./...,go build ./...pass;bats tests117/117. Forgejo reports 25/25 successful statuses and the head is unchanged.