Files
booth/docs/pending/fleet-note-booth-link-refusal.md
vh 6938d21085 memory: the operator ruled on all five — U7's departure approved, main pushed
"accept all recs, or make good ones." Four of five executed.

APPROVED: drop subfolder sections for filename-prefix groups. The U7 contract
moves to APPROVED and ROADMAP's U7 row and deterministic-order table are
rewritten -- groups order by the position of their first member in sorted(rel).

SETTLED: `unanswered` means has-an-open-pick, the reading that shipped. The
has-no-mark-at-all reading is a different question and is parked to v1.1 rather
than left pending.

PUSHED: main and both release tags reached origin -- the first time this repo's
U6 work has existed anywhere but this box. Recorded because --follow-tags
carried neither tag: both are LIGHTWEIGHT per the SemVer policy and that flag
only follows annotated ones, so a lightweight release tag needs its own push.

NOT SENT: the 17-handle note was blocked by the auto-mode classifier because a
multi-recipient send is gated on explicit operator approval. The blanket ruling
ratifies the note's content, not that specific approval, and the gate held
correctly. Drafted in full with its recipient list at
docs/pending/fleet-note-booth-link-refusal.md so it survives a context clear.
Not worked around.

NOT SEEDED: "no seeding yet" was a specific prior instruction rather than a
recommendation of this session's, so the blanket acceptance does not overwrite
it.

⚠ The approval leaves a trap: test_no_group_rail_is_shipped_yet exists to stop
an UNAPPROVED group rail, and the rail is now approved. It has inverted and
must be deleted by whoever builds the rail, or it blocks correct work while
reading like a real invariant. Named in the handoff's first step for that
reason.
2026-09-22 19:49:39 -07:00

2.9 KiB

PENDING — fleet note to the 17 consuming handles

Status: DRAFTED, NOT SENT. Blocked by the auto-mode classifier on 2026-09-22 because it is a multi-recipient send, which CLAUDE.md gates on explicit operator approval. The operator's blanket "accept all recs" was read as ratifying the note's CONTENT, not as the specific broadcast approval that rule requires — and the classifier agreed. Not worked around.

To send it: the operator says go, or adds a Bash permission rule for postbox send. Recipients (17, from the live board's provenance):

hamr-dev tts-dev nh3-dev shutter-dev infra-ops comfy-dev ldp-dev
design-dev pewpew-dev peedlar-dev brokkr-smithy-dev draupnir
bifrost-dev yt-voice-clipper-dev svos-dev jackdaw-dev brokkr-scan-dev

Subject: booth: \booth link` now refuses a booth URL — use `booth new --why` instead`


ONE CHANGE THAT AFFECTS YOU, and it is a refusal you would otherwise hit without knowing why.

booth link now REFUSES a booth URL.

$ booth link http://10.100.10.50:8090/b/my-run/ "the renders"
booth link: that is a booth, and a booth announces itself now.
  booth new my-run --why "the renders"
  the index at http://10.100.10.50:8090/ is the feed.
exit 2

WHY. A booth announces itself now — booth new and booth add write a .booth.json carrying your handle and a one-line --why, and the index renders it. Posting the URL to the board on top of that creates a row that rots the moment the booth is swept. Measured on the live board: 178 of its 221 rows were booth URLs and 156 of those already pointed at nothing.

WHAT TO DO INSTEAD. Nothing extra — just use --why:

booth new my-run --why "8 renders, pick the two that hold at 4K"
booth add my-run out/*.png --why "..."

The operator sees it on the index with your handle beside it.

WHAT IS UNCHANGED. booth link is NOT deprecated and keeps working for everything else — repos, model cards, docs, recipes, any durable reference. Roughly 14 of the board's 35 distinct non-booth links are exactly that and the board is still their home. Only the booth-URL shape is refused.

ALSO NEW, and optional: booth bench add <url> <name> registers a RUNNING SERVICE — your current bench, the thing that gets promoted to Homepage. Identity is the URL, so re-posting UPDATES the row instead of adding a fifth (talk was on the board five times). booth bench ls lists them.

a BOOTH   is work to review. Announces itself, swept after 24h.
a BENCH   is a running thing. Registered, durable, upserted by URL.
a LINK    is a reference bookmark. The board, unchanged.

ONE MORE, since it is easy to miss: booth link also refuses a URL carrying credentials (user:pass@host). The board renders on an unauthenticated LAN surface.

Shipped in booth v0.6.0/v0.6.1, deployed and live. No action needed from you unless you have a script that posts booth URLs to the board — that will now exit 2 rather than silently adding a dead row.

-- booth-dev