Redesign coverage: lanes 1–4 dropped 208 features and half-drew 146; 11 surfaces have no lane #696
Closed
opened 2026-09-18 18:05:23 +00:00 by claude-bot
·
14 comments
No Branch/Tag specified
main
feat/1328-fill-it-in
feat/1328-fill-frontend
feat/1328-fill-backend
feat/9-foundry-push
fix/9-foundry-live
feat/9-foundry-push-frontend
renovate/celery-5.x
feat/5-foundry-connect
feat/9-foundry-push-backend
feat/9-foundry-push-module
feat/5-foundry-frontend
feat/5-foundry-backend
feat/5-foundry-module
release/v4.8.0-rc1
docs/d341-convert-draft
feat/958-update-to-version
feat/958-convert-sheet
feat/958-pathbuilder-import-frontend
fix/1360-heading-order
feat/958-pathbuilder-import-backend
feat/11-weekly-digest
feat/1341-auto-update
docs/d332-superseded
chore/1345-names-cleanup
feat/1342-mentioned-pages
feat/1328-recipes
fix/1346-pgdg-key
perf/1247-shared-recording-stream
chore/132-gitleaks-allowlist
release/v4.7.1
spike/foundry-module
release/v4.7.1-rc1
docs/decisions-d332-d337
fix/bot-certifi
chore/release-4.7.0
chore/release-4.7.0-rc4
chore/deps-4.7.0
chore/release-4.7.0-rc3
fix/1280-quote-must-say-it
fix/1257-names-row-squeeze
chore/release-4.7.0-rc2
fix/1245-pg-upgrade-count
chore/release-4.7.0-rc1
feat/1257-names-in-prep
feat/1257-be
feat/1257-fe
feat/1257-rating-fixes
design/1328-fill-it-in
feat/1257-name-splits
fix/1326-redis-503
feat/1280-fact-suggestions
feat/1280-be
feat/1280-fe
design/1280-fact-suggestions
feat/1279-infobox
feat/1279-be
feat/1279-fe
feat/1321-shelf-copies
design/1279-infobox
feat/1243-table-find
feat/1257-who-rated
feat/1243-prep-drawer
feat/1243-sheet-pickers
design/1243-browse-in-place
feat/1315-hotwords-default
feat/1242-system-filters
feat/1257-more-name-styles
feat/506-leg3-hotwords
design/1242-system-filters
fix/1302-packs-polish
feat/1241-rules-library
design/1241-rules-library
feat/1245-postgres-18
integ/4.6.2
fix/1263-map-ui-2
fix/1263-map-server
fix/1263-map-ui-1
fix/1261-editor-link-menu
fix/1229-axe-4.14-name-mismatch
renovate/axllent-mailpit-1.x
renovate/eslint-monorepo
renovate/authlib-1.x
chore/release-4.6.0
chore/release-4.6.0-rc2
fix/460-rc2-screens
fix/460-rc2-server
fix/release-prerelease-exit
chore/release-4.6.0-rc1
feat/125-campaign-templates
feat/126-calendar
feat/1181-pictures-and-files
feat/1190-event-people
integ/4.6.0
feat/1191-line-of-the-night
feat/1200-starter-packs
chore/bot-multidict-and-playwright-group
fix/1202-this-week-answered-count
fix/122-124-leftovers
fix/1178-get-routes-that-write
fix/1203-journeys-check-names
design/125-campaign-templates
feat/126-calendar-engine
design/126-in-world-calendar
fix/1189-cited-stamp-in-range
fix/1189-v4-looser-check
fix/1189-richer-beats
fix/1113-export-bind-lists
fix/1154-release-notes-by-file
chore/release-4.5.0
chore/release-4.5.0-rc12
fix/1135-wiki-markup-as-text
fix/demo-usage-cost-in-window
chore/release-4.5.0-rc11
fix/1121-sheet-consistency
fix/1121-sheet-5e-terms-and-card-hp
copy/1122-busiest-pages
fix/1121-relevant-choices
fix/1121-wiki-create-npc-save-sheet-links
fix/1029-menu-stays-on-screen
docs/prototype-transcript-bin-wording
fix/1023-editor-save-row-back-scroll
fix/1020-search-exact-first
fix/1020-table-prep
fix/1020-shell-wordmark-footer-bell
fix/1020-wiki-article-party
fix/872-admin-kept-until-phone-tables
feat/l13-milestone-level-waiting
fix/1000-1001-bell-older-setup-context
fix/999-pronouns-in-prompts
fix/l19-other-class-feats
fix/1010-transcript-window-ordinary-confirm
docs/d254-d269-decisions
fix/702-member-search
fix/680-transcript-bin
fix/993-unidentified-prompts
fix/841-redis-timeouts
fix/990-binned-not-exported
fix/830-export-prep-shelf
fix/deps-audit-2026-10-01
fix/877-title-reads
fix/798-audio-received-at
build/lane11-17-j7
build/lane11-16-levelup
build/lane11-14-seams
build/lane11-14-seed
build/lane11-15-start
build/lane11-13-old-block-out
fix/980-review-r3
build/lane11-12-block
build/lane11-8-packs
fix/demo-seed-canonical-names
build/lane11-11-hot-half
docs/l11-decisions
build/lane11-7-convert
build/lane11-10-editing
fix/npm-audit-brace-expansion
build/lane11-9-sheet-page
fix/bot-pyjwt
build/lane11-6-content
fix/lane11-rank-names
build/lane11-2b-language
build/lane11-4-js-evaluator
build/lane11-3-server
build/lane11-5a-pf2e
build/lane11-5b-5e
feat/design-admin
build/lane11-2-evaluator
build/lane11-1-sheet-pieces
build/lane11-0-drawing
fix/943-quest-objectives-fk
fix/prepsheet-shelf-flake
fix/945-leftovers
build/demo-gm-copy
fix/901-email-landings
build/lane10-8-journeys
build/demo-seed-lanes-8-10
fix/887-gm-own-confirmation
build/lane9-5-j1-admin
fix/918-audience-click
fix/useasync-overtaken
ci/939-critical-path
test/937-backend-suite-speed
chore/claude-orchestration
fix/924-xp-gm-only
fix/session-stale-poll
docs/decisions-d239-d242
fix/930-pypdf
build/lane8-journeys
build/925-quest-editor
fix/894-private-page-pictures
build/lane8-p4-drafts
build/lane8-p7-map
build/lane8-p6-handouts-rules
fix/wiki-fixture-names
build/lane10-d227-test-usage
fix/rsvp-horizon-test-tuesday
fix/media-volume-owner
build/lane8-p3-editor
fix/912-unidentified-rename
build/lane8-p5-party-quests
build/lane8-handout-takeback
build/lane10-pickers
build/lane8-p2-article
build/lane8-6-map
build/lane10-7b-email-pages
build/lane8-5-handouts
build/lane10-7a-test-the-bot-pages
build/lane8-p1-pages
build/lane8-4-quests
build/lane8-2b-feeds
build/lane8-3-parties
build/lane8-2a-links
build/lane10-5-commands
build/lane9-6-seed
build/lane10-4b-reactions
build/lane9-4d-pages
build/lane9-4c-pages
build/lane10-4a-posts
build/lane10-3-email
fix/891-web-fonts
build/lane9-4b-pages
build/lane10-6-test-the-bot
build/lane10-2-notify-out
build/lane8-1-wiki-text
build/lane9-4a-frame
design/lane10-drawings
fix/j6-budget
fix/j5-phone-flake
fix/869-test-leaks
fix/843-record-start-followups
build/lane7-all
build/lane6-all
build/lane9-b2-server
chore/changelog-fragments
docs/decisions-d218
build/lane9-a-owner-overview
fix/rule-card-level-label
fix/834-retention-semantics
fix/o3c-record-without-announcement
docs/decisions-d179
docs/decisions-d131-d170
fix/851-commit-before-response
build/lane6-j3-seed
build/lane9-b1-d67-identity
fix/841-blocking-loop
build/lane9-c-backups-audit
fix/vote-race-and-start-commit
fix/recording-announcement
fix/proposal-read-leak
fix/last-admin-guard
build/lane6-p4c-planning
build/lane6-p4b-margin
build/lane6-p4a-sheet
build/lane5-j4-seed
build/lane6-base
build/lane7-pages-talk
build/lane5-pages
build/lane7-pages-safety
build/lane7-p3-safety
build/lane7-p2-notify
build/lane6-p3-planning
build/lane6-p2-history
build/lane6-p1b-items
build/lane7-p1-threads
build/lane5-p6-faces
build/lane6-p1a-sheet
build/lane5-p5-find
build/lane5-p4a-board
build/lane5-p4b-scenes
build/lane5-p3-live
build/lane5-base
build/lane5-p2-cards
docs/lane5-decisions
build/review-r2-wide
fix/review-r1
build/lane5-p1-scenes
build/demo-seed
build/lane4-journeys-j5
build/lane4-page-review-b
build/lane4-page-review-a
build/lane4-page-read
build/lane4-journeys
build/lane4-page-sess2
build/lane4-page-sess1
build/lane4-notes
build/lane4-discord-on-approval
build/lane4-scheduling
build/lane4-versions
build/760-session-number
build/lane4-decisions
build/797-erase-no-regenerate
build/test-race-audit
build/lane3-completions
build/794-dark-only
build/796-titles-scroll
build/791-retention-anchor
build/a11y-sweep
build/shell-followups
build/retention-preview
build/753-backup-readback
docs/d91-d93
build/lane3-j1
build/ci-harness-paths-selftest
fix/useauth-test-race
build/ci-harness-paths
build/777-ai-settings-read
build/lane3-settings-c
build/lane3-settings-b
build/lane3-j6
build/lane3-sessionform
build/lane3-settings-a
build/lane3-members
build/lane3-thisweek
build/lane3-story
chore/87-align-python-3.12
v4.8.0-rc1
v4.7.1
v4.7.1-rc1
v4.7.0
v4.7.0-rc4
v4.7.0-rc3
v4.7.0-rc2
v4.7.0-rc1
v4.6.2
v4.6.2-rc4
v4.6.2-rc3
v4.6.2-rc2
v4.6.2-rc1
v4.6.1
v4.6.1-rc1
v4.6.0
v4.6.0-rc2
v4.6.0-rc1
v4.5.3
v4.5.3-rc1
v4.5.2
v4.5.2-rc1
v4.5.1
v4.5.1-rc2
v4.5.1-rc1
v4.5.0
v4.5.0-rc12
v4.5.0-rc11
v4.5.0-rc10
v4.5.0-rc9
v4.5.0-rc8
v4.5.0-rc7
v4.5.0-rc6
v4.5.0-rc5
v4.5.0-rc4
v4.5.0-rc3
v4.5.0-rc2
v4.5.0-rc1
v4.4.1
v4.4.0
v4.3.0
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.2
v4.1.1
v4.1.0
v4.0.1
v4.0.0
v3.11.4
v3.11.3
v3.11.2
v3.11.1
v3.11.0
v3.10.0
v3.9.1
v3.9.0
v3.8.0
v3.7.0
v3.6.1
v3.6.0
v3.5.0
v3.4.1
v3.4.0
v3.3.0
v3.2.0
v3.1.0
v3.0.0
v2.1.0
v2.0.0
v1.1.0
v1.0.0
v0.12.0
v0.11.0
v0.10.0
v0.9.1
v0.3.3
v0.9.0
v0.8.0
v0.3.2
v0.3.1
v0.3.0
v0.7.0
v0.6.0
v0.5.0
v0.4.0
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Labels
Clear labels
backend
Issue related to the backend
bot
Issue related to the bot
bug
Something is not working
duplicate
This issue or pull request already exists
enhancement
New feature
frontend
Issue related to the frontend
help wanted
Need some help
invalid
Something is wrong
question
More information is needed
recording
Issue related to the recording system
security
Security hardening / vulnerability work
wontfix
This won't be fixed
No labels
backend
bot
bug
duplicate
enhancement
frontend
help wanted
invalid
question
recording
security
wontfix
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
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#696
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #659. Lane 5's review found that its first draw had silently dropped 68 of 211 placements (fixed in #695). The owner asked for the same check on lanes 1–4.
Method
For each surface a lane claims, every catalogue placement (built, planned, and "also shown here") was classified against the lane page's source:
Every drawn call had to quote the page. A completeness assertion confirmed no placement was skipped. Five audits ran in parallel. Random samples of their MISSING and drawn calls were checked by hand and held up. A few calls were wrong and are corrected below.
Results: 748 placements
Overall: 249 drawn, 32 replaced, 33 behaviour, 63 elsewhere, 17 deferred.
Corrections to the automated findings:
Where the gaps are
Surfaces no lane owns
11 surfaces, about 150 features:
The #659 plan said "shell and Home first", but Home was never drawn.
From now on
Every lane runs this row-by-row check before its PR (see #695). The per-group results (JSON and summaries) will be committed alongside the first backfill.
Owner decisions, 2026-09-18:
Order:
Each backfill gets its own PR, review, and a coverage section on its page.
Settings for players: a member reads the campaign's name, system and description on This week (CAMP-1), not in Settings. Settings stays GM-only in the Contents, as lane 2 drew it. This will be recorded as D45, and drawn in the lane 2 backfill.
Step 1 of the plan is done: every surface now belongs to a lane and is drawn.
Both ran the row-by-row check before their PRs.
A shared fix from lane 1b: the kit had no style for a disabled button. That is fixed, and five buttons in lanes 2–4 that were already marked disabled now look it.
Next is step 2: backfill lane 3 (83 missing, 55 partial) and lane 4 (76 missing, 18 partial). Lane 4 also has a drawing fault: Start recording is still clickable while another session is recording.
The owner's review of lanes 1b and 2c is applied and deployed (PR #699, merged as
21cbe28).What changed:
Coverage after the review: lane 1b has 113 placements and lane 2c 106, none missing. The review added IS-372 to IS-377.
The plan is unchanged. Next is step 2: backfill lane 3 (83 missing, 55 partial) and lane 4 (76 missing, 18 partial).
Step 2, part 1: the lane 3 backfill is merged and deployed (PR #700,
cefca32).IS-379.docs/design/redesign-surfaces/coverage/, alongsidelane3.py. That script reruns lane 3's check against the current catalogue.Next is lane 4, the Table mode surfaces: 76 missing and 18 half-drawn, plus the Start-recording drawing fault.
Step 2 is done: lanes 3 and 4 are fully backfilled and deployed. The lane 4 backfill is PR #701 (
d044793).Lane 4 decisions (the owner took the recommendation each time):
IS-380).IS-381).Coverage: 203 placements, none missing (144 drawn, 12 replaced, 15 behaviour, 23 elsewhere, 9 deferred). Before the backfill, 76 were missing and 18 half-drawn.
Drawing fault fixed: Start recording is now disabled while the bot is recording another session.
The coverage scripts are paying off:
IS-381also lands on SESS-7, and rerunningcoverage/lane3.pyflagged it straight away. It is now classified in that script.Next is step 3: backfill lane 2 (34 missing, 30 partial), the settings lanes 2/2b (8 missing, 38 partial) and the shell (7 missing, 5 partial). This includes drawing D45: the campaign's name, system and description on This week.
Step 3, part 1: the lane 2 backfill is merged (PR #703,
3c5d7b6). It is not deployed yet. See the note at the end.Decisions (the owner took one recommendation and chose the other option):
IS-382, filed as #702.IS-383).Coverage:
coverage/lane2.pyclassifies 117 placements on CAMP-1, 2, 3 and 8, and none are missing:Before the backfill, 34 were missing and 30 half-drawn.
lane3.pyandlane4.pystill pass against the rebuilt catalogue.Faults found:
Lane 2's erase button now uses the destructive style that lane 2b introduced.
Deploy blocked: ai-dev-server's root disk is full (240G of 250G, 0 available).
No space left on device./home/claude/projects/qb-feedback's tracked files empty..envis intact, and the running container still serves the pre-lane-2 build from its image. Don't rundocker compose up --buildin that folder until it's restored, or it would build from empty files./home/claude/backups/qb-feedback-data-20260919T051144Z.tgz.Next: lane 2b (settings: 8 missing, 38 partial), then the shell.
Lane 2 is now deployed. The owner freed the disk (now 53% used, 114G free).
/feedback/prototype/lane2serves the backfill./home/claude/backups/qb-feedback-data-20260919T175503Z.tgz.Step 3 is done: the campaign core, Settings and the shell are backfilled, merged and deployed.
b05cdb8)5eb5eb7)Every lane drawn so far now has a committed coverage script under
docs/design/redesign-surfaces/coverage/:lane1.py,lane2.py,lane2b.py,lane3.pyandlane4.py. All five pass against the current catalogue.First-draw faults the backfills fixed:
Step 4, lane 6, is next. It is the largest lane: 21 surfaces and about 400 rows (the wiki, Table rules & safety, the discussions board and thread, and the session Talk tab). It will be drawn in parts, each with its own PR. The owner has already settled four questions:
Step 4, part 1: lane 6a (talking) is merged and deployed. PR #706, merged as
39cf687. Review it at/feedback/prototype/lane6.What it draws:
shared/talk.jsso lanes 6b to 6d reuse it. It has five audiences from #593's model: everyone at the table, the party, just you and the GM, chosen people, and GMs only.Decisions:
IS-145).Coverage:
coverage/lane6.pyfinds 40 placements and none missing: 38 drawn and 2 replaced. The two replaced are #593's old rumour post, superseded by the Rumour thread type. All six coverage scripts pass against the rebuilt catalogue.Deploy:
/home/claude/backups/qb-feedback-data-20260919T195452Z.tgzand still holds all 6 responses.Next is lane 6b, reading the wiki: WIKI-1, 2, 3, 5, 6, 17 and 18, about 184 placements. Lane 6c is writing (WIKI-7 to 10 and 16). Lane 6d covers the party, quests, map, handouts and rules (WIKI-11 to 15).
Step 4, part 2: lane 6b (reading the wiki) is merged and deployed. PR #707, merged as
71d96bd. Review it at/feedback/prototype/lane6b.What it draws: the wiki as a reader meets it. That is the front page and search (WIKI-1), a group (WIKI-2), an article (WIKI-3) and its History (WIKI-5), the GM's More menu (WIKI-6), Recent changes (WIKI-17), and Deleted articles (WIKI-18). The server has always kept deleted pages, but nobody could see them before now.
One question for the owner: who sees History. The page shows my recommendation: anyone who can edit a page sees its History, with each version filtered the same way the page is, so no GM block shows through an old version. The alternative is today's rule, where only the GM and a character's own player can see it.
Correction. I first presented "GM notes and private notes become blocks" as a new choice. It isn't: #593 already plans it, in
IS-028andIS-127. It is now recorded as settled on WIKI-3.Decided while drawing:
Shared renderer changes:
IS-235).Coverage:
coverage/lane6b.pychecks 184 placements, none missing:Deploy: the feedback volume was backed up first to
qb-feedback-data-20260919T202830Z.tgz. It still holds 6 responses, and the container is healthy.Next is lane 6c, writing the wiki, which is already drawn on a branch. It covers the editor (D58), a new page, drafts, Suggested wiki updates and Wiki health. Its coverage check finds 186 placements, none missing.
Lane 6c is merged and deployed: PR #708, merge
ee6df4d. It draws writing the wiki (WIKI-7 to WIKI-10 and WIKI-16).Review it at https://questboard-dev.rhoving.com/feedback/prototype/lane6c.
Its coverage check has 186 placements and none are missing:
Decided while drawing, and open to reversal. The page's "Settled, and still open" section lists these:
:::for Ossian Valeand names characters, so it follows the character to whoever plays them;Next is lane 6d: the map, the party, quests, handouts and the rules (WIKI-11 to WIKI-15). It is drawn and is in its render check now.
Step 4 is done. Lane 6d is merged and deployed, which completes lane 6.
Lane 6d is PR #709, merged as
f5edf88. It draws the map, the party, quests, handouts and the rules (WIKI-11 to WIKI-15).Review it at https://questboard-dev.rhoving.com/feedback/prototype/lane6d.
Coverage: 112 placements, none missing.
IS-189, "Ask the rules")All nine coverage scripts pass against the rebuilt catalogue.
Decided while drawing, and open to reversal. These are listed on the page, and in
headers.mdagainst each surface:Lane 6 as a whole: 522 placements across 21 surfaces, in four parts:
The owner question from 6b is still open: who sees an article's History (WIKI-5).
A gap this audit missed: the ten public pages (PUB-1 to PUB-10) have never been drawn.
Next is lane 7, Admin: 14 surfaces and 179 placements. It is drawn in draft and in its render check.
The gap this issue's audit missed is closed: the ten public pages are drawn.
Lane 1c (PR #712,
df11b84) covers PUB-1 to PUB-10 — 98 placements, none missing — at https://questboard-dev.rhoving.com/feedback/prototype/lane1c.Why they were missed. #659 scoped them to lane 1 ("shell, Home, public pages"); lane 1 drew only the shell, and this issue's sweep of surfaces nobody owned listed HOME-1–7, CAMP-4–7 and SH-7, but not PUB. Found while drawing lane 7.
This issue's plan is now finished. Every step is done, and lanes 7 and 8 have landed since:
What the row-by-row checks now cover: twelve scripts under
docs/design/redesign-surfaces/coverage/, one per lane, all passing against the rebuilt catalogue. Between them they classify every placement on all 103 surfaces, so a feature dropped in a later edit fails a check rather than going unnoticed — which is what this issue asked for.The open questions and the proposals made while drawing are gathered in one place on #659.
Closing. The plan in this issue is finished: every step is done (see the comment of 19 Sep), and lanes 7, 8 and 1c have landed since.