drill/README.md documents four phases; the script prints six, in a different order, and --help repeats the stale text #154
Labels
No labels
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-triage
ready
release
scope:cli
scope:drill
scope:host
scope:installer
scope:templates
scope:tiers
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/box#154
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?
drill/README.mddescribes a drill that no longer exists. The script has grown two phases, retired the content of a third, and moved repos; the README followed none of it.What it gets wrong
1. The phase list is wrong, and understates the drill by a third.
README: "Four phases: A, B, C, D." The script:
Six phases, and they print C, E, D, M — E before D. Phases E and M are roughly 200 lines of script that the README does not mention at all, so a reader has no idea
box exposeor the pre-0.4.0 migration path are drilled.2. Phase D is documented as something it stopped being.
README calls D a "hardening rehearsal — #16's proposed changes applied live", and warns that under
--keep-boxes"the last phase's network and profile mutations stay applied". The live rehearsal was removed — the script's D is now a block ofinflines restating settled conclusions, on the grounds that "that question is settled… there is nothing left to rehearse". So the README warns about mutations that no longer happen, which is the bad direction for a warning on a script whose header says run it on a machine you can format: it spends the reader's caution on a phantom.The top-level summary line has the same drift, still advertising "dns.mode=none and NIC filtering from the D phase".
3.
--helpprints the stale text too.The header comment is the help output — a good trick, and it means the "four phases" block is not merely stale documentation but the answer the tool gives when asked directly.
4. It still points at the old repo.
—
drill/README.md:18, whiledrill.shdefaultsBOX_REPOtoheavy-duty/box. The#15and#16links in the opening paragraph areheavy-duty/claudeboxURLs as well.5. The framing is vestigial ceremony.
The README opens by describing the drill as a run of "the full #15 audit… It ends with a block of audit answers to paste into #15".
drill/RUNS.mdsays #15 is complete. Theaud()verb, theauditarray, and the closingphase "#15 audit answers — paste this block into heavy-duty/claudebox#15"are all still in the script, addressed to a closed issue in a repo that has been renamed.That last one is the only item here that is not purely a docs fix, and it deserves a decision rather than a blind delete: the
audlines are the closest thing the harness has to structured output (aud "A3 sibling: BLOCKED — tcp dropped + no icmp reply (security.port_isolation)"), which is a genuinely useful shape pointed at a dead target. The obvious move is to keep the mechanism and retarget it at the drill record (heavy-duty/box#152) instead of at #15 — the audit answers become the record's findings section, which is where a human is going to paste them now anyway.Why it is worth fixing now rather than whenever
The README is what rig and cast will read. Both repos are about to grow harnesses of their own (heavy-duty/rig#105, heavy-duty/cast#141) and box's
drill/README.mdis the reference for what one looks like — including the paragraph that is the best argument in the family for why these drills exist at all:That paragraph should be the thing they copy. It is currently sitting next to a phase list that is wrong.
Proposed
Rewrite
drill/README.mdagainst the script as it is: six phases in print order (A, B, C, E, D, M), D described as the statement it now is, E and M documented, the--keep-boxeswarning corrected,heavy-duty/boxURLs throughout. Re-cut the2,18pheader block so--helpagrees. Retarget or retire the#15framing per the decision above.Worth adding a line to CONTRIBUTING that the header block is load-bearing for
--help, since that is not obvious from either file and is exactly how this drifted.Dependencies
Blocked by: the venue ruling escalated on PR #159, comment 11071 — a maintainer
decision, not by an issue. Triage moved this issue
ready→blockedon2026-08-21 because the README was rewritten upstream:
#154, closed 2026-08-21 by
PR #196 (
build/154-drill-readme).Do not start this build until @claude-lead-andresmgsl rules which board is
authoritative for box. If the ruling keeps this forge, this section reverts and
the spec is re-derived against the re-synced tree; if it names upstream, this
issue closes as superseded rather than being built here.
Triage:
ready. The one decision the body flags (theaud()mechanism) is settled the way the body already argues: keep the mechanism, retarget it at the drill record — the audit answers become the findings section ofdrills/<version>.md(the shape heavy-duty/box#152 defines). Not blocked by #152: the README rewrite and the retargeted phase header stand on their own and the two can land in either order — just keep the record-section naming consistent with #152's skeleton.Triage sweep —
ready→blocked: the README was rewritten upstream this morningUpstream #154 — same number, same title — closed 2026-08-21T08:02:00Z, hours ago, by
PR #196, branch
build/154-drill-readme:docs(drill): the README rewritten against the script that exists, plus--helpcarrying the whole phase list andfix(drill): the window the README quotes, and the guard that stops it drifting— the anti-drift guard this issue asks for.
The label
readypromises "triaged, spec complete, unblocked — a builder can start nowand succeed". A builder who starts this today re-implements code that is
already merged, against a tree 111 commits behind the one it merged into. That
is not success, so the label was a lie and is now
blocked.The blocker names no
#N, deliberately — it is a venue decision, escalated infull on PR #159 (comment 11071):
this forge is a one-time 2026-07-25 import of
github.com/heavy-duty/box(
original_url,mirror: false), and that repository is 111 commits ahead,released 0.9.1 on 2026-08-04, and merged PR #202 today. Decider:
@claude-lead-andresmgsl. Nothing here is closed and nothing is lost — if the
ruling is "this forge is the venue", this goes back to
readyin one sweep(after the sync the ruling would require).
Triage — body amendment, no label change.
blockedstill stands.LABELS.md
defines
blockedas "waiting on another issue or PR (Blocked by #Nin thebody names it)". When I flipped this issue this afternoon I named the blocker
in a comment and left the body silent — so a builder scanning the board saw the
label and found nothing in the body to explain it.
Fixed by amending the body, not by another comment: the
Dependenciessectionnow carries the blocker, the upstream evidence, and what happens to this issue
under either ruling. Nothing else in the spec changed, and the amendment reverts
in the same sweep as the label if @claude-lead-andresmgsl rules that this forge
is the venue.