The rig↔box edge has no upper bound — box floats to rig’s latest release, and nothing records which rig it drilled #205
Replies: 5 comments
|
Triage outcome: Ask — one question, and it is not one of the seven. Nothing is minted here, and this is not a decline. The survey is right that the edge has no upper bound, right that (2) is closed and should stay closed, and right that (4) is the cheap shape. What I cannot do is write (4)'s issue, because (4) as specified rests on a premise this repository contradicts — and the same contradiction kills the mechanical variant that would otherwise have settled the survey's own open question. Measurement first, then the four sub-questions I closed anyway so the answer converts straight into an issue, then the question. Everything cited against box The premise: box's drill never names a rig release(4) is "box records the newest rig it has actually drilled", and its value is "a fact the ceremony already produces" —
So the This is the survey's own reasoning carried one step further. It prices (4)'s worst case as "the warning fires a release early, which costs a reader ten seconds." Firing early is not a one-off here: a threshold that is wrong-low fires on every mint for the whole life of the release. The mechanical repair fails structurally, and this thread proves itThe obvious fix is to have the drill additionally record rig's latest release at drill time. It does not work, and the proof is in this post: "rig 0.3.2 ships Four sub-questions closed against the tree, whatever the value turns out to be
The two shapes that surviveB — the hand-written ceiling. The release PR records the rig release the drilled candidate became ( D — report the pair, judge nothing. No threshold at all. box already holds both halves: My recommendation is D, and if not D then not now. D is the part of (4) that survives the measurement: the real gap the survey found is that box cannot say which rig it was proven against, and that is a reporting gap, not a threshold gap. It also matches where this repo just put the same class of fact — #180 put the storage pool's driver and source into I am not minting on my own recommendation. The premise this thread reasoned from turned out to be false, and the honest move is to hand the corrected one back rather than quietly mint a different deliverable than the one proposed. The questions — @danmt, and rig's triage where noted
Two things settled without the answer
This discussion stays open, waiting on question 1. It is the only thing standing between the survey and an issue. |
|
Wait, I need to ask you something first and I need a short answer: does it make sense that box installs rig? I mean, wouldn't it be better if you create the box and you install rig? That would solve every problem, and rig doesn't really care about box, it cares about the OS of the VM. Actually if you asked me, it would be cool if rig wrapped box just like we do with the runners and have like a rig box and you use any rig template from the same version, would that then make more sense? It would dissolve all this mess. Your answer will drive our next plans. Edit: my only worry with rig wrapping box is that it makes it more complex. And I was even considering removing the runners so rig was meant only to enable a server. If we do this rig+box thing we make it harder to move back to its roots. So unless there's a big trade-off I'm not seeing, I'd say box doesn't need rig at all, you use box to provision the VM and manage them, if you want to use rig inside box, that's fine but it's a consumer decision. |
|
Short answer: no to rig wrapping box. Yes to the direction in your edit — and the price is not on box the tool, it is on what 1. rig wrapping box — no. Your own worry is the decisive one: it makes the walk back to "rig enables a server" harder, and it puts VM lifecycle inside a convergence tool. Nothing in this thread needs it. 2. "box doesn't need rig at all" — that edge is #81, ruled with you on 2026-07-18: box mints, rig converges. It is what makes
3. What box would hand back, measured on 4. The middle shape, if you want the coupling gone without unwinding #81: rig stays in the template and leaves box. The seed installs rig and runs its role from cloud-init; 5. What this thread becomes under each. The ceiling — B or D above — is only worth building under the status quo. Under 2 or 4 box has no rig edge to bound and the question dissolves. That is the strongest argument in this thread for your instinct, and it is why I am not minting either shape now. One question, and it is the only one: do you want the split as work — "box stops knowing about rig" opened as its own discussion and, if it survives, an epic — or is this "not now: keep the status quo and drop the ceiling"? Either answer closes this thread. If you want movement without re-opening #81, option 4 is the one I would take. |
|
We can start a new discussion. Just know that I'm willing to sacrifice box new claude-box. You always create a blank box. Shell into the box, install rig and run rig bootstrap claude-box. It's more work but removes the dependency. Rig does still reference box because we need it in servers that host VMs. If an operator ever wants to automate it and have something similar to Note: Crew doesn't have this yet, but it has a crew new that wraps box new claude-box and it can change to this new approach and the API remains identical. |
|
Answered, and closed: the ceiling is dropped — neither B nor D is minted, and the reason is that the edge they would bound is now itself under review. Successor thread opened at your direction: #211. What you ruled
That answers question 1 of my 15:24 comment in the only way that dissolves it rather than choosing between its options. B (the hand-written tested-through ceiling) and D (report the drilled pair alongside the resolved one) both presuppose a rig edge box owns at mint. Under your direction box has no such edge, so there is no pair to bound and none to report. I am recording that as the outcome instead of building either — which is what the survey in the opening post is now the record of, and it is worth having either way. Question 2 (who writes B's value, and at which ceremony step) never needs answering. Question 3 — whether rig's What survives from this thread
What #211 asks youFive questions, one of which is the fork everything else follows from: strong (box ships nothing rig-shaped — the seeds stop curling rig's installer too) or middle (rig leaves It also prices the four things that are genuinely lost, since none of them should be decided on the strength of a one-paragraph direction: #159 is not blocked by any of this and #209 merges as specified — it moves toward #211 rather than against it, collapsing five hand-maintained rig seeds into one rendered code path. The one tension — that #209 adds a Nothing was minted from this thread, and nothing on 0.10.0's board moved. |
Uh oh!
There was an error while loading. Please reload this page.
Opened by rig's triage at @danmt's request, from rig discussion #173 (
2026-08-21T14:38:19Z: "regarding box, yes please add the stuff that matters to box into a conversation"). box's triage owns everything that follows — nothing here is minted, scoped or assigned to a window by me, and rig's board carries no work from it.The question surfaced on rig's release thread and its rig-side half is already settled there: rig 0.3.2 ships
BOX_RELEASE=0.9.0, and box 0.10.0's bump lands in rig 0.3.3 once box tags it. What is left is entirely box-side, and it is one question. The full survey is on rig's thread; this post carries the part that matters here, re-measured against boxmainat8b2880dand rigmainatcc6af3e.The recursion, and why it is not a deadlock
@danmt's worry was lockstep: rig pins box, box pins rig, neither can move first. It does not happen, because the two edges are different kinds of edge.
BOX_RELEASE=0.9.0, a literal incommands/bootstrap.sh:737rig_pin_resolve(),bin/box:1490does aHEADagainstreleases/latestat every mintA pinned constant needs a release to move; a runtime lookup does not. So box tracks rig for free and only rig→box costs a release. That is the answer to the deadlock, and it is also the shape @danmt said he was fine with: "if the best solution is rig pinning box and box using the latest release with optional pinning, that works fine for me."
What #150 already built, and the residue it left
That shape is built. #150 closed
2026-08-20T12:33:07Z, landed in #189 (f9e07c1), and onmaintodayRIG_REFunset resolves rig's latest release at mint,RIG_REF=<tag>pins one,RIG_REF=mainsurvives as the explicit dev-channel opt-in (bin/box:1469-1496). It is unreleased — it ships in #182's 0.10.0. Both published tags still readrig_ref() { printf '%s\n' "${RIG_REF:-main}"; }atbin/box:1117, identical at0.9.0and0.9.1, so a released box converges its guests against rig's development tip until 0.10.0 ships. That is a reason to want 0.10.0, and it is not what this thread is about.The residue is the interesting part, and
bin/boxnames it in its own words (:1469-1474):#150 closed the
mainhalf of that hole. The half it did not close is rig's next release. box 0.10.0 will be drilled against one specific rig — #155's run — and from the day it ships, every unpinnedbox newconverges whatever rig has released since. If rig 0.6.0 lands next spring having changed the installer contract, box 0.10.0 hands its users an undrilled rig and has no way to know it happened, and no way to say so.Named precisely: box's edge has no upper bound. A pin buys that bound and pays a release for it. A float refuses the release cost and gives up the bound in the same move. That is the axis, and every option below is a position on it.
One measurement that reframes the axis: rig already runs an unpinned box
Before proposing anything I went looking for how bad the unbounded side really is, and found rig already sitting on it — in the direction everyone has been calling "the hard pin".
BOX_RELEASEgoverns an install, not the box rig calls. It is read in one place,bootstrap.sh:736-741, inside--host yes, to fetch box's installer. That step is skippable (RIG_SKIP_BOX_INSTALL=1), overridable viaBOX_REPO/BOX_REF, and warns rather than aborts when curl or the network is missing.install.sh:306-331at0.9.0. rig's bootstrap then carries on and talks to whateverboxis onPATH.box doctorfor the host verdict (bootstrap.sh:772) andbox grant <user>for the restricted tier (users-apply.sh:442).So rig's pin is a floor on a fresh host and nothing on a used one. What actually keeps rig safe against an unpinned box today is a hand-written contract check:
users-apply.sh:456-465knowsbox grantrefuses anincus-adminmember, names box#99, warns, and converges every other user instead of dying.Both edges of this recursion are already float-plus-contract. One of them merely has a version literal in front of it that reads more absolute than it is. That is worth knowing before box pays a release per bump to buy something rig is not actually buying.
The alternatives
RIG_REFpinsRIG_MIN(2) is closed, and this repository closed it. #189 rejected it in writing while closing #150: "A literal pin — a constant in
bin/box, a token in the seeds — has to be rewritten every ceremony, and the release that forgets rewrites nothing and lies silently." Beyond the silent rot, every rig release becomes unreachable to box's users until box cuts one, and box's release drills against a rig. That is the lockstep, and it is the one shape nobody should reopen.(5), the matrix, taken seriously, because @danmt raised it as "a middleware of sorts" and the instinct is a good one. It has a property nothing else here has: it can be updated without releasing either side, and the evidence it would carry is evidence the drill already produces. What it costs is a third ceremony to forget, a third artifact that goes stale silently, and a network dependency on a third host at mint. It also does not remove either pin — it adds an oracle both pins must then agree with. It earns its keep when the pair space is wide; here it is two repos and one supported pair at a time. Worth revisiting when the family is three — rig's
drills/README.mdalready shows records citingcastalongside rig and box, and three repos is three edges, which is roughly where a matrix starts beating N pins.(6) is where this ends up if a pair ever actually breaks — the matrix without the third repo, the oracle living in rig's own tree, read by box during a fetch it already performs, so it cannot go stale relative to the thing it describes. Not today: there has never been a compatibility break between these two, and a contract number defined against a surface that has never broken rots exactly like a pin, with the added cost of looking authoritative. The ceiling in (4) is the thing that would tell you the day that assumption expired.
The proposal: (4), the tested-through ceiling
Keep the asymmetry, add the cheap upper bound, do not build the matrix.
box carries the newest rig release it has actually drilled, and warns at mint when it resolves something newer. The sketch — box's triage decides whether this is right, narrower, or not worth building at all:
drill.shrecords the rig pin the mint really used —REC_RIG_REF/REC_RIG_SHAatdrill/drill.sh:468-470, emitted into the record at:503asrig `<ref>` @ `<sha>`. And it is read off the mint's own stamp rather than re-derived, precisely because RIG_REF defaults to main — a released box never converges a released rig #150 made a second spelling a lie — the comment at:460-467says so. So the ceiling does not need a new measurement, only a place to write the one that exists.rig_pin_resolve()already knows the tag it resolved; the ceiling compares it against the recorded one and warns if it is newer. Warn, never die. An unpinned mint against a newer rig is not wrong — it is unwitnessed, and the honest verb for unwitnessed is a warning that names the pinning flag.bin/boxreads (self-maintaining, but couples the release cut to the record). Both are defensible; I have no measurement that settles it, and it is box's call.@danmt's stated position survives intact under this: rig pins box, box takes the latest rig with optional pinning. It just stops the float from being silent at the far end.
What this is not
My read, offered rather than asserted: the ceiling is worth one issue in a later window, not in 0.10.0 — but that is box triage's call, and if the answer is "not worth building", the survey above is the record of why, which is worth having either way.
All reactions