Build lane 6: Prep and Planning (PREP-1 to PREP-4) #732

Closed
opened 2026-09-22 00:12:24 +00:00 by claude-bot · 4 comments
Collaborator

Build lane 6 of the v4.5.0 redesign. The brief is docs/design/v4.5.0-brief.md (§9, the lanes in order); the build plan is docs/design/v4.5.0-build-plan.md (the rollout rule, the design-system mapping, the journeys as tests). Umbrella: #366. Goes after lane 5.

Scope

Surfaces: PREP-1 to PREP-4: the prep sheet, the margin's tools, generation history, Planning.
The drawing: /feedback/prototype/lane5 — the page the build must match, still by still.
Decisions: the brief §7, and each surface's header in redesign-surfaces/sources/headers.md.

Server changes it needs (in this lane or an earlier one)

  • the sheet as a kept document with pins as intervals (D39, ShelfPin, #254); the plan as a section (D38); Planning's data (IS-354)
  • the Improv tools' inputs and validation (PR-119, PR-124, PR-131); the article picker (PR-138); Suggest a title (IS-342)

Acceptance

  • Every placement coverage/lane5.py classifies as drawn or replaced is built as the prototype draws it; the script is the checklist. Rows it marks behaviour are tested, not drawn.
  • J3 (a GM preps: notes, the prep sheet, cards on the shelf, open quests) pass on desktop, on a phone and keyboard-only in the journeys suite (#726), with the axe scan clean (WCAG 2.2 AA, #367).
  • The brief's vocabulary (§5) throughout, from vocabulary.js; no page-level error destroys rendered content; every async operation shows progress and a next action on failure; disabled controls say why.
  • Main stays deployable after every PR of the lane: the new shell carries the old pages until each is replaced (the rollout rule).
  • The surfaces' headers in redesign-surfaces/sources/headers.md (Decided lines and the owner's review notes) are honoured; a departure is a decision change on #659 first.

🤖 Generated with Claude Code

**Build lane 6 of the v4.5.0 redesign.** The brief is `docs/design/v4.5.0-brief.md` (§9, the lanes in order); the build plan is `docs/design/v4.5.0-build-plan.md` (the rollout rule, the design-system mapping, the journeys as tests). Umbrella: #366. Goes after lane 5. ## Scope **Surfaces:** PREP-1 to PREP-4: the prep sheet, the margin's tools, generation history, Planning. **The drawing:** `/feedback/prototype/lane5` — the page the build must match, still by still. **Decisions:** the brief §7, and each surface's header in `redesign-surfaces/sources/headers.md`. ## Server changes it needs (in this lane or an earlier one) - the sheet as a kept document with pins as intervals (D39, `ShelfPin`, #254); the plan as a section (D38); Planning's data (`IS-354`) - the Improv tools' inputs and validation (`PR-119`, `PR-124`, `PR-131`); the article picker (`PR-138`); Suggest a title (`IS-342`) ## Acceptance - [ ] Every placement `coverage/lane5.py` classifies as **drawn** or **replaced** is built as the prototype draws it; the script is the checklist. Rows it marks **behaviour** are tested, not drawn. - [ ] J3 (a GM preps: notes, the prep sheet, cards on the shelf, open quests) pass on desktop, on a phone and keyboard-only in the journeys suite (#726), with the axe scan clean (WCAG 2.2 AA, #367). - [ ] The brief's vocabulary (§5) throughout, from `vocabulary.js`; no page-level error destroys rendered content; every async operation shows progress and a next action on failure; disabled controls say why. - [ ] Main stays deployable after every PR of the lane: the new shell carries the old pages until each is replaced (the rollout rule). - [ ] The surfaces' headers in `redesign-surfaces/sources/headers.md` (Decided lines and the owner's review notes) are honoured; a departure is a decision change on #659 first. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Collaborator

Picking this up (2026-09-26), in parallel with lanes 5 and 7, at the owner's request to keep working overnight.

The survey is done: scratchpad/lane6-survey.md. It has 11 owner questions, P1–P11, now on the owner's morning list.

Headline: the prep sheet doesn't exist as data. Today it's one field, sessions.beat_notes, and "What I want" is thrown away after each run. D39's "one pin" clashes with today's pins, which ride every later shelf. Retiring History's keep-pin would delete kept runs, so the sweep has to learn "kept by a sheet".

Server PR 1a is in progress (build/lane6-p1a-sheet, migration e5f7a9b1c3d4): prep_sheets, prep_items, shelf_pins.shelf_start_session_id, and GET/PATCH /sessions/{id}/prep with autosave versioning. It builds the survey's recommendations provisionally:

  • P3(a): a pin rides the later sheets, and the later shelves only from its shelf start.
  • P7(a): the chip reads "GMs only".

The rest of the series, from the survey: 1b (items and the plan), 2 (history and tools), 3 (Planning), 4a–4c (pages), 5 (J3), 6 (the demo seed). No bot contract change.

**Picking this up (2026-09-26), in parallel with lanes 5 and 7, at the owner's request to keep working overnight.** The survey is done: `scratchpad/lane6-survey.md`. It has 11 owner questions, P1–P11, now on the owner's morning list. **Headline:** the prep sheet doesn't exist as data. Today it's one field, `sessions.beat_notes`, and "What I want" is thrown away after each run. D39's "one pin" clashes with today's pins, which ride every later shelf. Retiring History's keep-pin would delete kept runs, so the sweep has to learn "kept by a sheet". **Server PR 1a is in progress** (`build/lane6-p1a-sheet`, migration `e5f7a9b1c3d4`): `prep_sheets`, `prep_items`, `shelf_pins.shelf_start_session_id`, and `GET`/`PATCH /sessions/{id}/prep` with autosave versioning. It builds the survey's recommendations provisionally: - P3(a): a pin rides the later sheets, and the later shelves only from its shelf start. - P7(a): the chip reads "GMs only". **The rest of the series, from the survey:** 1b (items and the plan), 2 (history and tools), 3 (Planning), 4a–4c (pages), 5 (J3), 6 (the demo seed). No bot contract change.
Author
Collaborator

PRs 5 and 6 are built on build/lane6-j3-seed (pushed, f8875f46).

J3, "a GM preps" runs in its own campaign, The Saltglass Survey, 7 serial tests per project:

  • the sheet and autosave;
  • the plan drafted via the fake AI;
  • the tools in the margin and the phone's Tools sheet;
  • a scene, with a card filed into it;
  • carried forward;
  • Planning's Unpin and Undo;
  • History.

It has axe checks throughout. There are new aiRequests()/aiNow() fixtures, and the e2e seed gains seed_prep().

Two consecutive full journeys runs are green: 107 passed and 7 skipped (the journeys' own skips) on each. The full backend suite: 4,800 passed.

The demo seed adds:

  • 6 prep sheets across the states;
  • 14 items;
  • 3 sheet pins: open, riding a shelf, and ended;
  • 11 more History runs, none pending;
  • 6 arcs, one soft-deleted;
  • a scene made for a session.

Bugs found and fixed, each with a failing-first test:

  1. The plan could land after its run already read "ready"; land_plan is now one commit.
  2. A vote's enqueue failure failed the vote; it's now best-effort.
  3. A vote committed after its response.

Bug 3 is systemic, filed as #851 and being fixed on main.

Held with the rest of lane 6 until the owner answers P1–P12. At merge, re-chain onto main's head c4e6a8b0d2f1, and reconcile vote_service with #847/#849/#850/#851.

**PRs 5 and 6 are built** on `build/lane6-j3-seed` (pushed, `f8875f46`). **J3, "a GM preps"** runs in its own campaign, The Saltglass Survey, 7 serial tests per project: - the sheet and autosave; - the plan drafted via the fake AI; - the tools in the margin and the phone's Tools sheet; - a scene, with a card filed into it; - carried forward; - Planning's Unpin and Undo; - History. It has axe checks throughout. There are new `aiRequests()`/`aiNow()` fixtures, and the e2e seed gains `seed_prep()`. **Two consecutive full journeys runs are green:** 107 passed and 7 skipped (the journeys' own skips) on each. The full backend suite: 4,800 passed. **The demo seed adds:** - 6 prep sheets across the states; - 14 items; - 3 sheet pins: open, riding a shelf, and ended; - 11 more History runs, none pending; - 6 arcs, one soft-deleted; - a scene made for a session. **Bugs found and fixed, each with a failing-first test:** 1. The plan could land after its run already read "ready"; `land_plan` is now one commit. 2. A vote's enqueue failure failed the vote; it's now best-effort. 3. A vote committed after its response. Bug 3 is systemic, filed as #851 and being fixed on main. **Held with the rest of lane 6** until the owner answers P1–P12. At merge, re-chain onto main's head `c4e6a8b0d2f1`, and reconcile `vote_service` with #847/#849/#850/#851.
Author
Collaborator

Lane 6 is complete and merged to main (2026-09-26) as #858.

What's in it:

  • Server: prep sheets, items and the plan, History and the tools (including "Suggest the next beat", P5), and Planning.
  • Pages:
    • the prep sheet at /sessions/:id/prep, with the old /planning links redirecting;
    • the tool margin, and the phone's Tools sheet;
    • History and Planning.
  • J3: a GM preps.
  • The demo seed, extended.
  • P12: failed runs that used to be pinned now clear after 30 days, and generation_results.pinned is dropped (migration d6f8b0c2e4a7).

The owner's decisions: P1–P12 are D177, D178 and D182–D191; the departure lists are D214–D216.

Bugs J3 found along the way:

  • the plan landing after its run already read "ready";
  • the vote races, which became #851, fixed app-wide by #854.

I'm leaving this open for the owner's review, as with lanes 1–5.

**Lane 6 is complete and merged to main (2026-09-26) as #858.** **What's in it:** - **Server:** prep sheets, items and the plan, History and the tools (including "Suggest the next beat", P5), and Planning. - **Pages:** - the prep sheet at `/sessions/:id/prep`, with the old `/planning` links redirecting; - the tool margin, and the phone's Tools sheet; - History and Planning. - **J3:** a GM preps. - **The demo seed**, extended. - **P12:** failed runs that used to be pinned now clear after 30 days, and `generation_results.pinned` is dropped (migration `d6f8b0c2e4a7`). **The owner's decisions:** P1–P12 are D177, D178 and D182–D191; the departure lists are D214–D216. **Bugs J3 found along the way:** - the plan landing after its run already read "ready"; - the vote races, which became #851, fixed app-wide by #854. I'm leaving this open for the owner's review, as with lanes 1–5.
Author
Collaborator

Closing with the v4.5.0 milestone (owner, 17 Oct 2026). The owner signed this lane off on 5 Oct, and it shipped in 4.5.0 on 12 Oct; fixes found on prod since went into 4.5.1 to 4.5.3.

Closing with the v4.5.0 milestone (owner, 17 Oct 2026). The owner signed this lane off on 5 Oct, and it shipped in 4.5.0 on 12 Oct; fixes found on prod since went into 4.5.1 to 4.5.3.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/Quest-Board#732
No description provided.