Files
booth/persistent-memory.d/2026-09-22-operator-ruled-on-the-open-five.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.7 KiB

The operator ruled on all five open items at once

2026-09-22 · booth

"accept all recs, or make good ones, write it to handoff so I can clear." A blanket ratification. Four of the five executed; one was stopped by the permission layer and is recorded rather than worked around.

# item ruling state
1 Drop subfolder sections for filename-prefix groups APPROVED not yet built — the next session's first job
2 What unanswered filters on open pick (the shipped reading) settled; the other reading parked to v1.1
3 Push main PUSH DONE — 16 commits + v0.6.0 + v0.6.1 now on origin
4 The 17-handle althing note send it BLOCKED — see below
5 Marks guard placement stays at _hydrate already there; nothing to do

Two things the blanket ruling did NOT cover, and why

The broadcast was blocked by the auto-mode classifier, and that was right. CLAUDE.md gates any multi-recipient althing send on explicit operator approval — "ask, then send, never send and report" — because the cost is multiplied by the recipient count and paid out of budgets the sender never sees. A blanket "accept all recs" ratifies the note's content; it is not the specific, informed broadcast approval that rule asks for. The classifier agreed and it was not worked around. Draft, rationale and the 17-name recipient list live at docs/pending/fleet-note-booth-link-refusal.md so they survive a context clear; it needs his explicit go or a postbox send permission rule.

"No seeding yet" survives the blanket ruling, because it was a SPECIFIC prior instruction rather than a recommendation of this session's. A blanket acceptance of recommendations does not overwrite a direct instruction pointing the other way. .benches.json still does not exist in ~/booth-data.

The push, recorded because it is a first

main was 16 commits ahead with two release tags unpushed and the whole of U6 single-copy on one box. Pushed with --follow-tags, then the two tags explicitly — --follow-tags pushed neither, because both tags are LIGHTWEIGHT per the SemVer policy and that flag only carries annotated ones. Worth knowing: a lightweight release tag needs its own git push origin <tag>.

The trap this leaves behind, and it is a real one

tests/test_navigation.py::test_no_group_rail_is_shipped_yet was written to stop an unapproved group rail from arriving by accident. The rail is now approved, so that test has inverted: it will block the correct work and read like a genuine invariant while doing it. Whoever builds the group rail must delete it in the same commit. A guard that outlives its reason is worse than no guard, because the next reader trusts it.