BUILDER.md — a claim held by directive is the parked claim's fifth shape #113
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#113
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?
Context
Part of #112. danmt's ruling on #111 froze every PR unrelated to the changelog work until fragments reach every repo. That freeze parks eight claims across two repos today — ceremony #101, #104, #105 and rig #63, #95, #106, #119, #133 — and it is not the last freeze this family will run.
BUILDER.md's Picking section enumerates the parked shapes closed: "Exactly four shapes qualify". None of them is a directed hold. Shape 1 requires
needs-rulingon the issue, and there is no ruling pending here — the ruling was made. So a builder reading their own doctrine today finds their frozen claim in the "Not parked" list, beside "waiting for a good moment", whose stated move is to unassign and restoreready. That is the wrong move: the work is in flight, the PR exists, and it resumes when the freeze lifts.The triage side of this is already written and has nowhere to land: TRIAGE.md says "When you direct a builder to hold a claim that has no build work left, say the claim is parked and name what it waits on — the directive and the builder's doctrine (BUILDER.md) must use one word." It points at a shape BUILDER.md does not have, and its own qualifier ("that has no build work left") excludes exactly this case.
Spec
Add a fifth parked shape to BUILDER.md's Picking list, and change "Exactly four shapes qualify" to five:
Declaration. Shape 5 declares like shapes 1–3, not like shape 4: a comment on the issue naming what it waits on and who owns the next move. Where the directive arrives as an
attentiondemand (the normal case — triage sets it in the same comment that directs the hold), the builder's pickup comment is that declaration: one comment, not two. Add the clause to Claiming'sattentionbullet, which currently says a demand on a parked claim is usually its unpark and the slot should be taken back — a demand that is the park does not take the slot back.Board bookkeeping under a directive hold, stated once so the next freeze is mechanical rather than improvised:
blockedwith a comment naming what it waits on (the staleness sweep already skipsblocked);claimed— the builder still owns it — and carriesattentionuntil the builder acks;Amend TRIAGE.md in the same PR: drop "that has no build work left" from the directed-hold sentence (a freeze holds claims with work in flight — that is the whole point), and say that the directive names what the hold waits on and sets
attentionso the assignee's ack is visible on the board. Keep the "one word" requirement and the cross-link, which is the sentence's actual load.Doctrine-only. No machinery reads or writes any of this (LABELS.md already states
attentionis hand-set and unenforced), and no reconciler learns a new state.Tasks
attention-demand bullet in Claiming: a demand that is the park declares it and does not take the slot back.test/run.shgreen; shellcheck/actionlint unchanged.Acceptance criteria
attentiondemand that is the park declares it, in one comment, and does not take the slot back.blocked, issue staysclaimed+attention, no unassign, reclaim does not fire.actions/,lib/,bin/or.github/changes.Test plan
test/run.sh— full suite green (test/ruling.test.shasserts theBUILDER.md#the-ruling-askanchor still resolves; the edits must not move or rename that heading).blockedlabels must match the bookkeeping list verbatim.Dependencies
Part of #112. Blocks nothing; it is first because it is the paperwork the freeze itself runs on.
Claiming — starting the doctrine-only fifth parked-shape update now. I will implement the exact BUILDER.md and TRIAGE.md contract, preserve the negative abandonment boundary and ruling anchor, verify all eight frozen claims against the text, and run the full suite before review.