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.
57 lines
2.8 KiB
Markdown
57 lines
2.8 KiB
Markdown
# 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
|
||
|
||
- **`unanswered` means 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]].
|