box stops knowing about rig — the mint hook, the pin, the stamp and the bootstrapped mark come out, and box new always mints blank
#211
Replies: 3 comments
box new --name work # blank
box shell work
# in the box:
curl -fsSL .../rig/install.sh | bash
sudo rig bootstrap claude-box --user devThat's all good except that I wouldn't use sudo rig but rather use box root and then rig as root. Rig is meant to be used as root always. Note: I think the way to access the box as root is using |
|
Ruled on all five, so this converges. Accepted — minted as an epic, #212, with three children: #213 → #214 → #215. All three are members of the 0.10.0 window under your ruling 4, which overturns the recommendation this thread made. Recording the five answers where the work can read them:
On box new --name work --size medium # a blank box, nothing converged
box root work # root inside it, authorized by the host's Incus socket
# then, inside the box, as root:
curl -fsSL https://raw.githubusercontent.com/heavy-duty/rig/<ref>/install.sh \
| RIG_REPO=heavy-duty/rig RIG_REF=<ref> bash
rig bootstrap claude-box --user dev
Two things ruling 4 forced, which this thread did not priceThe first is a decision, and it is the one place your ruling made triage choose something you have not seen. #159 item 7 gives the new generic seed "exactly one conditional axis: whether a role was given" — role-given is an unprivileged tenant with The second is a cost, not a decision. Ruling 4 makes #210 — the hardware witness for the Related: the window's chain is now #159 → #213 → #214 → #215, four deep at one claim at a time, and its last link needs the same real-host session #155, #201, #204, #207 and #210 already wait on. That is the shape of ruling 4 and it is stated so the cut's date is not a surprise. What was not turned into work, and whyTwo build issues rather than one, and rather than seven. The #81 stays closed, the roles stay in rig, and the rig → box edge is untouched — Answered. |
|
Closing this thread as resolved — the ruling is on the record, the work is minted, and two of the three children have already shipped. Converged on Where it stands, so nobody has to reconstruct it from here:
On the One consequence of ruling 4 has since been paid out: #210, the hardware witness for the Comments still work here if there is more to say, and this can be reopened. Further work belongs on #212 and #215. |
Uh oh!
There was an error while loading. Please reload this page.
Opened at @danmt's direction on #205 (
2026-08-21T18:22:49Z): "We can start a new discussion. Just know that I'm willing to sacrificebox new claude-box. You always create a blank box. Shell into the box, install rig and runrig bootstrap claude-box. It's more work but removes the dependency."#205 is closed; this thread is its successor and carries the whole of the question. Nothing is minted here — this is a discussion, it is the input to triage rather than its output, and when it converges the deliverable is an epic, not one issue (the surface below is
bin/box, five seeds, the README, the design doc, the drill and CI).Everything measured against box
mainat1c2f06b. #209 is in flight and not measured in — see "What this does not touch" at the end, which is the one thing to read before anything else here.The starting position, stated as a position and not a question
box provisions and manages VMs. It does not converge them. A consumer who wants a tenant role installs rig inside the box and runs it, and an operator who wants that automated writes the piping in a wrapper — heavy-duty/crew, whose
crew newalready wrapsbox new, so the wrapper's public API survives the change even though what it pipes underneath does not.Two things this does not reverse, both worth nailing down before the survey:
claude-boxrole is rig's either way; the question is only whetherbin/boxruns it for you.BOX_RELEASEin rig's bootstrap stays exactly what it is. This thread is about one direction only.What box would hand back
bin/boxmatchesrigon 112 of its lines, but that number is mostly prose. The load-bearing pieces are four, and they are the whole deliverable:incus exec … rig bootstrap <role>, and the failed-converge recovery hintbin/box:2302-2313rig_latest_release()/rig_pin_resolve():1458,:1490-1496RIG_REFas a box-level knobuser.box.rig.repo/user.box.rig.ref:2170-2171bootstrappedmark (#130):1703-1707Plus, outside
bin/box: five seeds curl rig's installer through the@RIG_REPO@/@RIG_REF@pin point (templates/claude-box/user-data.yaml:127and its four siblings); 40 lines of README and 15 ofdocs/box-design.md; and the drill's rig pin, which recordsRIG_REF/RIG_SHAinto every record (drill/drill.sh:469-470, emitted at:503).What the operator does instead
The replacement path is not hypothetical — it is already written down in #159's Interim section, as the thing a released box can already do by hand:
Four steps where there is one today, and the fourth is the only one that ever changes.
What is genuinely lost, priced honestly
This is the part I would not want decided on the strength of the paragraph above.
bootstrapped(box: markbootstrappedafter a successful rig hook #130) loses its meaning, not just its code. box can take that mark today because box watched the convergence it ran — the file says so in its own comment at:1700-1702: "box cannot honestly take a mark for a run it did not watch." Once the operator runs rig by hand, no watcher exists.box restore work bootstrapped— "keep the role, undo what you did to it" — either dies or becomes a label the operator takes by hand and box never validates.RIG_REFstops being a box knob. RIG_REF defaults to main — a released box never converges a released rig #150 shipped release-pinning at mint and it is unreleased — it ships in 0.10.0. If the edge goes, RIG_REF defaults to main — a released box never converges a released rig #150's deliverable goes with it, unreleased, and so does the entire question The rig↔box edge has no upper bound — box floats to rig’s latest release, and nothing records which rig it drilled #205 was opened to answer. That is not an argument against; it is the bill.box new --name work --template claude-boxas "a creds-free coding-agent box (~10 min cold)" (README:262). It becomes a documented four-step path, and the ~10 min becomes the operator's to wait through interactively.The one real fork
@danmt's stated position is the strong form. There is a middle one, and the difference between them is the whole design:
bin/boxandtemplates/contain the stringrigonly in prose. Maximum honesty, maximum operator work, and the cleanest walk back to "rig enables a server".bin/boxbut stays in the template. The seed installs rig and runs the role from cloud-init;bin/boxknows nothing — no hook, no pin, no stamp, no mark. box provisions VMs; a template that uses rig is a consumer that chose it. Keeps the one-command box, costs the four losses above except feat: drop the claude- instance-name prefix #4, and turns the rig ref into a literal in each seed — a pin, the shape #189 rejected for rotting silently, though a visible one a consumer can edit.I read @danmt's "if you want to use rig inside box, that's fine but it's a consumer decision" as the strong form, and his "they would have to implement it" about crew as confirming it. But the middle form is also a literal reading of that sentence, and the two produce very different epics.
Questions
bootstrapped(box: markbootstrappedafter a successful rig hook #130): delete, or redefine as an operator-taken label box does not validate? I lean delete — an unvalidated mark that reads like a validated one is worse than no mark.drills/README.md's record shape changes.What this does not touch
#159 is not blocked and #209 merges as specified. It is claimed, built, ready for review, and I am not stopping it on a design that has not started, for a reason beyond timing: #159 moves toward this thread, not against it. It deletes four per-agent seeds, collapses the rig edge from five hand-maintained seeds into one rendered code path, and makes
--templatemean shape instead of tenant — which is precisely the split that makes a later removal a small cut rather than a rewrite.The honest tension, named rather than buried: #159 also promotes the rig edge to a first-class flag (
--role), so the strong form would delete a flag #209 is about to add. I judge that acceptable — the seed collapse is wanted under every outcome here, and one flag on one code path is the cheapest possible thing to later remove. @danmt merges #209 and overturns that judgement there if he disagrees.Also untouched: #210 (#159's hardware witness), and every other member of the 0.10.0 window.
All reactions