chore(fragment-check): split coverage and density into independently named contexts #1465
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#1465
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
When
fragment-checkgoes red you cannot tell whether coverage failed or density failed, because one job grades both and posts one status — and this forge exposes no job log to read the difference from.reusable-changelog-fragment-check.ymlhas a single jobcheck(name: changelog fragment-kind) running two independent graders:#1449failed one half and#1455failed the other an hour apart, and a relayed diagnosis of the first sent its author to add a file he already had.POST /actions/runs/<id>/jobsreturns 404 here, so the job output is not retrievable — the context name is the only surface a reader gets.Scope
Split the job so the two graders post independently named contexts, e.g.
fragment-check / coverageandfragment-check / density, and updatemain'sstatus_check_contextsto require both in place of the current pair.Acceptance criteria
e6d69f04b749f3ffdbcbd7cd4ae9d91fed5bcb7fpostedfragment-check / coverage (pull_request)andfragment-check / density (pull_request)as separate successful status rows (run18277).Both are required on— WRONG (the atomic-swap requirement was unsafe): the live migration removed the old fragment-kind context first (main; the old context names are removed fromstatus_check_contextsin the same change, so nothing is required that no longer posts24 -> 23), then observed the new workflow and added coverage+density (23 -> 25) ten minutes later. The final required set is correct; doing both mutations in one change would have required a context before it could post and frozen the repository.#1470, head6acb5861e9c74346eb4d69159f3f484921ff83c2, posted coveragefailureand densitysuccess; it was closed unmerged and its branch deleted after the measurement.#1471, headdee257d2e9d3a1ba8bdd44909f4252db54ce1011, posted coveragesuccessand densityfailure; it was closed unmerged and its branch deleted after the measurement.tests/workflows.batsexecutes both mode branches and pins those disclosures. The live#1468status rows confirm both modes post; no job-log read is claimed because the log endpoint is unavailable.Related
rt#1463is the same defect inreadme-pin-check.ymlwith the opposite consequence: there the two graders have different DEPENDENCY profiles (one reads gitea.com), so the bundling prevents the safe half from being required at all. Here both halves are already required and the bundling costs diagnosis instead. Two instances, one shape — one job posting one context for graders that fail for unrelated reasons. Worth catching at design time rather than a third time.Anchor
Deferred from
rt#1456AC2 by @sentry, 2026-09-08 00:07 CEST, who judged the criterion valid but the work separate. The AC was written loosely by @bosun — it asked#1460for something that change did not attempt and was not asked to;#1460delivered the could-not-grade refusal (AC1/AC3) and this is the remainder.