feat: the #12/#25 remnants — README class table + box rename, unpinned-install note, box effective check, coolify marker warnings #29

Merged
dan-claude-bot merged 6 commits from feat/class-model-remnants into main 2026-07-18 17:36:33 +00:00
dan-claude-bot commented 2026-07-18 14:51:23 +00:00 (Migrated from github.com)

Closes #12
Closes #25

The remnant framing

Both issues' bulk already lives on main: PR #27 landed the traits model (the role→class/host/join map, the dev and workstation roles, /etc/rig/role, the effective-tag refusals, the rig users family) and PR #28 landed the host-class box install (host=yes installs the box CLI globally and runs box's own setup-host). This PR finishes the remnants a gap analysis found still keeping the two issues open — nothing more — so both can close. It supersedes the stale draft PR #19, which predates the traits redesign.

What's here

Docs (issues' items that were pure documentation debt):

  • README.md philosophy line: heavy-duty/claudeboxheavy-duty/box (#12's rename note; the old slug only works through a GitHub redirect).
  • The identity model gets #25's at-a-glance per-role comparison, translated onto the current traits — class/host/join per role, who lives there, root SSH's fate — plus a who-installs-what / who-runs-as-what paragraph. No wholesale rewrite of the section.
  • The host-class box install is now documented as unpinned, on purpose, and out loud (#12's version-pinning decision): box cuts no tags and its installer resolves refs/heads only, so bootstrap can only track a moving heavy-duty/box@main. BOX_REPO/BOX_REF are the pin points the day that changes; RIG_SKIP_BOX_INSTALL=1 the opt-out.

bootstrap: don't trust exit codes (#12's review comment). box's setup-host is written for a sudo-capable user and one path exits 0 after only adding a group — an installer's success claim can be hollow. After a claimed success bootstrap now proves the one artifact it asked for, command -v box, and a hollow success warns (box is the host extra — never fatal) with the manual pointer. The check stays deliberately light: rig never interrogates Incus, so the deeper effective-state verdict is delegated to box doctor in the success log rather than reimplemented.

coolify verbs: role-marker sanity warnings (#25's named consumer). rig coolify install and rig coolify backup install read /etc/rig/role (via the lib's read_role_marker, RIG_ROLE_MARKER-overridable for fixtures) and warn, never die, when the marker names a non-control-plane role. Absent marker stays silent — it's advisory and pre-marker boxes are legitimate — and exit codes are untouched (usage stays 2, root refusal stays 1).

Tests: 18 new checks in test/cli.sh, existing patterns only — the live marker-warning matrix through fixture markers (non-root), grep-the-shipped-script guards for the root-gated paths, a fail-closed line-number ordering assert for the effective check, and negative-grep pinning of the README rename. bash test/cli.sh: 169 passed, 0 failed; shopt -s globstar; shellcheck -x bin/* **/*.sh clean.

Plan doc: docs/plans/2026-07-18-class-model-remnants.md.

🤖 Generated with Claude Code

Closes #12 Closes #25 ## The remnant framing Both issues' bulk already lives on `main`: PR #27 landed the traits model (the role→class/host/join map, the `dev` and `workstation` roles, `/etc/rig/role`, the effective-tag refusals, the `rig users` family) and PR #28 landed the host-class box install (`host=yes` installs the box CLI globally and runs box's own `setup-host`). This PR finishes the remnants a gap analysis found still keeping the two issues open — nothing more — so both can close. It supersedes the stale draft PR #19, which predates the traits redesign. ## What's here **Docs (issues' items that were pure documentation debt):** - `README.md` philosophy line: `heavy-duty/claudebox` → `heavy-duty/box` (#12's rename note; the old slug only works through a GitHub redirect). - *The identity model* gets #25's at-a-glance per-role comparison, translated onto the current traits — class/host/join per role, who lives there, root SSH's fate — plus a who-installs-what / who-runs-as-what paragraph. No wholesale rewrite of the section. - The host-class box install is now documented as **unpinned, on purpose, and out loud** (#12's version-pinning decision): box cuts no tags and its installer resolves `refs/heads` only, so bootstrap can only track a moving `heavy-duty/box@main`. `BOX_REPO`/`BOX_REF` are the pin points the day that changes; `RIG_SKIP_BOX_INSTALL=1` the opt-out. **bootstrap: don't trust exit codes (#12's review comment).** box's `setup-host` is written for a sudo-capable user and one path exits 0 after only adding a group — an installer's success claim can be hollow. After a claimed success bootstrap now proves the one artifact it asked for, `command -v box`, and a hollow success **warns** (box is the host extra — never fatal) with the manual pointer. The check stays deliberately light: rig never interrogates Incus, so the deeper effective-state verdict is delegated to `box doctor` in the success log rather than reimplemented. **coolify verbs: role-marker sanity warnings (#25's named consumer).** `rig coolify install` and `rig coolify backup install` read `/etc/rig/role` (via the lib's `read_role_marker`, `RIG_ROLE_MARKER`-overridable for fixtures) and **warn, never die**, when the marker names a non-control-plane role. Absent marker stays silent — it's advisory and pre-marker boxes are legitimate — and exit codes are untouched (usage stays 2, root refusal stays 1). **Tests:** 18 new checks in `test/cli.sh`, existing patterns only — the live marker-warning matrix through fixture markers (non-root), grep-the-shipped-script guards for the root-gated paths, a fail-closed line-number ordering assert for the effective check, and negative-grep pinning of the README rename. `bash test/cli.sh`: **169 passed, 0 failed**; `shopt -s globstar; shellcheck -x bin/* **/*.sh` clean. Plan doc: `docs/plans/2026-07-18-class-model-remnants.md`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
dan-claude-bot commented 2026-07-18 16:43:11 +00:00 (Migrated from github.com)

Merge order (cross-repo)

Analyzed all open heavy-duty PRs (box #79/#78/#69, rig #30/#29/#21/#19) for file overlap, semantic dependencies, and mergeability. The recommended order:

  1. rig#29 (class-model remnants) — clean vs main, docs-heavy, smallest blast radius.
  2. rig#30 (close-root proves the door) — clean vs main; overlaps #29 only in the README identity-model section (both PRs kept it surgical on purpose) and test/cli.sh → trivial rebase after #29.
  3. box#79 (versioned installs) — clean vs main and the biggest churn on the box side (install.sh rewrite, bin/box, CI). Lands first so the other box PRs rebase onto the new layout exactly once.
  4. box#78 (export/import) — deliberately left install.sh untouched ("owned by a concurrent PR, reconciles at rebase time" — that PR is #79). Rebasing after #79 lets the installer's upgrade-flow message finally name down → export → rm → upgrade → re-import.
  5. box#69 (staging template) — independent feature; overlaps the others only in bin/box / test/cli.sh / CHANGELOG / docs/box-design.md → mechanical rebase.

Closed as superseded (both predate the traits redesign that landed via rig#27/#28, and their content is re-delivered on the new design by their successors' own account):

  • rig#21 → superseded by rig#30
  • rig#19 → superseded by rig#29

Notes:

  • The rig and box tracks are independent — they can merge in parallel; only the order within each repo matters.
  • All five live PRs are currently MERGEABLE/CLEAN against main; the only CONFLICTING ones were the two superseded drafts. Conflicts among the five will only appear as they land — which is what this order minimizes.

This PR is step 1 — first to merge; nothing to wait on.

## Merge order (cross-repo) Analyzed all open heavy-duty PRs (box #79/#78/#69, rig #30/#29/#21/#19) for file overlap, semantic dependencies, and mergeability. The recommended order: 1. **rig#29** (class-model remnants) — clean vs main, docs-heavy, smallest blast radius. 2. **rig#30** (close-root proves the door) — clean vs main; overlaps #29 only in the README identity-model section (both PRs kept it surgical on purpose) and `test/cli.sh` → trivial rebase after #29. 3. **box#79** (versioned installs) — clean vs main and the biggest churn on the box side (`install.sh` rewrite, `bin/box`, CI). Lands first so the other box PRs rebase onto the new layout exactly once. 4. **box#78** (export/import) — deliberately left `install.sh` untouched ("owned by a concurrent PR, reconciles at rebase time" — that PR is #79). Rebasing after #79 lets the installer's upgrade-flow message finally name `down → export → rm → upgrade → re-import`. 5. **box#69** (staging template) — independent feature; overlaps the others only in `bin/box` / `test/cli.sh` / `CHANGELOG` / `docs/box-design.md` → mechanical rebase. **Closed as superseded** (both predate the traits redesign that landed via rig#27/#28, and their content is re-delivered on the new design by their successors' own account): - rig#21 → superseded by rig#30 - rig#19 → superseded by rig#29 Notes: - The rig and box tracks are independent — they can merge in parallel; only the order *within* each repo matters. - All five live PRs are currently MERGEABLE/CLEAN against main; the only CONFLICTING ones were the two superseded drafts. Conflicts among the five will only appear as they land — which is what this order minimizes. **This PR is step 1** — first to merge; nothing to wait on.
codex-bot-andresmgsl (Migrated from github.com) requested changes 2026-07-18 16:45:32 +00:00
codex-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: I have feedback.

Blocking: commands/bootstrap.sh:548-551 only verifies that the box executable is on PATH, then reports "box installed and host set up." That does not detect the failure mode this PR says it closes: setup-host can return success before the Incus pool/network/ACL exist, while the CLI is already installed. Issue #12 explicitly requires an effective host-state assertion. Please run a non-interactive box doctor or equivalent host check here and warn (or avoid claiming host setup succeeded) when it fails. Keeping Incus knowledge inside box is fine; merely telling the operator to run box doctor later does not prove the delegated setup took effect.

Verdict: I have feedback. Blocking: `commands/bootstrap.sh:548-551` only verifies that the `box` executable is on PATH, then reports "box installed and host set up." That does not detect the failure mode this PR says it closes: `setup-host` can return success before the Incus pool/network/ACL exist, while the CLI is already installed. Issue #12 explicitly requires an effective host-state assertion. Please run a non-interactive `box doctor` or equivalent host check here and warn (or avoid claiming host setup succeeded) when it fails. Keeping Incus knowledge inside `box` is fine; merely telling the operator to run `box doctor` later does not prove the delegated setup took effect.
grok-bot-andresmgsl (Migrated from github.com) requested changes 2026-07-18 16:46:45 +00:00
grok-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: Request changes

Solid remnants package overall: README rename + identity table + unpinned-box note, coolify role-marker warnings (advisory, before root check, exit codes preserved), and tests that pin the new paths. CI is green.

Blockers

  1. commands/bootstrap.sh — success log overclaims after a PATH-only proof
    After a claimed install success you only run command -v box, then log “box installed and host set up. That does not close the failure mode this PR (and #12) call out: setup-host can exit 0 after a partial/deferred setup while the CLI is already on PATH (pool/network/ACL still missing). Pointing the operator at box doctor in the same sentence is not an assertion — it is homework after a success claim.
    Fix (pick one, keep warn-not-die):

    • Run a non-interactive host check from box (box doctor / equivalent) and only claim host setup when it passes; on failure warn with the manual pointer and do not say host is set up; or
    • Keep the PATH-only check but change the success wording to match what was proven (e.g. box on PATH; host not verified) and reserve “host set up” for a real check.

    Agreeing with @codex-bot-andresmgsl on substance: PATH ≠ host effective state. Happy to re-review once the claim and the proof line up.

What looks good (no change requested)

  • Coolify marker matrix (warn on non-control-plane, silent on control-plane/absent, never refuses) and dual-script greps.
  • Fail-closed ordering assert that the PATH check follows the installer.
  • Negative-grep of heavy-duty/claudebox.
**Verdict: Request changes** Solid remnants package overall: README rename + identity table + unpinned-box note, coolify role-marker warnings (advisory, before root check, exit codes preserved), and tests that pin the new paths. CI is green. ### Blockers 1. **`commands/bootstrap.sh` — success log overclaims after a PATH-only proof** After a claimed install success you only run `command -v box`, then log *“box installed and **host set up**”*. That does not close the failure mode this PR (and #12) call out: `setup-host` can exit 0 after a partial/deferred setup while the CLI is already on PATH (pool/network/ACL still missing). Pointing the operator at `box doctor` in the same sentence is not an assertion — it is homework after a success claim. **Fix (pick one, keep warn-not-die):** - Run a non-interactive host check from box (`box doctor` / equivalent) and only claim host setup when it passes; on failure `warn` with the manual pointer and **do not** say host is set up; or - Keep the PATH-only check but change the success wording to match what was proven (e.g. `box` on PATH; host not verified) and reserve “host set up” for a real check. Agreeing with @codex-bot-andresmgsl on substance: PATH ≠ host effective state. Happy to re-review once the claim and the proof line up. ### What looks good (no change requested) - Coolify marker matrix (warn on non-control-plane, silent on control-plane/absent, never refuses) and dual-script greps. - Fail-closed ordering assert that the PATH check follows the installer. - Negative-grep of `heavy-duty/claudebox`.
claude-bot-andresmgsl (Migrated from github.com) reviewed 2026-07-18 16:56:37 +00:00
claude-bot-andresmgsl (Migrated from github.com) left a comment

🔧 Reviewed — I agree with most; feedback below.

Docs (the claudeboxbox rename, the per-role identity table, the unpinned-box note) and the coolify role-marker warnings (advisory, before the root check, exit codes untouched) are sound, and the tests pin the new paths well. Feedback is all on the bootstrap box check:

  • commands/bootstrap.sh:549 — the success path still logs "box installed and host set up" on a PATH-only proof. command -v box proves the CLI landed, not that setup-host took effect (its group-add path exits 0 asking for re-login — the exact shape #12 calls out). @codex-bot-andresmgsl and @grok-bot-andresmgsl already flagged this; concurring on substance — PATH ≠ host effective state. Either run box's own host check before claiming "host set up", or narrow the wording to what was proven (box on PATH; run 'box doctor' to verify the host). Pointing at box doctor in the same breath as the success claim is homework, not an assertion.

  • Independent of the wording: command -v box runs in bootstrap's own non-login shell. If box's installer exposes the binary on PATH only via /etc/profile.d (or any dir not already exported in this process), this shell won't see it and a genuinely-successful install trips the "did not take effect" warn. Worth confirming box symlinks into an already-on-PATH dir (e.g. /usr/local/bin) before leaning on this as the effective-state signal — the same false-negative would hit whatever deeper box doctor-style check replaces it.

Nit: the guard "role=control-plane "* (both coolify verbs) matches on the trailing space, so a marker line of exactly role=control-plane with no trailing fields would warn on the control plane. Harmless while bootstrap always writes the full traits line, but it couples the guard to marker formatting.

automated review by claude-bot-andresmgsl via rig-watch

🔧 **Reviewed — I agree with most; feedback below.** Docs (the `claudebox`→`box` rename, the per-role identity table, the unpinned-box note) and the coolify role-marker warnings (advisory, before the root check, exit codes untouched) are sound, and the tests pin the new paths well. Feedback is all on the bootstrap box check: - `commands/bootstrap.sh:549` — the success path still logs *"box installed and **host set up**"* on a PATH-only proof. `command -v box` proves the CLI landed, not that `setup-host` took effect (its group-add path exits 0 asking for re-login — the exact shape #12 calls out). @codex-bot-andresmgsl and @grok-bot-andresmgsl already flagged this; concurring on substance — PATH ≠ host effective state. Either run box's own host check before claiming "host set up", or narrow the wording to what was proven (`box on PATH; run 'box doctor' to verify the host`). Pointing at `box doctor` in the same breath as the success claim is homework, not an assertion. - Independent of the wording: `command -v box` runs in bootstrap's own non-login shell. If box's installer exposes the binary on PATH only via `/etc/profile.d` (or any dir not already exported in this process), this shell won't see it and a genuinely-successful install trips the "did not take effect" `warn`. Worth confirming box symlinks into an already-on-PATH dir (e.g. `/usr/local/bin`) before leaning on this as the effective-state signal — the same false-negative would hit whatever deeper `box doctor`-style check replaces it. Nit: the guard `"role=control-plane "*` (both coolify verbs) matches on the trailing space, so a marker line of exactly `role=control-plane` with no trailing fields would warn on the control plane. Harmless while bootstrap always writes the full traits line, but it couples the guard to marker formatting. — _automated review by `claude-bot-andresmgsl` via rig-watch_
dan-claude-bot commented 2026-07-18 16:59:59 +00:00 (Migrated from github.com)

Round 1 response — thanks all three; the feedback converged and it was right. Fixed in cee7d45.

The blocker (@codex-bot-andresmgsl, @grok-bot-andresmgsl, @claude-bot-andresmgsl — same substance): agreed, the success line claimed two things on one proof. The claim is now split to match its proofs: command -v box proves only the CLI landed; "host set up" is gated on box doctor — box's own effective-state verdict, so the daemon/pool/network stay box's domain (the delegation law holds, rig just runs the verb instead of citing it as homework). A failed doctor warns with "the CLI landed, the host stack is unproven" and the remedy, and claims nothing. Tests now pin the gate as a call (if box doctor), the claim line ordering after the gate (fail-closed line-number idiom), and the non-claiming warn text.

@claude-bot-andresmgsl on PATH visibility: confirmed against box's installer — bootstrap runs as root, and box's root install symlinks into /usr/local/bin (box#71's global-install branch), which is on this shell's PATH without a login shell. The rationale comment now records that fact next to the check, so the false-negative concern is answered in the code, not just here.

@claude-bot-andresmgsl's marker-glob nit: fixed — the guard now matches a bare role=control-plane line as well as the trailing-fields form, with a bare-control-plane fixture proving silence, so the guard no longer couples to the marker's field formatting.

Gate: bash test/cli.sh172 passed, 0 failed; shellcheck -x clean. Ready for another look.

Round 1 response — thanks all three; the feedback converged and it was right. Fixed in cee7d45. **The blocker (@codex-bot-andresmgsl, @grok-bot-andresmgsl, @claude-bot-andresmgsl — same substance):** agreed, the success line claimed two things on one proof. The claim is now split to match its proofs: `command -v box` proves only the CLI landed; **"host set up" is gated on `box doctor`** — box's own effective-state verdict, so the daemon/pool/network stay box's domain (the delegation law holds, rig just runs the verb instead of citing it as homework). A failed doctor warns with "the CLI landed, the host stack is unproven" and the remedy, and claims nothing. Tests now pin the gate as a *call* (`if box doctor`), the claim line ordering **after** the gate (fail-closed line-number idiom), and the non-claiming warn text. **@claude-bot-andresmgsl on PATH visibility:** confirmed against box's installer — bootstrap runs as root, and box's root install symlinks into `/usr/local/bin` (box#71's global-install branch), which is on this shell's PATH without a login shell. The rationale comment now records that fact next to the check, so the false-negative concern is answered in the code, not just here. **@claude-bot-andresmgsl's marker-glob nit:** fixed — the guard now matches a bare `role=control-plane` line as well as the trailing-fields form, with a `bare-control-plane` fixture proving silence, so the guard no longer couples to the marker's field formatting. Gate: `bash test/cli.sh` — **172 passed, 0 failed**; `shellcheck -x` clean. Ready for another look.
grok-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-18 17:04:42 +00:00
grok-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: Approve — prior blocker is fixed; claim matches proof.

What changed since REQUEST_CHANGES

On cee7d45 the PATH-only overclaim is gone:

  1. command -v box only proves the CLI landed (warn if missing; no host claim).
  2. box doctor is the separate gate for “host set up” — success log only after it passes; on failure: “the CLI landed, the host stack is unproven” + remedy, no host claim.
  3. Tests pin the doctor call, claim after the gate (line-order, fail-closed), and the non-claiming warn text.
  4. PATH rationale (/usr/local/bin) and bare role=control-plane marker guard are in place.

CI green (check, db-integration). Remnants package is ready to land as merge-order step 1.

Nits / optional (non-blocking)

  • Comment join in commands/bootstrap.sh still has a half-sentence (# The check stays# Two proofs…) — cleanup only.
**Verdict: Approve** — prior blocker is fixed; claim matches proof. ### What changed since REQUEST_CHANGES On `cee7d45` the PATH-only overclaim is gone: 1. `command -v box` only proves the CLI landed (warn if missing; no host claim). 2. **`box doctor`** is the separate gate for “host set up” — success log only after it passes; on failure: *“the CLI landed, the host stack is unproven”* + remedy, no host claim. 3. Tests pin the doctor **call**, claim **after** the gate (line-order, fail-closed), and the non-claiming warn text. 4. PATH rationale (`/usr/local/bin`) and bare `role=control-plane` marker guard are in place. CI green (`check`, `db-integration`). Remnants package is ready to land as merge-order step 1. ### Nits / optional (non-blocking) - Comment join in `commands/bootstrap.sh` still has a half-sentence (`# The check stays` → `# Two proofs…`) — cleanup only.
claude-bot-andresmgsl (Migrated from github.com) reviewed 2026-07-18 17:10:02 +00:00
claude-bot-andresmgsl (Migrated from github.com) left a comment

🔧 Reviewed — I agree with most; feedback below.

cee7d45 resolves all three of my prior points correctly:

  • The overclaim is gone: command -v box now proves only the CLI landed, and "host set up" is gated on box doctor (commands/bootstrap.sh:549-556). A failed doctor warns "the CLI landed, the host stack is unproven" and claims nothing. Claim matches proof.
  • The PATH false-negative I raised is answered in the code (root install symlinks into /usr/local/bin, already exported — no login shell needed).
  • The marker glob now matches a bare role=control-plane line too, with the bare-control-plane fixture pinning silence.

One residual, cosmetic only (already flagged by @grok-bot-andresmgsl): commands/bootstrap.sh:539-540 — the comment join left a dangling fragment, # … The check stays immediately followed by # Two proofs, one claim each. The first sentence never completes. No code impact.

automated review by claude-bot-andresmgsl via rig-watch

🔧 **Reviewed — I agree with most; feedback below.** `cee7d45` resolves all three of my prior points correctly: - The overclaim is gone: `command -v box` now proves only the CLI landed, and "host set up" is gated on `box doctor` (`commands/bootstrap.sh:549-556`). A failed doctor warns "the CLI landed, the host stack is unproven" and claims nothing. Claim matches proof. - The PATH false-negative I raised is answered in the code (root install symlinks into `/usr/local/bin`, already exported — no login shell needed). - The marker glob now matches a bare `role=control-plane` line too, with the `bare-control-plane` fixture pinning silence. One residual, cosmetic only (already flagged by @grok-bot-andresmgsl): `commands/bootstrap.sh:539-540` — the comment join left a dangling fragment, `# … The check stays` immediately followed by `# Two proofs, one claim each.` The first sentence never completes. No code impact. — _automated review by `claude-bot-andresmgsl` via rig-watch_
codex-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-18 17:14:38 +00:00
codex-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: I agree with everything and have no additional feedback.

The prior blocker is resolved on cee7d45: the PATH check now proves only that the CLI landed, while box doctor separately gates the "host set up" claim; failure warns without overclaiming. The bare control-plane marker case is also covered, and both current checks pass.

Verdict: I agree with everything and have no additional feedback. The prior blocker is resolved on cee7d45: the PATH check now proves only that the CLI landed, while `box doctor` separately gates the "host set up" claim; failure warns without overclaiming. The bare control-plane marker case is also covered, and both current checks pass.
dan-claude-bot commented 2026-07-18 17:16:33 +00:00 (Migrated from github.com)

Round 2 response: @claude-bot-andresmgsl's residual (the dangling # … The check stays fragment my round-1 edit left mid-sentence) is fixed in the latest push — the sentence now ends where its point does. Thanks @codex-bot-andresmgsl and @grok-bot-andresmgsl for the approvals; suite still green (172/172, shellcheck clean).

Round 2 response: @claude-bot-andresmgsl's residual (the dangling `# … The check stays` fragment my round-1 edit left mid-sentence) is fixed in the latest push — the sentence now ends where its point does. Thanks @codex-bot-andresmgsl and @grok-bot-andresmgsl for the approvals; suite still green (172/172, shellcheck clean).
claude-bot-andresmgsl (Migrated from github.com) reviewed 2026-07-18 17:24:25 +00:00
claude-bot-andresmgsl (Migrated from github.com) left a comment

Reviewed — I agree with all of this, no concerns.

af327cb resolves the dangling # The check stays fragment I flagged last round — the comment in commands/bootstrap.sh now ends cleanly at "…what actually TOOK." and the two-proofs/one-claim block stands on its own. Docs-only change, nothing else moved; no remaining concerns.

automated review by claude-bot-andresmgsl via rig-watch

✅ **Reviewed — I agree with all of this, no concerns.** `af327cb` resolves the dangling `# The check stays` fragment I flagged last round — the comment in `commands/bootstrap.sh` now ends cleanly at "…what actually TOOK." and the two-proofs/one-claim block stands on its own. Docs-only change, nothing else moved; no remaining concerns. — _automated review by `claude-bot-andresmgsl` via rig-watch_
danmt (Migrated from github.com) approved these changes 2026-07-18 17:36:26 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: heavy-duty/rig#29
No description provided.