Repository navigation
docs(specs): add the Box Volumes spec (BVOL) for inbox#731 - #1990
Draft
mitodrummer wants to merge 3 commits into
Draft
mitodrummer wants to merge 3 commits into
mitodrummer wants to merge 3 commits into
Conversation
Moved verbatim from the docs/spec-box-local-first branch so the BOX model spec can land on its own; this document is unchanged from head d8b1e23. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
Member
Author
|
/review |
Contributor
|
Approved: no findings at Nothing to do. Clobber: none: |
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
Spec lint
Advisory. None of this blocks the merge; the review decides. Advisory, and never a merge gate. Linter: |
Member
Author
|
/review |
Member
Author
|
/review |
mitodrummer
added a commit
that referenced
this pull request
Oct 29, 2026
…ssing restart BVOL is proposed in #1990 and BRES in #1762 (epic gominimal/inbox#698); neither is on main, so BCLI cites them as the open PRs. BOX defines no restart for an until_stopped box and sends those rules to the Agent Box epic gominimal/inbox#678, so the Rollout line says so and an open question asks which spec defines the operation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw
yermakoffivan
pushed a commit
to yermakoffivan/minimal
that referenced
this pull request
Nov 4, 2026
…#1991) * docs(specs): add the BCLI spec for the min box grammar, split out of gominimal#1697 Moved verbatim from the docs/spec-box-local-first branch so the BOX model spec can land on its own; this document is unchanged from head d8b1e23. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): date the BCLI spec to its last revision Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): pin the BCLI spec's arch link to a commit Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): bind BCLI list, show and spec to the new BOX operations BCLI-001 prints the records BOX-158 lists, BCLI-003 renders the record BOX-159 returns, and BCLI-021 names each value's layer and type as BOX-161 reports them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs(specs): name the name column in BCLI's first slice Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): apply the owner's BCLI grammar decisions Drop the daily shortcuts (min shell, min run, min attach, min ls) in favour of the long forms and record them as a non-goal; retire BCLI-008, BCLI-031, BCLI-045, BCLI-054 and BCLI-065, which had no long form. Make BCLI-001's columns a floor, drop BCLI-018's per-type flags, list project types in BCLI-019, and raise BCLI-063 to T1 with a property. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): add min box attach --exec as the PTY exec re-attach verb BCLI-068 re-attaches a live PTY exec by id on the long form, with refusals for an unknown id (exit 4), a non-PTY exec (exit 2) and an ended exec (exit 4). BCLI-026 lists attach; Design reasoning and Open questions note min box attach as an architecture follow-up. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): give min box attach a bare form over the box's PTY BCLI-068's bare form re-attaches a pty_enabled box and refuses a box without a PTY with exit 2 naming min box logs. min session attach (BCLI-032) becomes its filtered form, and BCLI-007 and BCLI-009 name min box attach beside it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): re-transcribe BCLI's verb-set story from the epic The epic's S10 now lists min box attach and drops the shortcut clause. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): follow BOX's renumber to 29 and its event and type rules BCLI cites docs/specs/29-spec-box-local-first, binds min box events to BOX-162's read and follow, and refuses min init for a type BOX-063 refuses. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): add min box exec --timeout bound to BOX-149 BCLI-053 gains --timeout for an exec's own timeout, and a timed-out exec returns 124 with code timeout from min box exec and min box wait --exec. BCLI-026, Design reasoning and the open questions follow. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): date BCLI to 2026-10-06 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): cite gominimal/arch#114 for BCLI's command-tree follow-ups Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): limit BCLI-068's no-PTY refusal to a running box A stopped or exited box without a PTY gets BCLI-009's restart refusal naming min task run; min session attach inherits the split. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): bind BCLI's create verbs to BOX-163's name rule BCLI-069 gives min box start, min session start and min task run a --name that overrides [box] name, and reports BOX-163's collision refusal with exit 2 naming the holder and hinting --name. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(specs): re-pin BCLI to arch 823f45f; fresh instances and bare start Re-pin the architecture link to gominimal/arch 823f45f, where the command tree, exit-code rows and resume meaning this spec raised are merged, and turn those open questions into citations. - BCLI-069: --name on start and run; only a plain start reports BOX-163's held-name refusal, with a hint naming --new and --name. - BCLI-070: run and start --new request a fresh <name>-<n> instance (arch#117). - BCLI-071/072: bare session start and box start pick the entry named default, else the only one, counting BOX-165's implicit entry; exit 2 lists candidates or names the blocking non-session default (arch#124). - BCLI-042: bare session activate maps to bare session start. - BCLI-061: prune no longer accepts --stopped (arch#112). One open question remains: NET and GWI re-citing the aliased verbs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CdRDynXbYoKR6dByN13KsD * docs(specs): attach on min box start follows pty_enabled, not the session noun BCLI-029 stated attach-or-detach for min session start only. The architecture has min box start attach when the spec sets pty_enabled, unless --detach, and session start is its alias, so the rule now covers both verbs and keys on the setting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CdRDynXbYoKR6dByN13KsD * docs(specs): an unattached start closes stdin and hints; box run attaches a PTY entry BCLI-029: a start that returns without attaching closes the box's stdin and, for a box without pty_enabled, hints min box run, logs and wait. BCLI-070: min box run on a pty_enabled entry attaches as start --new, pending gominimal/arch#127. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CdRDynXbYoKR6dByN13KsD * docs(specs): keep bare min session attach; refuse resolution past an unreachable host - BCLI-032: min session attach with no address keeps today's behaviour, picking the current project's session box, else the only one; more than one is a picker on a TTY or exit 2 listing them; none is exit 4 hinting min session start. The context now lists attach among today's verbs. - BCLI-002: an unqualified name resolved across hosts fails with exit 7 naming any host that did not answer, instead of resolving from the rest. - BCLI-070: the PTY attach for min box run is marked as this spec's addition pending gominimal/arch#127, with its reasoning. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Twbss23J4ADZCZsGeGdrMP * docs(specs): bind BCLI exit codes to the arch table and add session logs Give the session noun `logs` like every other type noun, bind BCLI-034 to the architecture's exit-code table instead of a partial list (its [proposed] rows stay with BRES), reserve `org` as a type source, and name box add/restart and the remaining host and provider verbs in Non-goals with their owners. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): align BCLI's init flags, bare attach and box run with arch Add the architecture's --session/--task/--agent/--service aliases to min init, mutually exclusive with --type. Make bare `min session attach` a one-release hidden alias that fails with exit 2 on an ambiguous match instead of opening a picker. Drop the PTY attach on `min box run` until gominimal/arch#127 rules. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): let an unreachable host win over bare session attach's fallback Bare `min session attach` resolves by project root, else the only session on the reachable hosts. That contradicted BCLI-002, which refuses an incomplete cross-host lookup with exit 7. Make the exit 7 refusal take precedence, which also covers BCLI-042's alias. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): carry --loadout and session exec's shell form into BCLI From msample's review: bind `--loadout` on session/box start to BOX-064's selected-loadouts layer (BCLI-073) and carry it through the `session activate` alias; keep `session exec`'s one-argument shell form inside the alias window; refuse `min box attach` without a TTY; widen BCLI-010 to `min box run`; re-pin arch to 4d554e4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): pick BCLI's restart hint by lifetime and fill the arch gaps Address Norrie's second review of gominimal#1991: - BCLI-074 brings `min box restart` into scope for `until_stopped` boxes; BCLI-009 and BCLI-068 choose the restart hint by `lifetime`. - BCLI-075 resolves `self` from the connection's per-box identity. - BCLI-033 binds the `min/v1/<type>` schema to every emitted object. - BCLI-014 and the run `--detach` sub-bullet cover `min box run`. - BCLI-064 yields to BCLI-002's exit 7 for an unreachable host. - BCLI-026 drops the flags that wait on remote providers, SBOMs and nesting, each named in Non-goals. - Rollout lists every merged requirement citing a removed spelling and holds each alias's expiry until they are re-cited. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): defer self resolution to nesting, as BOX does BOX's Non-goals leave running `min` inside a box out of scope, so a BCLI requirement resolving `self` could not be exercised. Retire BCLI-075 and name `self` in Non-goals beside `--parent self`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): name one local provider per deployment style, per arch#45's ruling gominimal/arch#45 ruled on 2026-10-27 that the local providers are local, local-minvmd and local-box, one per deployment style, and that the 0..N suffix names their hosts. BCLI-046 now names the three providers and the hosts by daemon instance; only local-minimald stays as a one-release alias, in its own WHERE sub-bullet. local-minvmd is the provider's name again, so the Rollout no longer lists NET-049, NET-051 and TEL-034. The S16 non-goal records that the daemons serve the providers over their sockets, and a design-reasoning paragraph carries the ruling. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): keep min box spec's path form and add the entry and box forms on top Main's min box spec [path] renders the Box Egress Proxy rows (BEP-038). BCLI-021 now keeps that form as a sub-bullet, renders BEP-038's rows in the entry form, and BCLI-022 resolves a box only when the argument names neither a directory nor an entry. The directory-first precedence is an open question. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): narrow the self non-goal to the verbs BCLI specifies Main's min box audit already takes self and --parent self (BEP-042). The Non-goals now defer self only on min box spec, show and events, and --parent self only on the verbs this spec specifies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): cite BVOL and BRES as their open PRs, and state BOX's missing restart BVOL is proposed in gominimal#1990 and BRES in gominimal#1762 (epic gominimal/inbox#698); neither is on main, so BCLI cites them as the open PRs. BOX defines no restart for an until_stopped box and sends those rules to the Agent Box epic gominimal/inbox#678, so the Rollout line says so and an open question asks which spec defines the operation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): print alias hints after the command, and keep the global --provider BCLI-042 and BCLI-046 now print their hint once the command's own work ends, after any attached terminal is released, so no hint precedes the shell of session activate, bare session attach, or a healthy start under --provider local-minimald. The Non-goals and BCLI-026 now defer only --all-providers and --provider naming a remote provider: the global --provider flag stays as the local-provider selector the box verbs take. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): verify BCLI-049 on the VM lane and BCLI-044 against the reference BCLI-049's test is now a scripts/session-e2e.sh case, the form NET-049 and NET-107 use for VM-lane behaviour. BCLI-044 now names the pages it binds (the CLI reference and the sessions concept page) and is checked by a test that reads them, the form NET-036 and NET-111 use; the justfile has no doc-check recipe and the spec skills prescribe none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): state BCLI's requirements and reasons without decision history Drops the was-BOX provenance comments, the dates, who decided what, the retired-number notes and the plan-task references. Design reasoning keeps each reason and each alternative, stated as a reason. The Rollout's NET-015 line now names what must change before BCLI-066 ships rather than a plan task. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): drop local-minvmd from the expiring aliases local-minvmd is a canonical provider name (BCLI-046); only local-minimald is a one-release alias. Design reasoning now says so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): choose BCLI-074's refusal hint by lifetime, as BCLI-009 does The sub-bullet picked its hint by Box Type (task); it now names min task run for any box that does not set lifetime = "until_stopped", the same rule BCLI-009 and BCLI-068 use, so behaviour keys on a spec attribute and never on a type name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): cover the secret invariant by BCLI-063 alone The invariant holds in every output mode; BCLI-063 states that universal with its property. BCLI-021 is the min box spec requirement and renders one of those modes, so it is not the requirement that covers the invariant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): tighten BCLI's changed lines to the prose rules Splits BCLI-044's alias-note clause into a sub-bullet and BCLI-022's argument precedence into a sub-bullet, states the alias hints as printing after the command ends, and shortens the changed Design reasoning, Rollout and Open question sentences so the lines this round touched add no Vale alerts beyond the verify-line pair every verify line carries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): close four BCLI review gaps on start, run, stop and restart BCLI-029's off-TTY refusal now runs before the box is created and creates nothing. The fresh-instance reasoning states the refused alternative as one. Bare `stop` maps to `host stop` on the one host the global `--provider` and `--minimal-dir` flags select, with `--force` carried over. The Rollout names the `min box restart` hints of BCLI-009 and BCLI-068 as needing the same daemon operation as BCLI-074. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): bring BCLI's prose to the repo's Vale rules Split long sentences, drop semicolons, passives and unapproved modals, and restate the AI-tell patterns Vale flags. Each requirement keeps its EARS pattern, id, tier and verify line. The alerts left are on the format's verify lines, the owner field, the template's heading dash, and the user stories transcribed from the epic. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): keep bare stop's refusal in its alias window; track restart Bare `min stop` keeps today's refusal while boxes run during its alias window, and maps to `host stop --force` under `--force`. The Rollout names gominimal#2761, a spec-29 amendment in its own PR, as the dependency of BCLI-074 and the `min box restart` hints, which closes the matching Open question. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): map every activate flag and follow arch at 7a86ec7 Rework BCLI-042's alias table: a plain `session activate` maps to `session start --detach` and `--attach` to `session start`, every activate flag is mapped (the network policy flags through the command-line override layer, so `--deny-all-egress` is never dropped), and an alias refuses any flag it does not map with exit 2. `session hooks` maps to `box spec <box>`, which now lists each hook with its declarer. Re-pin the architecture to 7a86ec7 and follow it: `box run` refuses a pty_enabled entry, bare `box attach` and `session attach` are permanent with the attach exit codes 0, 7 and 254, exec refusals name exits 2 and 5, and the held-volume exit code is left to BVOL. Also: BOX-005's second ambiguity refusal, the byte comparison in BCLI-021, BCLI-073 narrowed to `loadout_mode = "open"`, the BCLI-064/BCLI-042 order, `box wait --timeout`, the global-flags non-goal, the provider non-goals after the Box Provider API, and the Rollout's missing citers, scripts and the gominimal#2834 dependency. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): cite the BCLI residual issues and answer the review threads Cite gominimal#2868 for the verbs with no owner, gominimal/arch#160 for the 124 row, gominimal/arch#161 for --no-hooks and --sync, and gominimal#2834 for both halves of BCLI-006, whose disk figure excludes Box Volumes (BVOL-008). From minimal-review on c4896c0: attach fails off a TTY before it resumes the box; a stop or removal ends an attach with 254, not 0; `session hooks <name>` resolves a box, never an entry; and an alias's window ends one release after its listed citers move, stated in the requirement as well as the Rollout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): put an alias's machine-mode hint in the error object and map short flags From minimal-review on 4b494ed: a failing alias under -o json puts its hint in BCLI-033's error object rather than a second stderr line, and a short flag (-n, -f) maps wherever its long form maps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): state the bare stop alias's running-box check and its exit code From minimal-review on 990008d: `host stop` stops running boxes, so the bare `stop` alias is not a pure mapping. It checks for running boxes first and refuses with exit 2, keeping today's message byte for byte because the installer matches it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): keep a detached PTY box's terminal input for a later attach From minimal-review on ef58775: BCLI-029 closed stdin on every unattached start, including the `start --detach` that a plain `session activate` now maps to, which would leave a later attach unable to type. The close now applies only without `pty_enabled`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): answer Norrie's review at 990008d - BCLI-022 lists hooks without a declarer: BOX-068 stores the merged expanded spec, so the record keeps none. Open question for the BOX amendment that would restore it. - Rollout lists the scripts each alias's window waits on, session-e2e.sh among them, and gains `session rename`. - The activate alias's network flags each name the spec key they set. - `session destroy --all` and `--force` on a missing box keep today's behaviour through the window. - The `session hooks` hint names the box id. - BCLI-064 states the parse-first order in its text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): scope `session destroy --all` to session boxes and exempt prune --dry-run From minimal-review on 1bd4c43: `session destroy --all` now removes only boxes of type `session`, as BCLI-030 filters the session verbs; a dry-run prune needs no --yes off a TTY; and the design reasoning no longer claims `box spec` shows each hook's declarer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw * docs(specs): order BCLI-068's --exec refusals From minimal-review on b3d698f: an ended exec without a PTY matched the exit 2 and both exit 4 rules. The unknown-id check now comes first, then the ended exec, then the live exec with no PTY. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NSAwDroXL6KqsSxUzdbZGw --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Split out of #1697 so the BOX model spec can land on its own. The document is byte-identical to the one that was on that branch at d8b1e23, where it went through the same spec-author checkpoints, the review-fix loop, and the CodeRabbit and minimal-foundry threads recorded there.
docs/specs/27-spec-box-volumesmin volumeverbs. Volumes are keyed by project per arch AT21, carry an access mode (rw/ro), and keep a write hold throughstoppedthat is released onexitedor reap; resume from exited is refused (exit 5) when another box holds the volume (BVOL-013).Depends on BOX (#1697): BOX-076 admits BVOL-011's volume items and BOX-025 cites BVOL-013 in the resume refusal order. Lands after #1697.
Open question for arch: volumes mount at
/volumes/<name>.Epic story: S19 (stretch) of gominimal/inbox#731.
spec-lintreports onlyP004, one per named test that does not exist yet.🤖 Generated with Claude Code