diff --git a/ROADMAP.md b/ROADMAP.md index 7a70610..4df2600 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,12 +1,20 @@ # The Booth — roadmap Design: [`docs/design/information-architecture.md`](docs/design/information-architecture.md). -Current version: `1.0.0b1` (**U1 through U7 landed — every v1 capability is -in**; extracted from eshpfi 2026-09-21). **The v1 target is MET and staged as a -beta** (operator, 2026-09-22): feature-complete, external testing, no new -features — the remaining work is bugs. `1.0.0` final is cut when the beta -survives; per the canonical policy an rc would be cut from the same commit, -but a beta may still take fixes. +Current version: `1.0.0b1` (**U1 through U7 landed**; extracted from eshpfi +2026-09-21). + +⚠ **THE BETA'S PREMISE IS SUPERSEDED AND THE TAG CANNOT BE UNSAID.** +`v1.0.0b1` was cut 2026-09-22 promising "feature-complete, no new features, the +remaining work is bugs." On 2026-09-23 the operator ruled a flow redesign and +compare mode into the arc, which are emphatically new features. **The tag stays +as written** — it is an immutable record of what was believed at the time, not a +claim about now — and no further pre-release is cut until the arc lands. +Dropping back to an alpha is not available: `1.0.0a2` sorts BELOW `1.0.0b1`, and +versions do not go backwards. + +**Whether `1.0.0` waits for the redesign is the operator's call** and is not +yet made. See the design-arc section. ## v1 target @@ -143,14 +151,18 @@ weighed against the v1 path and lost on purpose. | item | why parked | |---|---| -| **Compare mode** — pair-by-name A/B across subfolders | The best idea in the set, and the only one that is a *new capability* rather than a fix for a measured defect. The four-booth `pancake-v3/v4` dance still works. First thing in v1.1. | +| ~~**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. | | Virtualized / progressive grid loading | Speculative. 270 `` 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. | | Cross-booth search | No evidence of the need in the usage data. | | Per-viewer state (who has seen what) | The Booth has one viewer. Revisit if that stops being true. | | Auth | Standing non-goal. LAN/mesh-internal. Blur stays cosmetic and says so. | -## Post-v1, already committed +## The design arc — IN SCOPE, not post-v1 + +⚠ **This section used to be "Post-v1, already committed" and it is not post-v1 +any more.** The operator's 2026-09-23 rulings put a flow redesign and compare +mode inside the arc, so the work below is part of what ships, not after it. - **SVOS theme retrofit by `design-dev` — HANDED OFF AND ACCEPTED 2026-09-22** (althing thread `01M369321KNBPZ7FYDQGZG7AXP`). Runs as a parallel track, not a diff --git a/docs/rulings/2026-09-23-flow-direction.json b/docs/rulings/2026-09-23-flow-direction.json new file mode 100644 index 0000000..e6bc353 --- /dev/null +++ b/docs/rulings/2026-09-23-flow-direction.json @@ -0,0 +1,218 @@ +{ + "booth": "booth-flow-concepts", + "mark": { + "id": "flow", + "shape": "pick", + "target": null, + "created": "2026-09-23T07:18:16.254321-07:00", + "declaration": { + "title": "The Booth — round 2: which flow gets built", + "questions": [ + { + "key": "direction", + "prompt": "Which flow becomes the Booth?", + "options": [ + { + "id": "a_b", + "label": "A + B's reel as the review mode", + "detail": "RECOMMENDED — the Desk + lightbox; full size gets the tape, seen-tracking and the end-of-set summary" + }, + { + "id": "a", + "label": "A — The Desk alone", + "detail": "triage index + lightbox + full-size review with filmstrip; no seen-tracking" + }, + { + "id": "b", + "label": "B — The Reel", + "detail": "every booth opens as a one-at-a-time review; the grid is secondary" + }, + { + "id": "c", + "label": "C — The Bench", + "detail": "compare-first; argued against as the default" + } + ] + }, + { + "key": "compare", + "prompt": "Compare mode (C as a view toggle):", + "options": [ + { + "id": "this_arc", + "label": "Build it in this arc, after A/B land", + "detail": "RECOMMENDED — the ladders and bakeoffs already need it" + }, + { + "id": "v11", + "label": "Leave it parked for v1.1", + "detail": "booth-dev's current plan" + } + ] + }, + { + "key": "voice", + "prompt": "The new copy I'll be writing — which voice?", + "options": [ + { + "id": "plain", + "label": "Plain and direct", + "detail": "RECOMMENDED — it's a judgment surface; deadpan only where nothing is at stake (empty states)" + }, + { + "id": "deadpan", + "label": "SVOS deadpan villainy throughout", + "detail": "the full SVOS voice" + } + ] + }, + { + "key": "emblem", + "prompt": "The SVS emblem in the top bar?", + "options": [ + { + "id": "no", + "label": "No", + "detail": "RECOMMENDED — a fleet utility; the glowing dot and reticle favicon carry the family look" + }, + { + "id": "yes", + "label": "Yes — the square emblem", + "detail": "brands the Booth as part of the SVOS suite" + } + ] + } + ], + "notes": true + }, + "prompt": "The Booth — round 2: which flow gets built", + "title": "The Booth — round 2: which flow gets built", + "multi": true, + "questions": [ + { + "key": "direction", + "prompt": "Which flow becomes the Booth?", + "options": [ + { + "id": "a_b", + "label": "A + B's reel as the review mode", + "detail": "RECOMMENDED — the Desk + lightbox; full size gets the tape, seen-tracking and the end-of-set summary" + }, + { + "id": "a", + "label": "A — The Desk alone", + "detail": "triage index + lightbox + full-size review with filmstrip; no seen-tracking" + }, + { + "id": "b", + "label": "B — The Reel", + "detail": "every booth opens as a one-at-a-time review; the grid is secondary" + }, + { + "id": "c", + "label": "C — The Bench", + "detail": "compare-first; argued against as the default" + } + ], + "notes": false + }, + { + "key": "compare", + "prompt": "Compare mode (C as a view toggle):", + "options": [ + { + "id": "this_arc", + "label": "Build it in this arc, after A/B land", + "detail": "RECOMMENDED — the ladders and bakeoffs already need it" + }, + { + "id": "v11", + "label": "Leave it parked for v1.1", + "detail": "booth-dev's current plan" + } + ], + "notes": false + }, + { + "key": "voice", + "prompt": "The new copy I'll be writing — which voice?", + "options": [ + { + "id": "plain", + "label": "Plain and direct", + "detail": "RECOMMENDED — it's a judgment surface; deadpan only where nothing is at stake (empty states)" + }, + { + "id": "deadpan", + "label": "SVOS deadpan villainy throughout", + "detail": "the full SVOS voice" + } + ], + "notes": false + }, + { + "key": "emblem", + "prompt": "The SVS emblem in the top bar?", + "options": [ + { + "id": "no", + "label": "No", + "detail": "RECOMMENDED — a fleet utility; the glowing dot and reticle favicon carry the family look" + }, + { + "id": "yes", + "label": "Yes — the square emblem", + "detail": "brands the Booth as part of the SVOS suite" + } + ], + "notes": false + } + ], + "options": [], + "notes_enabled": true, + "notes_label": "notes", + "answer": { + "stem": "flow", + "title": "The Booth — round 2: which flow gets built", + "answers": { + "direction": { + "prompt": "Which flow becomes the Booth?", + "choice": "a_b", + "choice_index": 0, + "label": "A + B's reel as the review mode", + "notes": "" + }, + "compare": { + "prompt": "Compare mode (C as a view toggle):", + "choice": "this_arc", + "choice_index": 0, + "label": "Build it in this arc, after A/B land", + "notes": "" + }, + "voice": { + "prompt": "The new copy I'll be writing — which voice?", + "choice": "plain", + "choice_index": 0, + "label": "Plain and direct", + "notes": "" + }, + "emblem": { + "prompt": "The SVS emblem in the top bar?", + "choice": "no", + "choice_index": 0, + "label": "No", + "notes": "" + } + }, + "unanswered": [], + "complete": true, + "notes": "", + "answered_at": "2026-09-23T08:07:40-07:00", + "answered_by": "100.64.0.4" + }, + "text": "", + "flagged": false, + "by": "", + "error": null + } +} \ No newline at end of file diff --git a/persistent-memory.d/2026-09-23-the-flow-rulings-and-what-they-cost-the-beta.md b/persistent-memory.d/2026-09-23-the-flow-rulings-and-what-they-cost-the-beta.md new file mode 100644 index 0000000..ca935b1 --- /dev/null +++ b/persistent-memory.d/2026-09-23-the-flow-rulings-and-what-they-cost-the-beta.md @@ -0,0 +1,68 @@ +# The flow rulings, and what they cost the beta + +_2026-09-23 · booth_ + +**All four ruled, all four taking design-dev's recommendation, no notes +attached.** Relayed via Miranda (D-0016) with the instruction that **the +operator will not brief design-dev directly and booth-dev is the SOLE RELAY.** + +| question | choice | label | +|---|---|---| +| `direction` | `a_b` | A + B's reel as the review mode | +| `compare` | `this_arc` | Build it in this arc, after A/B land | +| `voice` | `plain` | Plain and direct | +| `emblem` | `no` | No | + +Answered `2026-09-23T08:07:40-07:00`, `complete: true`, `unanswered: []`. +**Verbatim copy committed at `docs/rulings/2026-09-23-flow-direction.json`** — +see the durability note below for why that is not belt-and-braces. + +## ⚠ ANSWERING A PICK REMOVES THE HOLD THAT WAS PROTECTING THE RECORD + +U4's hold predicate is "has an open pick" — a booth waiting on the operator does +not sweep. **The moment he answers, it stops being held**, so a booth's +lifetime is shortest exactly when it has just become valuable: before the answer +it is a question, after the answer it is the RECORD OF A DECISION, and only the +first state is protected. + +`booth-flow-concepts` held the ratified design AND the operator's recorded +answer, with `.forever=NO` and zero open picks — sweep-eligible within minutes +of the ruling. Same shape as round 1, arriving by a different route: +`booth-svos-retheme` lost its hold when design-dev WITHDREW his ask; this one +lost it when the operator ANSWERED. Two different actions, one exposure. + +The durable copy now lives in git rather than in a booth. **This is not a bug +report against U4** — an answered question genuinely is not waiting on anyone — +but it is a real question about whether "held" is the right predicate for a +booth that has become a record. Flow and requirements are design-dev's now, so +it is his to weigh; raised to him rather than patched by us. + +## What the rulings cost the version + +**`v1.0.0b1` promised "feature-complete, no new features, the remaining work is +bugs."** A flow redesign plus compare mode is not that. Three things follow: + +1. **The tag stays exactly as written.** It records what was believed on + 2026-09-22, not a claim about today. Rewriting a released tag to flatter the + present is how a version stops being evidence. +2. **Dropping back to an alpha is NOT available.** `1.0.0a2` sorts BELOW + `1.0.0b1` and versions do not go backwards. The policy's "if you are adding + features to a release candidate, it was never a release candidate" advice has + no legal expression here. +3. **No further pre-release until the arc lands.** Commits accumulate; the next + tag is whatever is honest when there is something to release. + +**Whether `1.0.0` waits for the redesign is the operator's and is NOT YET +MADE.** Our recommendation is that it does: he treats this as one arc (the +standing no-announcements ruling says "until the entire arc is done"), and +cutting the 1.0 milestone on a UI he rejected as "still looks like the booth" +would make the milestone mean something he does not endorse. + +## Compare mode left the parking lot, and the deferral was OURS + +Parked since the v1 gate as "the only new capability rather than a fix for a +measured defect." design-dev argued it belongs in this arc; the operator agreed. +ROADMAP records **that it was his call that moved it**, so nobody re-parks it by +reading the older rule. Practically: the item-record work compare needs is in +scope for us, not deferred, and he tells us what a compare view wants from +`booth_items` rather than working around the current shape. diff --git a/persistent-memory.md b/persistent-memory.md index 624a77a..8ed7c26 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -59,6 +59,22 @@ _As of 2026-09-22:_ ⚠ **Calibration for the next round: his bar is "did anything change when I opened it".** He said the Booth "kind of looks the same" about our own U7 navigation work, before ever seeing the design round. +- ✅ **ALL FOUR FLOW RULINGS ARE IN — A+B, compare THIS ARC, plain voice, no + emblem** (operator via Miranda D-0016, 2026-09-23 08:07). Every one took + design-dev's recommendation; no notes attached. **booth-dev is the SOLE RELAY + — the operator will not brief design-dev directly.** Verbatim copy at + `docs/rulings/2026-09-23-flow-direction.json`. + → `persistent-memory.d/2026-09-23-the-flow-rulings-and-what-they-cost-the-beta.md` +- ⚠ **ANSWERING A PICK REMOVES THE HOLD THAT PROTECTED THE RECORD.** A booth is + held while a question is OPEN; the moment it is answered it becomes the record + of a decision and stops being held. Both design booths hit this, by different + routes (one withdrawn, one answered). **Capture a ruling into git, not into a + booth.** Raised to design-dev as a flow question rather than patched. +- ⚠ **`v1.0.0b1`'s "no new features" PREMISE IS SUPERSEDED.** The arc now + contains a flow redesign and compare mode. The tag stays as written (it + records what was believed, not a claim about now), an alpha drop-back is + ILLEGAL (`1.0.0a2` < `1.0.0b1`), and no further pre-release is cut until the + arc lands. **Whether `1.0.0` waits for the redesign is UNDECIDED and his.** - 🔶 **ROUND 2 IS UP AND FOUR RULINGS ARE WITH THE OPERATOR** — booth `booth-flow-concepts`, ask `flow`: direction / compare / voice / emblem. Three directions (Desk, Reel, Bench), six screens each in dark+light, plus a