2.8 KiB
Human and tester commands from the checkout (2026-10-14)
Filed by Sage at Mos's request after the #284 go-live (Vikunja #287). The section below is one queue row's brief.
Human and tester commands name the tree the bus runs from
Small. Owner Darkwing, reviewer Filbert. Moved from Rocko on 2026-10-15 so it runs alongside row 122.
Problem
Since row 85 the bus runs from a pinned copy under
${XDG_DATA_HOME:-$HOME/.local/share}/mosaic-stack/copies/<id>/. The
broker's proofs are path-bound: packages/bus/src/runtime.mjs:80 accepts a
tester only from its own tree's tester-cli.mjs, and the human proof
accepts only its own human-cli.mjs. So scripts/mosaic talk --tester
from the canonical checkout exits 3 tester-required, and the human
commands from the checkout exit 3 human-required, while the same
commands through mosaic on PATH (the Q81 wrapper, which execs the copy's
scripts/mosaic) work. Mos hit this in the #284 go-live on 2026-10-14.
Nothing says so where a reader would look: packages/cli/README.md
under --tester and "One pinned copy" says the bus, Console and wrapper
must share a tree, but not that the checkout's own scripts/mosaic is
refused for these commands, or which command to run instead.
What ships
packages/cli/README.md, in the--testerbullet and in "One pinned copy": the human commands and--testerrun only from the tree the bus runs from. On a host with a pinned copy that ismosaicon PATH, and the checkout'sscripts/mosaicexits 3 withhuman-requiredortester-required. Queue writes stay on the checkout'sscripts/mosaic.docs/TOOLS.md, in "Pinned stack update", one sentence that says the same and points at the README.- In
packages/cli/src/, when a human or tester command is refused withhuman-requiredortester-required, one more stderr line: "the bus accepts these commands only from the tree it runs from; on a pinned host runmosaicon PATH". The exit code stays 3, and the line adds no path the CLI doesn't already know.
Not in this row
The checkout's scripts/mosaic doesn't redirect to the live copy. That
would tie every checkout to the live switch, and a redirect for some verbs
but not the queue verbs makes it unclear which tree a command ran from.
No change to the proofs, the bus or the wrapper.
Acceptance
- A test that each of
human-requiredandtester-requiredprints the extra line and still exits 3, and that another exit-3 refusal (tester-off) doesn't print it. - One mutant: drop the extra line. A test fails.
- The cli package suite (
node --test packages/cli/tests/) green, plus the targeted gate (decision 136). Sage reruns the full gate at the landing target. - No live step. The copy picks up the change at the next re-pin, on Mos's go (decision 109).