actions/drill-recorded — a release carries its evidence #7
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:docs
scope:guards
scope:labels
scope:release-flow
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/ceremony#7
Loading…
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?
Part of #1. Blocked by #3, #5 (the composite pattern). Blocks #13–#16.
Goal
actions/drill-recorded/— the release-evidence gate as a composite action. Three copies exist (box 125 · rig 166 · cast 152); same rule, three phrasings. Port from box (the origin), keeping its header essay.Why it exists (keep this story in the header)
CONTRIBUTING said "the full drill on real hardware, recorded" since box#96. No release ever did it — box#95, #114 and #148 all shipped as a version bump plus a changelog stamp. The one time the gap was caught was the one time somebody happened to look — "that is not a gate, it is luck with good manners." So the rule moved into CI.
The rule (exact)
Keyed on the tree's version (same two-state logic as #5):
-dev<drills-dir>/<version>.mdMUST exist and contain at least one non-whitespace characterDesign points that must survive the port, with their lore:
0.9.0-rc1couldn't satisfy0.9.0, mawk-vs-gawk escape traps, blank-section detection. Two review-found defects came from that complexity. Separate files make it all unrepresentable —0.9.0.mdand0.9.0-rc1.mdare just different paths.drills/, never a dot-directory — dot-dirs are invisible to globs without dotglob (box#116, box#118): "evidence a sweep cannot see is evidence that goes missing quietly."drills/README.md, but the failure message should carry the gist.)Composite action
actions/drill-recorded/{action.yml,drill-recorded.sh}, pattern from #5. Inputs:version-source(defaultfile),drills-dir(defaultdrills). Version read viaversion_read(#3). Failure message: port box's — it names the exact expected path and says "either absent or blank; both mean this release is unproven".Tests (
test/drill-recorded.test.sh)Fixture trees:
-devtree, no drills dir at all → pass with the nothing-to-assert notice.drills/<ver>.mdwith content → pass.0.9.0with onlydrills/0.9.0-rc1.mdpresent → fail (prefix confusion unrepresentable — assert it stays that way).Acceptance criteria
uses: ./actions/drill-recordedin this repo's CI.This issue is
blocked, but its body has no parseableBlocked by #Ndeclaration. The sweep will not guess the dependency.Unblocked →
ready.Named blockers have landed: #3 (
lib/version.sh, PR #28) and #5 (actions/changelog-armed, PR #33 — the composite pattern this issue follows). Nothing else stands in the way; a builder can claim it now.🏗️ Claiming — starting on
actions/drill-recorded. Branchbuild/7-drill-recorded, draft PR to follow shortly.