Skip to content

docs: fix user-manual commands that fail or mislead as documented - #268

Open
sigilante wants to merge 2 commits into
urbit:masterfrom
sigilante:docs/pr9-user-manual
Open

docs: fix user-manual commands that fail or mislead as documented#268
sigilante wants to merge 2 commits into
urbit:masterfrom
sigilante:docs/pr9-user-manual

Conversation

@sigilante

Copy link
Copy Markdown
Contributor

Third of three PRs from an audit against urbit/urbit@08026c84b2. This batch is dojo commands a reader would actually run. Every command below was run on a fake ship booted from urbit-408k-rc1.pill ([%zuse 408]), and every sample output is a real capture rather than a reconstruction.

Companion PRs: mechanical corrections, and Hoon stdlib signatures.

+vats — the documented argument surface did not exist

Source is (list desk) positional with =filt and =verb named (gen/vats.hoon:6-20). The dojo reports its own interface while rejecting the documented one:

> +vats, =show-blocking |
dojo: keywords allowed
[filt=@tas verb=?(%.y %.n)]
-find.show-blocking
dojo: generator failure

> +vats %suspended
desk does not yet exist: %suspended

That second one matters: the filter is a named argument, so a bare +vats %suspended is parsed as a desk of that name. Removed the four phantom =show-* arguments, corrected %nonexistent%exists-not, and added the missing %exists.

The field list was also wrong in both directions. Default output is terse, not verbose, and prints three fields that were undocumented (%cz hash ends in, essential desk, /desk/bill) while omitting four that were documented (updates, base hash, force on/off, publishing ship). Split into terse and =verb & sections. app status has three values, not two — running, suspended, and suspended until next update (sur/hood.hoon:203). All examples replaced with real captures.

|bump, =force & fails

gen/hood/bump.hoon takes no arguments at all; the dojo reports an empty keyword set (%~) then -find.force. Both occurrences in updates.md corrected to plain |bump, which already does the suspend-and-upgrade. dojo-tools.md was already right, so the two pages had been contradicting each other.

updates: tracking is never emitted

The field is ?~(sink 'local' 'remote') (sur/hood.hoon:243), so the surrounding prose told readers to act on a string they can never see. Both sample outputs replaced with real captures — one local, one remote — and the commands changed to =verb &, since the terse default omits updates entirely.

Comet |ota

A bare |ota matches neither branch of the arg mold ?([%disable ~] [her=@p sud=?(~ [@tas ~])]) and fails with bad-argument. Corrected to |ota (sein:title our now our), matching what updates.md already said.

|reload / |breload are gone

Both fail with %generator-build-fail; no /gen/hood/reload exists. The |breload entry is deleted, and the |reload example — which existed only to demonstrate the | hood-command syntax — now uses |mass, verified working.

|new-desk, =from does not clone a desk

It only selects where a fixed five-file template is read from (gen/hood/clay/new-desk.hoon:30-60). Verified on a fresh ship:

%base                              ->  {app sur gen lib mar ted desk sys}
|new-desk %testdesk, =from %base   ->  {mar sys}

with mar holding exactly {hoon txt kelvin noun}. Dropped the desk.bill warning, which was advice about a copy that never happens — the created desk has no desk.bill at all.

Smaller

  • |nuke — added the undocumented =hard flag, which skips the confirmation prompt on an irreversible state wipe.
  • |suspend — takes (list desk), not a single desk; multiple desks suspend together.
  • |essential-desk — new entry. Documented nowhere in the user manual despite essential desk appearing in every +vats print-out. Verified end to end: |essential-desk %testdesk & flips the field from no to yes.

🤖 Generated with Claude Code

sigilante and others added 2 commits August 4, 2026 11:45
Every command below was run on a fake ship (v4.6 pill, [%zuse 409]) and the
generator source read at urbit/docs.urbit.org@08026c84b2. Sample outputs are real captures,
not reconstructions.

+vats (dojo-tools.md): the documented argument surface did not exist.
  Source is `(list desk)` positional with `=filt` and `=verb` named
  (gen/vats.hoon:6-20). Verified:
    +vats, =show-blocking |  ->  dojo prints "keywords allowed
                                 [filt=@tas verb=?(%.y %.n)]", then fails
    +vats %suspended         ->  "desk does not yet exist: %suspended"
                                 (parsed as a DESK, not a filter)
  Removed the four phantom `=show-*` arguments; corrected `%nonexistent` to
  `%exists-not` and added the missing `%exists`; documented that the filter
  must be passed as `=filt`.

  The field list was also wrong. Default output is terse, not verbose, and
  prints `%cz hash ends in`, `essential desk` and `/desk/bill` -- none of
  which were documented -- while omitting `updates`, `base hash`, `force
  on/off` and `publishing ship`, all of which were. Split the list into
  terse and `=verb &` sections. `app status` has three values, not two:
  running / suspended / "suspended until next update" (sur/hood.hoon:203).
  All four examples replaced with real captured output.

|bump (updates.md): `|bump, =force &` fails. gen/hood/bump.hoon takes no
  arguments at all; the dojo reports an empty keyword set (`%~`) then
  -find.force. Both occurrences corrected to plain `|bump`, which already
  does the suspend-and-upgrade. dojo-tools.md was already right.

+vats "updates: tracking" (updates.md): `tracking` is never emitted. The
  field is `?~(sink 'local' 'remote')` (sur/hood.hoon:243), so the prose
  told readers to act on a string they cannot see. Both sample outputs
  replaced with real captures -- one `local`, one `remote` -- and the
  commands changed to `=verb &`, since the terse default omits `updates`
  entirely.

|ota (get-on-urbit.md): a bare `|ota` matches neither branch of the arg
  mold `?([%disable ~] [her=@p sud=?(~ [@tas ~])])` and fails with
  bad-argument. Corrected to `|ota (sein:title our now our)`, matching
  updates.md.

|reload / |breload (shell.md): both generators are gone; `|reload %eyre`
  fails with %generator-build-fail and no /gen/hood/reload exists. The
  `|breload` entry is deleted and the `|reload` example -- which existed to
  demonstrate the `|` hood-command syntax -- now uses `|mass`, verified
  working.

|new-desk (dojo-tools.md): `=from` does NOT fill the desk with the source
  desk's contents. It only selects where a fixed five-file template is read
  from (gen/hood/clay/new-desk.hoon:30-60). Verified on a fresh ship:
    %base                              -> {app sur gen lib mar ted desk sys}
    |new-desk %testdesk, =from %base   -> {mar sys}, mar holding exactly
                                          {hoon txt kelvin noun}
  Dropped the desk.bill warning, which was advice about a copy that never
  happens -- the created desk has no desk.bill at all.

|nuke (dojo-tools.md): added the undocumented `=hard` flag, which skips the
  confirmation prompt on an irreversible state wipe.

|suspend (dojo-tools.md): takes `(list desk)`, not a single desk; multiple
  desks suspend together. Confirmed the generator has no named arguments.

|essential-desk (dojo-tools.md): new entry. Previously documented nowhere
  in the user manual despite `essential desk` appearing in every +vats
  print-out. Verified end to end: `|essential-desk %testdesk &` flips the
  field from no to yes.

Kelvin figures in sample output are 409 because that is what the shipping
pill reports; develop is at 408. Left as captured pending that decision.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Amends the sample output committed in the previous PR-9 commit. Those captures
came from a fake ship booted on the v4.6 pill, which reports [%zuse 409]; that
is the OLD kernel, since kelvin counts down. Recaptured on a ship booted from
urbit-408k-rc1.pill, which reports [%zuse 408].

Nothing about the findings changed -- every command corrected in the previous
commit behaves identically on 408. Only the printed kelvins and desk hashes in
the examples differ.

Updated in dojo-tools.md: the terse +vats sample (%base, %webterm), the
`=verb &` sample, and the `=filt %suspended` sample.
Updated in updates.md: both +vats print-outs, and the illustrative pending
update `~[[%zuse 408]]` -> `~[[%zuse 407]]` so that it still names a kelvin
newer than the one the desk reports.

The remaining `[%zuse 409]` in each file is not stale: it is one entry in
%webterm's list of supported kelvins, which legitimately spans 408 through 416.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant