docs(roadmap): r3 landed — the compare ring and stepping rules, compare mode off the parking lot

The stale v1.1 line for compare pairing is corrected to the 2026-09-24
ruling (pairs are picked, never detected). persistent-memory records r3
live and unpushed, and the open race note for design-dev.
This commit is contained in:
vh
2026-09-24 15:57:42 -07:00
parent f8d136a521
commit cf08ae3f33
2 changed files with 25 additions and 16 deletions
+5 -2
View File
@@ -119,6 +119,8 @@ Where it already binds, and what the rule is in each case:
| embed anchors in a verbatim report | **document order** — what `querySelectorAll` yields, so the author's markup decides (U3) | | embed anchors in a verbatim report | **document order** — what `querySelectorAll` yields, so the author's markup decides (U3) |
| the embed tail (fragments the author did not place) | **payload order**, which is the marks order `(created, id)` — one rule, whether a fragment lands at an anchor or at the end (U3) | | the embed tail (fragments the author did not place) | **payload order**, which is the marks order `(created, id)` — one rule, whether a fragment lands at an anchor or at the end (U3) |
| questions within a pick | declaration order, in the payload's `questions` LIST — carried by the format rather than by object-key insertion order (U3) | | questions within a pick | declaration order, in the payload's `questions` LIST — carried by the format rather than by object-key insertion order (U3) |
| the compare filmstrip | **the compare ring**: the review ring (item order, media only) less any rel compare cannot open, so no strip link offers a pair that 404s (r3) |
| compare stepping | along the compare ring, modulo its length; linked moves both sides one place and keeps their distance, unlinked moves the active side only (r3) |
U3's three rows are the first case where the rule binds across a language U3's three rows are the first case where the rule binds across a language
boundary: the order is decided in Python and honoured in JavaScript, and a boundary: the order is decided in Python and honoured in JavaScript, and a
@@ -140,7 +142,8 @@ gallery booths have a subdirectory.
(section ordering among themselves, compare pairing) resolved differently: (section ordering among themselves, compare pairing) resolved differently:
section ordering is MOOT, because U7 renders no section rail — `Item.section` section ordering is MOOT, because U7 renders no section rail — `Item.section`
still exists and is still derived, it simply has no ordered surface. Compare still exists and is still derived, it simply has no ordered surface. Compare
pairing rode into v1.1 with compare mode itself. **U6's bench listing is pairing was ruled 2026-09-24: pairs are PICKED, never detected from filenames,
and compare landed with r3 (rows above). **U6's bench listing is
settled** — the row above. settled** — the row above.
The test for any new ordered surface: *can you write the rule down in one line?* The test for any new ordered surface: *can you write the rule down in one line?*
@@ -162,7 +165,7 @@ weighed against the v1 path and lost on purpose.
| item | why parked | | item | why parked |
|---|---| |---|---|
| ~~**Compare mode**~~ — **UNPARKED 2026-09-23, IN THIS ARC** | Parked as "the only new capability rather than a fix for a measured defect", and **that deferral was ours and the operator overruled it.** design-dev argued it belongs in this arc because the ladders and bakeoffs already need it; the operator ruled `this_arc`. Lands AFTER the Desk and the reel, as a view toggle over the same item record. Recorded so nobody re-parks it by reading an older rule. | | ~~**Compare mode**~~ — **UNPARKED 2026-09-23, LANDED 2026-09-24 (r3)** | Parked as "the only new capability rather than a fix for a measured defect", and **that deferral was ours and the operator overruled it.** design-dev argued it belongs in this arc because the ladders and bakeoffs already need it; the operator ruled `this_arc`. Lands AFTER the Desk and the reel, as a view toggle over the same item record. Recorded so nobody re-parks it by reading an older rule. |
| Virtualized / progressive grid loading | Speculative. 270 `<img loading="lazy">` may be fine. **Measure the real booth before optimising it** — if it renders inside a second, this is invented work. | | Virtualized / progressive grid loading | Speculative. 270 `<img loading="lazy">` may be fine. **Measure the real booth before optimising it** — if it renders inside a second, this is invented work. |
| Bench uptime history + graphs | The v1 need is "is it dead", which one flag answers. A time series is a different product. | | Bench uptime history + graphs | The v1 need is "is it dead", which one flag answers. A time series is a different product. |
| Cross-booth search | No evidence of the need in the usage data. | | Cross-booth search | No evidence of the need in the usage data. |
+20 -14
View File
@@ -19,18 +19,22 @@ loop it turned out to actually be.
_As of 2026-09-24:_ _As of 2026-09-24:_
- 🔶 **WAITING ON design-dev: the r3 (compare mode) contract.** The operator - ✅ **r3 COMPARE IS LIVE, NOT PUSHED** (operator: "merge r3 once the
ruled r3 on 2026-09-24, in design-dev's session, as both of us recommended: mutation check is clean", 2026-09-24). Fast-forwarded to design-dev's
pairs are PICKED (no filename auto-pairing; design-dev measured it: 1 booth in `f8d136a` after our own run of the gate on that exact commit: 918 passed, and
26 pairs cleanly, and `sindra-h2h` gets none), and the verdict is a FLAG on 148/148 falsifiers proved (r2b 55, r2c 36, r3 57). Service restarted at 1557
the winner. So **r3 needs nothing new from `booth_items` or marks.** The and checked with `/healthz`, the Desk, `/openapi.json` and an empty-pair 404
compare URL is keyed by REL (`?a=<rel>&b=<rel>`), never by ordinal (our U1 only. **origin/main is still `d5ead3f`; the push is the operator's call.**
note, adopted). Sequencing: design-dev's SVOS phone approval page merges Our seam pass on the contract caught 12 mismatches before code, the two that
FIRST (operator-approved, pending heid reviews), then the r3 contract. When mattered being duplicate `data-region` ids (a save would have made B's flag
he pings, do the SEAM PASS on the r3 contract against the real module button flag A) and 22 mutation-table rows anchored in the script that moved.
surface. If the SVOS page lands in THIS repo, its merge still needs the **Open, design-dev's to take or refuse:** the review route calls
operator's word in this session. `cring.index(f)` after a second resolve of `f`, so a file removed or relinked
- ✅ **LIVE AND PUSHED: origin/main = `d5ead3f`, 888 green.** Tonight landed, in mid-request is a `ValueError` 500 on the review page (a narrow race; compare's
`ring.index(a)` is the same shape). The accepted-not-fixed list from the heid
bug hunt is in `docs/contracts/r3_compare.contract.md`.
- ✅ **PUSHED: origin/main = `d5ead3f`, 888 green** (local main is ahead: the
09-24 memory snapshot, r3 and its roadmap commit). On 09-23 landed, in
order: r2b merge 1 (`b92b002`, reveal all + booth fog), r2b merge 2 order: r2b merge 1 (`b92b002`, reveal all + booth fog), r2b merge 2
(`cce6a20`, Desk row + dates + theme toggle), the Desk sort (`64f6488`), the (`cce6a20`, Desk row + dates + theme toggle), the Desk sort (`64f6488`), the
blur round-trip (`6880ab3`), 768-wide thumbnails (`1d31ab0`), r2c the review blur round-trip (`6880ab3`), 768-wide thumbnails (`1d31ab0`), r2c the review
@@ -69,8 +73,9 @@ _As of 2026-09-24:_
presumably the operator, as he said he would. **Do not blur, unblur or presumably the operator, as he said he would. **Do not blur, unblur or
reveal them on his behalf.** The Desk still shows up to 4 images per booth. reveal them on his behalf.** The Desk still shows up to 4 images per booth.
- 🛑 **NO `1.0.0` YET** (operator, 2026-09-23). The tag stays `1.0.0b1`, with - 🛑 **NO `1.0.0` YET** (operator, 2026-09-23). The tag stays `1.0.0b1`, with
no further pre-release until the arc lands (r3 compare is still in it). ⚠ It no further pre-release until the arc lands. r3 compare, the last unit we
has looked complete twice already. held named in it, landed 2026-09-24; **whether that closes the arc is the
operator's call, never ours.** ⚠ It has looked complete twice already.
- 🛑 **STANDING: NO ANNOUNCEMENTS out of this repo until the whole arc is done, - 🛑 **STANDING: NO ANNOUNCEMENTS out of this repo until the whole arc is done,
and the operator sends that one himself.** Do not offer, draft-and-await, or and the operator sends that one himself.** Do not offer, draft-and-await, or
raise it. raise it.
@@ -80,6 +85,7 @@ _As of 2026-09-24:_
## Recent decisions ## Recent decisions
- `[2026-09-24]` ✅ **r3 compare merged on the operator's word, gated by our own run** — fast-forward to `f8d136a` only after 918 green and 148/148 falsifiers on that exact commit, run here rather than taken from design-dev's report. The seam pass is what made the build clean: 12 contract-vs-code mismatches folded before a line was written.
- `[2026-09-24]` ✅ **r3 compare ruled: pick two, flag the winner** — operator, in design-dev's session. No `booth_items` or marks work; the URL is rel-keyed. The A/same/B pairwise verdict is **PARKED (deferred)**, with our ordered-pair-of-rels note attached. Tracked in design-dev's r3 contract parked entry, althing thread `01M3952NCDRRJX5XDFSPMSP5HJ`. - `[2026-09-24]` ✅ **r3 compare ruled: pick two, flag the winner** — operator, in design-dev's session. No `booth_items` or marks work; the URL is rel-keyed. The A/same/B pairwise verdict is **PARKED (deferred)**, with our ordered-pair-of-rels note attached. Tracked in design-dev's r3 contract parked entry, althing thread `01M3952NCDRRJX5XDFSPMSP5HJ`.
- `[2026-09-23]` ✅ **The Desk's "Everything else" sorts by last UPDATE, not last activity** — the operator chose the simple fix over repairing `.viewed` from the access log. READ BEFORE CHECKING THE LIVE SERVICE → `persistent-memory.d/2026-09-23-desk-sorts-by-last-update.md` - `[2026-09-23]` ✅ **The Desk's "Everything else" sorts by last UPDATE, not last activity** — the operator chose the simple fix over repairing `.viewed` from the access log. READ BEFORE CHECKING THE LIVE SERVICE → `persistent-memory.d/2026-09-23-desk-sorts-by-last-update.md`
- `[2026-09-23]` ✅ **The blur round-trip, and the migration that recreated the bug it fixed** — three rounds, and the third was our own 09-21 marks lesson repeated. READ BEFORE ANY DOTFILE FORMAT CHANGE → `persistent-memory.d/2026-09-23-blur-round-trip-and-the-migration-that-recreated-it.md` - `[2026-09-23]` ✅ **The blur round-trip, and the migration that recreated the bug it fixed** — three rounds, and the third was our own 09-21 marks lesson repeated. READ BEFORE ANY DOTFILE FORMAT CHANGE → `persistent-memory.d/2026-09-23-blur-round-trip-and-the-migration-that-recreated-it.md`