U6 shipped as v0.6.0 and a late fix as v0.6.1; U7's three ratified components (rail, filters, grid keyboard) are landed and the fourth is deliberately not, because swapping subfolder sections for filename-derived groups is a scope departure the operator has not ruled on. A test fails if anyone builds it anyway. Two new detail files. One decomposes U7 by ratified-versus-not and records the two decisions taken under stated assumption. The other keeps the mechanism behind today's misrouted directive: pane_find addresses seats by a ROLLING PANE TITLE, which is not a stable address, and the failure is silent from the sender's side -- Miranda had no signal until infra-ops flagged it. The incident resolved; the mechanism did not. The generated handoff committed the modality failure its own step-7 read exists to catch: it listed push, seed and the 17-handle note as imperative Next steps when all three are explicitly gated. Rewritten as do-nots, Next steps emptied. Recorded here because it is the second time the generator has needed that backstop.
2.8 KiB
U7 is three-quarters built and blocked on one word
2026-09-22 · booth
The last v1 unit, decomposed by what the operator has already ratified versus
what he has not. ROADMAP's U7 row names four components. Three were already
approved there and are built, tested and deployed (a306e2d). The fourth is
a scope departure and is deliberately not built.
| component | ROADMAP | state |
|---|---|---|
| sticky rail | ratified | landed — totals + per-filter counts |
| filters | ratified | landed — all / flagged / annotated / unanswered |
| grid keyboard | ratified | landed — ←/→ f n Enter Esc, bound only when a grid exists |
| sections → filename groups | departs | NOT BUILT |
tests/test_navigation.py::test_no_group_rail_is_shipped_yet fails the moment
somebody builds the group rail anyway, so the departure cannot arrive by
accident while the ruling is outstanding.
The question, and why it is his
Drop subfolder sections for filename-prefix groups — yes or no?
Measured (see 2026-09-22-u7-remeasured-before-scoping): zero of eleven gallery booths have a subdirectory, so sections buy nothing; stripping a trailing digit-run from the stem yields 5–16 sensible groups on four of the five large galleries and degenerates to one group on the fifth. The replacement is better on the evidence — but swapping a ratified component for an unratified one is scope direction, not implementation.
Contract at docs/contracts/u7_navigation.contract.md, status
PARTIALLY LANDED, with the departure named as the operator's call.
Decisions taken under stated assumption, both cheap to reverse
unansweredmeans HAS AN OPEN PICK — the U4 hold predicate, which already exists. The other reading ("has no mark at all") is a genuinely different question and stays an open question on the contract.- Filters are LINKS, not scripts, resolved server-side, so the gallery keeps working with JavaScript off. U3 cost the verbatim path its no-JS operation and said so plainly; the gallery is the surface the operator actually reviews on, and this unit does not repeat it there.
The vacuous falsifier, written an hour after the entry about them
test_filtering_never_reorders compared each filtered view against the
unfiltered response — so a mutation reversing the order reversed both sides
and it stayed green under the exact change it forbade. Caught only by
running the mutation rather than trusting the assertion.
Rewritten against an independent truth: U1 INV-3 says the order IS sorted(rel),
so each view must be sorted, full stop, with no reference to another response.
Re-verified RED. Every new falsifier in this session was mutation-checked
after this, and that is the practice to keep — see
2026-09-22-vacuous-falsifiers.