🔎 2026-08-31 corpus triage — 25 verdicts and the owner-decision sheet

The 2026-08-25 recapture raised 25 findings. One of them, TOUR-25, closed on 2026-08-27. The other 24 had never been re-measured, and finding 24 combined two unrelated concerns under one id, so this page carries 25 verdicts: TOUR-01 through TOUR-23, then TOUR-24a for the empty player card and TOUR-24b for the pre-hydration theme.

Two things happen here and nowhere else. The first is a verdict per finding, measured on the live bench before any file changed, so a row that no longer reproduces closes on its own measurement instead of being quietly dropped. The second is the single batched sheet: every finding that turned out to be a design call, and every ledger row that only the owner can move, each with a recommendation and a cost. A recommendation on this page is a recommendation. Nothing in the sheet was implemented, and a sheet row is never converted into a fix without explicit approval plus a measured justification recorded here.

The bench is releaseEligible: false. Nothing on this page is released or shipped in the release sense; shipped below means installed on the bench, with each row stating whether its acceptance was browser-proved, source-proved, or still fixture-limited.

Evidence basis and its limits

Source citations are relative to wp/wp-content/plugins/quizwizz/ unless another root is named, and every one was read from installed bench source on 2026-08-31, not from a changelog or a prior page.

Four read-only truth rounds produced the verdicts, and they are cited by tag rather than by link because they are session artifacts rather than vault pages:

  • W1-A — findings 1 to 8, cache-disabled Chromium, authenticated administrator.
  • W1-B — findings 9 to 16, live public responses and read-only WP-CLI, with browser measurement specifications executed centrally.
  • W1-C — findings 17 to 24, source and shell, reporting TOUR-24a and TOUR-24b as two separate verdicts.
  • W1-D — the stale-claim round: the repeated-label counts, the unnamed-submit claim, the leftover verification account, the OpenRouter key, and the walk-event store.
  • W4 — an adversarial designer pass over four captures taken after the repair waves were green. Its verdict was SHIP with zero visually proven regressions, one unproven-causation risk and four design-class rows. Two of its four assets were delivered too downscaled to decide anything and it reported that as an evidence gap rather than as a pass, which is why the settings surfaces below carry no designer verdict.

Where a claim is browser-authoritative it says which viewport decided it. Where a claim could only be established from source it says so, and it is not dressed up as a rendered observation. Gates behind the dispositions, all measured after TOUR-23’s replacement commit and after the catalog install: --wave all reports 1..93, assertions=93 failures=0 across waves 1 to 11, where wave 11 is the corpus-repair wave this drive added and reports 1..17 on its own; wave 6 stays 1..14 failures=0; wave 9’s canonical subject-tree digest stays 1..17 failures=0; and the browser smoke is 37 of 37 with settings and editor restoration green and zero console or page errors. An earlier 1..93 in this drive counted a wave-11 assertion that TOUR-23’s correction retired, so the figure above is the re-run, not that one.

Grounding corrections carried on the record

Each of these contradicts something a prior page or ledger row asserted. They are corrections, not implementations, and the open work ledger carries the full set into the ledger rows themselves.

  • Aus Ă—3 is refuted. The generic hidden-state control is emitted nine times from one Off button at includes/Admin/views/settings-page.php:44. W1-D measured twelve controls whose accessible name or visible label was the bare Aus, of which ten were accessible names, once the final-cue, question-numbering and answer-marker none radios are counted. Three was never the number.
  • Start: aus Ă—4 is a live-resolved figure, not a source constant. W1-D read the resolved exposure matrix and found key, foot, fill and logo off with editor on, and the live translations are Start: aus and Start: an. There is no Beginnt aus string on this bench.
  • The unnamed Data submit does not exist. All 22 rendered submits in the Data section carry a non-empty visible value or an explicit accessible name, ten of them being the settings-backup restore and delete pairs. The claim is retracted, not deferred.
  • 3.2.1 said ten … site ceiling labels; source emitted eight plus one shared help sentence, four of the eight generated from a single %s completion action site ceiling format string.
  • TOUR-17’s “no accessible text” wording was wrong in the other direction. All four portability controls already had aria-label values. What was missing was visible text beside the icon.
  • TOUR-10’s mobile breakpoint is 620px, not 390px, and its three sub-defects share no selector, so they were independently owned and independently proved.
  • TOUR-23’s cited anchor was stale and its first repair was the wrong change. The operative refusal is not the line the finding cited, and commit 8494823 temporarily installed an unrelated contract before review rejected and superseded it. Details in the row below.
  • qwverify-20260729 no longer exists. wp user get qwverify-20260729 exited 1 with Error: Invalid user ID, email or login. The unverified residue row inherited from the retired backlog page is now answered.
  • No walk-event store exists on disk. See the blocked-artifact section.

Triage — 25 verdicts

idclassverdict, 2026-08-31deciding evidencedisposition
TOUR-01defectreproduced at 1280×1000 DPR2document width 1487px inside a 1280px viewport; 20 of 20 source badges overlapped the Updated column; rule anchor includes/Admin/ListTables.php:329 at measurement time — W1-Ashipped, admin-lists slice. Column sizing is emitted at includes/Admin/ListTables.php:363; after install the browser measured 20 of 20 badges clear and document width 1265, inside 1280
TOUR-02defectreproduced at 1600×1000 DPR2the empty-state block existed inside .tablenav.top and overlapped thead; anchors includes/Admin/ListTables.php:35-38, :315-323 — W1-Ashipped, admin-lists slice. The block is staged into tbody through the hook registered at includes/Admin/ListTables.php:38; after install the empty card rendered in tbody and was absent from the top tablenav
TOUR-03designreproduced as a missing control, not as a broken pillreadiness and pool values render in active pills that no filter control can set. ListTables::views() builds the pills at includes/Admin/ListTables.php:285-298 with the value labels at :296-297, the qw_pool predicate is at :251, and filters() at :137-170 emits five self::select() calls — languages, subjects, difficulty, type, source — and no readiness or pool control — W1-A, plus installed source read this sessionowner-decision, Sheet A. Never eligible for reclassification as a defect
TOUR-04defectreproduced at 1600×1000 DPR2label and helper shared one visual run with no independent block gap; includes/Admin/views/quiz-editor.php:9-21 — W1-Ashipped, editor slice. After install the browser measured a 5px gap with distinct styling, and W4 independently found every label on its own line with a measured gap above its helper on the question-editor capture
TOUR-05defectreproduced at 1600×1000 DPR2four choice flags existed and exactly one was visible at rest; includes/Admin/views/question-choice-row.php:2-3 with assets/css/qwizz-admin-editor.css:61-62 — W1-Ashipped, editor slice. After install 4 of 4 were visible against a baseline of 1 of 4; W4 confirmed four rest-state Richtig labels with the selected row emphasised by its radio rather than by being the only visible flag
TOUR-06defectreproduced at 1600×1000 DPR2the selected type was multiple while the helper read the Boolean sentence Wahr-/Falsch-Fragen enthalten immer genau zwei Antwortmöglichkeiten.; includes/Admin/views/question-editor.php:8 — W1-Ashipped, editor slice: question-editor.php:8 now emits one data-question-type-help span per type with the inactive one hidden, and a live switch to Boolean showed only the Boolean helper and reduced the choice set to two. Its new msgid initially had no translation and leaked English into German UI; that is now closed, recorded below
TOUR-07premise not reproduced; the source debt behind it was realnot reproduced at 1600×1000 or at 390×8440 of 9 anchor headings were occluded, with clearance measured at 40.67px to 434.58px on desktop and 38.67px to 91.11px on mobile — W1-Aclosed as not reproduced at 1600×1000 and 390×844 on 2026-08-31. Its assertion was dropped rather than kept as a tautology. The four competing offset literals were consolidated anyway: --qw-settings-shelf-clearance: 172px and --qw-settings-scroll-offset are declared once at assets/css/qwizz-admin-settings-workspace.css:20-21, consumed at :139, :442 and assets/css/qwizz-admin-settings-layout.css:1003, with the two-row mobile variant at :524-526; the 154px, 146px and 132px values now survive only inside the explanatory comment at :7-13
TOUR-08defectreproduced at 390×844 DPR2the query language returned 26 results, all 26 of them German ABSCHNITTSÜBEREINSTIMMUNG section-match rows; assets/js/qwizz-admin-settings.js:951-978, :1081-1123 — W1-Ashipped, settings-JS slice. After install the same query returned 26 direct hits reduced to a single section match
TOUR-09designreproduced in source; live paint undecidedfive rest-state card spans compute a 1px top border, three in the prepend fieldset and two in the print fieldset, and both fieldsets use the rule deliberately. The rule is the 3.2.7 contract at assets/css/qwizz-admin-settings-layout.css:243-305, with the bordered span at :278-291 and its two co-tenant slots at :219 and :233 — W1-B, plus installed source read this sessionowner-decision, Sheet A. Recommendation is to close it as superseded: a quieter treatment reverses the 2026-08-30 choice-card fix and invalidates its wave-6 assertions
TOUR-10defect, three independent sub-defectsreproduced in source at 390×844 and 600×844the settings anchor strip overflowed its own client width; the question index was hidden below 520px at assets/css/qwizz-admin-editor.css:8; the subjects count column was hidden below 620px at assets/css/qwizz-admin-subjects.css:171-175 — W1-Bshipped across the CSS and editor slices, and the count half was satisfied by a better mechanism than the plan predicted. Nav: after install 9 of 9 anchors were visible at 390px with width 343px equal to scrollWidth. Index: the ≤520px grid at assets/css/qwizz-admin-editor.css:8 and :16 retains a 22px index column. Count: instead of re-showing .column-posts, the admin-lists slice added a real qw_usable_count column at includes/Subject/SubjectSupplyFilter.php:25-26, :212-218 with its renderer at :254-258, relabelled the core column Published items for what it actually counts at includes/Subject/SubjectAdminUi.php:65-74, and assets/css/qwizz-admin-subjects.css:345-368 force-keeps that cell and its pseudo-label visible at narrow widths while :171-174 deliberately keeps description, slug and the core relationship total hidden
TOUR-11defectreproduced from live data and sourcethe ideas formatter carried the literal %2$s usable questions with no _n(), and the live payload held a one-question subject, abolition-and-emancipation, beside a two-question subject, ancient-writing — W1-Bshipped, admin-lists slice. _n() now wraps both idea sentences at includes/Admin/DashboardPresenter.php:69-72 and :94-97, and the supply notice at includes/Subject/SubjectSupplyFilter.php:159-162
TOUR-12defectreproduced from authoritative live datathreshold 10, tech-algorithms usable 4, native Posts 7: the filter included the row because 4 is under 10, while the table could display 7 to the same operator; includes/Admin/AdminStatistics.php:230-240 — W1-Bshipped, admin-lists slice. The core column is now named Published items and documented as a term-relationship total rather than a usable count at includes/Subject/SubjectAdminUi.php:54-74, and the usable authority has its own column at includes/Subject/SubjectSupplyFilter.php:212-218
TOUR-13design, theme-ownedreproduced in the live public response/?qw_subject=science-computers served exactly one no-results paragraph, Es wurde leider nichts gefunden. Bitte versuche eine Suche mit anderen Suchbegriffen., under the current title Thema: Computers; wp/wp-content/themes/twentytwentyfive/templates/archive.html:1-11 with the fallback at patterns/template-query-loop.php:29-33 — W1-Bsite-content row, Sheet A. Not a plugin change. The corpus bench theme is deliberately not overridden, the same reasoning that keeps TNDM-15 as-is
TOUR-14design, theme-ownedreproduced in the live public response/?s=quiz rendered 8 .wp-block-post-content elements, exposed a raw foreign [ays_quiz] shortcode owned by another plugin in p=2055, and embedded both a live .qwizz-player and #qwizz-builder into the results list; templates/search.html:1-12 with patterns/template-query-loop.php:17-25 — W1-Bsite-content row, Sheet A
TOUR-15defect for the misspelling; design for the canonical namereproduced in sourcetwo Wizzard template literals, plus two PO and two POT entries across the whole plugin — W1-Bmisspelling shipped, settings-markup slice: Wizzard no longer occurs anywhere under includes/, assets/ or the installed catalogs, and the replacement is marked provisional pending the naming decision. Canonical name goes to Sheet A. Catalog state recorded below
TOUR-16defectreproduced, browser-confirmedthe safe state painted red and carried no state attribute, because a single unconditional border: 1px solid var(--qw-bad) sat at assets/css/qwizz-admin-settings-core.css:1676-1682 — W1-Bshipped, settings-markup and CSS slices. includes/Admin/views/settings-page.php:888 emits data-qw-danger="off" when Keep-on-uninstall is on and "on" when it is off; after install the browser saw a neutral safe border, a red destructive border, and the attribute toggling off to on and back. No control’s data-path changed
TOUR-17defect, with the finding’s wording correctedreproduced in sourceall four portability controls rendered an icon with an aria-label and no visible text, and the Download and Cancel pair started hidden; includes/Admin/views/settings-page.php:880-891 at measurement time — W1-Cshipped, settings-markup slice. Visible labels now sit beside the icons at includes/Admin/views/settings-page.php:900 for Create export, :902 for Import JSON, :908 for Download and :909 for Cancel job, with every pre-existing aria-label preserved verbatim
TOUR-18defectreproduced, browser-confirmedthe remove action already carried its danger class, but every action computed var(--qw-muted) at rest and var(--qw-bad) was reachable only on hover or focus — W1-Cshipped, editor slice. After install the browser measured remove red against edit grey, where both were grey at baseline, and W4 independently found the trash icon to be the only red hue on the row. The shell class check was already green before the fix, so the computed paint carried the whole proof
TOUR-19defectreproduced in source; live paint not decidedenabled fine-tune tool buttons had rest opacity 0, reached 1 only on hover or focus-within, and used .25 when disabled; assets/css/qwizz-finetune.css:527-570 — W1-Cshipped in source, editor slice, and not browser-proved: no live fine-tune fixture existed to open. Rest opacity is now 1 at assets/css/qwizz-finetune.css:546-559, the deliberate absence of a reveal rule is documented at :566-567, .25 survives only for :disabled at :574-577 and :523-525, and rest emphasis moved to the hover colour and border shift at :569-572. W4 saw no faded enabled action, but on the question-editor surface, which is adjacent to this modal rather than the modal itself
TOUR-20defectnot reproducible on current contentthe protected-quiz inventory returned 0 rows and wp post get 10983, the historical host post, returned Could not find the post with ID 10983 — W1-Csource-grounded and live-unproved, deliberately. The CTA chrome is present at assets/css/qwizz-empty.css:18 with inline-flex, min-height: 44px, padding: 0 18px, border-radius: 10px and background: var(--qw-action-bg, currentColor), and the emitter is includes/Frontend/QuizEmbed.php:56-61. No locked-quiz fixture exists, so no live claim is made and its assertion was dropped for the same reason. The row stays open on the fixture, not on the rule
TOUR-21deferred — corpus replacement inboundmixedthe named residue term still exists: term 429, QW SVG Probe 4lHqFtjO, slug qw-svg-probe-4lhqftjo, count 0. The zero-question draft half closed on 2026-08-27 — W1-Cdeferred with the corpus reason. Also the source of the only baseline gate anomaly in this drive: wave 8 printed # zero-question control quiz 0 status missing and failed 1 of 4, because the wave’s control is the newest-modified zero-question quiz. A probe-only zero-question draft was restored as the control and wave 8 re-ran 1..4, failures=0
TOUR-22deferred — corpus replacement inboundreproduced in live taxonomy dataliterature-and-arts at count 2 beside literature-arts at count 0, and people-and-society at count 3 beside people-society at count 0 — W1-Cdeferred with the corpus reason. Taxonomy content, not located in plugin source, and nothing in this drive depends on it
TOUR-23defectreproduced in sourcethe plugin injected one PanelBody titled Advanced beside WordPress core’s own Erweitert, and with iface_lang=en the script-translation lookup at includes/UiLanguage.php:111-125 returns false, so plugin English coexisted with core German — W1-Cshipped, block-editor slice, at the second attempt. Commit 8494823 is a superseded wrong implementation, not an accepted fix: it temporarily installed the read-only data-qwizz-source and data-qwizz-source-value block chrome at assets/js/qwizz-block-editor-enhance.js:135-140 and :178-183, left the injected panel standing, and took its wave-11 assertion with it when review rejected it. Commit 33989f9 is the accepted fix: the injected panel is gone and its five control groups were merged into the existing Builder profile panel. Proved three ways — corrected wave 11 1..17 green; a mutation pair from the pre-slice mirror sha red at the duplicate-Advanced assertion alone and green on restore; and a browser measurement on a transient draft with the craft block selected through the list view, which found exactly one core German Erweitert button, zero injected Advanced buttons, and all five groups inside Builder-Profil. The fixture was deleted afterwards. WordPress core UI was not translated
TOUR-24adesignreproduced and measuredon the 1024×640 player capture, which is 0.64 linear against a 1600×1000 viewport, the last content pixel row is y=328 and rows y329 to y639 hold zero non-background pixels. That is 311 of 640 image rows empty, 48.6% of the viewport; against the area below the admin bar, 619 rows, content occupies 308px and 311px is empty, so 50.2%. In CSS pixels, 486 empty of 1000. The 2026-08-25 finding recorded 45 to 55 per cent, so the repair waves neither improved nor worsened it — W4owner-decision, Sheet A with the measured recommendation in Sheet G. Never eligible for reclassification as a defect
TOUR-24bdefectsource verdict yes; the dark paint itself not reproduciblethe pre-hydration attribute array carried no data-theme and the player script assigned root.dataset.theme only after start data arrived at assets/js/qwizz-player.js:372-385. The active theme_default is site and the published-quiz meta inventory held 0 dark rows, so there was no dark route to photograph — W1-Cshipped, frontend slice. The shell now carries the attribute at includes/Frontend/QuizEmbed.php:49 and deliberately drops it rather than emitting it blank for the inheriting site value at :51-55; raw pre-hydration HTML for a live quiz carried data-theme="love". The dark-first-paint case stays unproved for want of a dark quiz, and W4 recorded that a still frame cannot decide a time-domain contract at all

Fifteen rows shipped and met their accepted bench proofs, and TOUR-23 needed a rejected first attempt before the accepted 33989f9 fix. TOUR-07 alone closed on its own measurement without a fix. TOUR-19 and TOUR-20 both received source fixes, but their rendered acceptance remains open because the fine-tune and locked-quiz fixtures do not exist; absence of a fixture is a proof limit, not a closure. Five rows went to the sheet as design calls — TOUR-03, TOUR-09, TOUR-13, TOUR-14 and TOUR-24a — joined there by TOUR-15’s canonical-name half, whose literal misspelling half shipped. TOUR-21 and TOUR-22 are deferred behind the incoming corpus.

FL-001 and FL-003

Neither is a corpus finding. FL-001 is answered by refutation and received no fix; FL-003 remains an owner decision because observation cannot settle intent.

FL-001 — refuted, not shipped. The row alleged an incomplete modal inert boundary in the subjects icon picker. The assigned script has no HTTP or Promise request path at all: its focus handling is requestAnimationFrame deferral. Opening and closing the picker inside one frame kept focus on the trigger and hid the panel, which is the correct outcome, so there is no request path along which the alleged boundary could leak. The guard drafted against it changed a source marker and no observable behaviour, and the assertion written to defend it was tautological and was removed rather than kept green. The row closed as not reproduced with a false source premise; Gitea #3 is closed on that disposition. Nothing was installed for it.

FL-003 — not live-probed, and the reason is structural. The row asks whether unordered provider routing for signed-in traffic is intended. Observed behaviour cannot answer it: guest routing builds a deterministic single-item order with fallbacks refused, signed-in routing sends no order at all, and both are consistent with either intent. A live probe cannot be run on this bench either, because there is no API key to run it with. W1-D established that the key lookup reads only an environment variable and then the OPENROUTER_API_KEY constant, that the bootstrapped probe returned env_getenv:FALSE and const_defined:NO, that the running container agreed, and that no OPENROUTER entry exists in the WordPress config, the environment file or the compose file — all name-only checks, with no key material printed. A probe would additionally need configuration changes and would write audit rows. FL-003 therefore stays owner-decidable and sits in Sheet B, with the absent key recorded as the reason it was not probed rather than as an oversight.

Post-push issue readback from Gitea loca/quizwizz on 2026-08-31: #1, #3, #4, #7 and #8 were closed; #2 remained open with the corpus deferral; #5 remained open for the owner decision above. Issue #6 had already closed on the 2026-08-30 choice-card repair.

Blocked on an absent artifact — 3.2.5 and EvidenceReconciliation

3.2.5 WalkNotesToWiki asks for the surviving issues of the 2026-08-17 walk to be distilled here and the retracted ones dropped. The rule applied was simple: distil only if the store exists.

It does not. W1-D searched the vault, the evidence tree, the scripts tree and the logs for walk artifacts and for the event identifiers 87 to 94, and found only the abstract assertion in the ledger row itself, plus unrelated prose. The only capture logs on disk are the 2026-08-20 and 2026-08-25 UI-tour captures, which are not a 94-event append-only walk ledger. A store cannot be inferred from a ledger row that describes it.

So 3.2.5 is recorded blocked on producing the store, and EvidenceReconciliation stays blocked behind it. Neither is closed on an inferred input, and no walk content is paraphrased here. The three retractions the row already names — the missing default PDF theme, the eleven unlabelled number inputs, and the inert settings tabs — remain visible where they were recorded and are not restated as findings.

Catalog refresh: source and catalogs now agree

Two rows repaired their source and, for part of this drive, left the installed translation catalogs behind. That gap is now closed, and it is recorded here rather than buried in either row because the intermediate state was real, was measured, and was what the designer pass photographed.

What the gap was. Wizzard left executable source while the retired msgids stayed in the installed catalogs, and the eight retired … site ceiling msgids were stale the same way. TOUR-06’s new multiple-choice helper msgid was absent from the POT, the PO and the compiled MO, so the only thing it could render was English — which is exactly what W4 saw on the question editor: one English helper sentence inside an otherwise German surface. Its Boolean sibling was translated all along, which is why one of the two leaked and the other did not.

What is true now, measured from the installed catalogs after the install landed at 05:45 and closed in pushed mirror commit f79feb6 on 2026-08-31:

  • languages/quizwizz-de_DE.mo is 149,895 bytes holding 1,656 records including its header; all 1,655 message entries are translated, with zero untranslated and zero fuzzy.
  • TOUR-06’s helper msgid resolves to Multiple Choice behält zwei bis acht Antwortmöglichkeiten, von denen genau eine als richtig markiert ist., and its Boolean sibling still resolves. The source entry is at languages/quizwizz-de_DE.po:7347-7348 and the template entry at languages/quizwizz.pot:2585.
  • No msgid containing Wizzard or site ceiling survives in the MO, the PO or the POT.

One methodological warning is worth keeping, because it nearly became a false claim on this page. A byte check taken while the MO was being rewritten returned a 33,181-byte file that appeared to be a broken catalog: the retired strings still present, the new translation missing. That was a partially written file, not a defect. Re-measuring after the install completed gave the figures above. Never publish a catalog verdict from a single MO byte read taken during an install window.

The narrow caveat that remains: the catalog is installed and verified as catalog content, and the rendered German helper has not been re-observed in cache-disabled Chromium since. Catalog truth is not paint truth, and this page does not upgrade one into the other.

Owner-decision sheet

One sheet, batched, so the owner answers a set rather than a stream. Every row states the decision, a recommendation, and what the recommendation would cost if accepted. Rows whose ask names no control or no policy get no invented recommendation — they get the exact missing input instead, because a fabricated target is worse than an open row.

Terminal-blocked rows are deliberately not on this sheet. The 40 canonical-release rows, LEGAL-01, LEGAL-02 and LEGAL-03, UX-01, PL-17 and PL-18 which cannot move until the legal rows land, and 3.2.5 with EvidenceReconciliation which need the absent walk-event store are all blocked on an artifact that must be restored or supplied rather than on a choice. Putting them here would invite an answer that synthesizes a release input from a generated artifact, which is prohibited.

Sheet A — design-class rows from the 2026-08-25 corpus

idthe decisionrecommendationcost if accepted
TOUR-03add the two missing question-list filter controls, or accept that readiness and pool are reachable only by dashboard drill-downadd them. The pills already disclose the state correctly; only the setter is missingtwo extra self::select() calls inside ListTables::filters() in the qw_question branch at includes/Admin/ListTables.php:160-163, reusing the renderer at :486, the value labels already defined at :296-297 and the predicate at :251. PHP only, one function, no new strings beyond the two labels that already exist
TOUR-09keep the choice-card treatment, or replace it with something quieterkeep it and close TOUR-09 as superseded. The rule is the 3.2.7 contract at assets/css/qwizz-admin-settings-layout.css:243-305, added six days before the finding was triaged, and both fieldsets opt into it deliberatelykeeping costs nothing. Replacing it reverses that fix, invalidates its wave-6 assertions, and reopens the bare-radio defect it closed
TOUR-13leave the theme’s German search-miss string on the subject archive, or override the themeleave it. It is served by wp/wp-content/themes/twentytwentyfive/templates/archive.html:1-11 with the fallback at patterns/template-query-loop.php:29-33, and overriding the theme on the bench that produces the screenshot corpus would invalidate that corpus for a non-plugin reasonleaving costs nothing. Overriding is a site-content task plus a corpus recapture
TOUR-14leave search results rendering whole post bodies, or give search its own templategive search its own template as a site-content task, not a plugin change. The current template renders 8 full post bodies and leaks a foreign plugin’s raw shortcode into resultsone theme template plus one pattern edit at templates/search.html:1-12 and patterns/template-query-loop.php:17-25, outside the plugin, plus a corpus recapture
TOUR-15 canonical namepick one product name across the admin shellQuizWizz, which is the spelling already used on the dashboard heading. The alternatives in source are the menu label and the onboarding and content-provider stringsa bounded string sweep across the menu, onboarding and content-provider strings, plus one catalog regeneration. The provisional replacement already installed for the misspelling assumes this answer and is marked provisional until it lands
TOUR-24aaccept the player’s top-anchored layout, or bound and centre itbound it. See Sheet G for the measurement and the two costed optionsCSS only in assets/css/qwizz-player.css; see Sheet G

Sheet B — plugin product, UI and IA

idthe decisionrecommendationcost if accepted
PW-01subscribers own quiz publication lifecycle, or administrators doadmin_only for now. The authenticated surface exposes no unpublish or re-publish control and direct editing is denied, so the alternative would document a capability that has no interfacerecording admin_only is documentation only. subscriber_self_service needs new controls plus a capability review and is unscoped until UX-ANSUI-01 settles the operator UI
LANG-FRESship the fr and es interface options, or remove themremove them. A forced language needs a complete .mo plus nine named JSON catalogs; without those the stored choice silently degrades to auto, which is a failure the user cannot seeremoval is a bounded edit to the interface-language list plus one catalog regeneration. Shipping means authoring two complete catalog sets. This is the same decision as 3.1.8 in Sheet E
PL-06enable the anonymous guest-AI substrate for public traffickeep it disabled. Four of its inputs are absent rather than undecided: budget, rate ceiling, API key, and the exact model and provider. W1-D confirmed there is no key anywhere on this benchno bench cost. The decision cannot be recorded from inside the vault: it needs secret material supplied by reference, never inline
PROD-DEF-01which print and settings control the residual alignment and single-row ask names, and its target policyno recommendation is derivable: the ask maps to no defined control. Date, page numbers, question count and editor helper copy already default off with the one-column layoutsupply the control name and the target value. Until then no bench work can start
PROD-IA-01the accepted target information architecture for the dashboard and admin shelldecide it on the existing bench-external mockup rather than in prose, then let each accepted move become its own row. This is the same gate as 3.2.2 and 3.2.8 belowthe mockup already exists and costs nothing to review. Each accepted move is then a scoped edit under the constraint that no control’s data-path changes
PROD-PLAY-01what a distinct test mode is, and for whomno recommendation is derivable: the delivered public play flow is complete and browser-verified through completion, and nothing defines behaviour past itsupply the behaviour and the audience
PROD-SE-01how far Site-Editor-editable ownership extends over design and print templatesstop at the patterns already registered and keep the server-rendered PDF path outside the Site Editor, which is where it is today by designrecording the boundary is documentation only. Extending it is an architecture change with no scoped estimate
PROD-WPUI-01the migration boundary from bespoke controls and inline SVG to the WordPress component libraryset the boundary at new controls only, leaving existing accessible names intact. Admin pages already use the plugin admin scope, the wp-admin font stack and the active admin colour tokensa boundary statement costs nothing. A blanket migration would rewrite every icon-bearing control and every accessible name that the corpus findings just repaired
PROD-REV-01the target interaction for answer reviewno recommendation without the target: the full review already moved out of the disclosure with a measured 28px result gap, and a narrower tooltip is a different interaction, not a smaller onesupply the target interaction
PROD-XOUT-01the target crossing-out affordance across builder, player and printdecide print first, where the affordance is already configurable as circle, square or none, and derive the other two from itprint costs nothing further. Builder and player each need one affordance implemented against whatever print settles
PROD-ICON-01which remaining toggles become iconized equivalentsno recommendation without the control set: the new segmented presentation controls are already iconized and the phrase names no specific binary controlssupply the named control set. Accessible names must be preserved, which is exactly what TOUR-17 just corrected in the other direction
PROD-FT-01what the full allowed option set is inside the fine-tune modalno recommendation without the definition. Title, question and choice editing, reorder, replace, duplicate, remove, add, undo, redo, cancel and print are all already confirmed presentsupply the option set
PROD-FT-02per-question hot-swappable distractors: source, correctness rules, per-question limitsno recommendation: all three inputs are undefined, and fine-tune can add, remove and replace but not swap one distractorsupply all three inputs. This is generation policy, not a UI gap
PROD-HELP-01which audience and guidance survives when the settings help content is fused into the dashboard help affordancekeep both until the audiences are named. Source deliberately retains both, and no content may be deleted as a defect fixkeeping costs nothing. A fusion needs the surviving audience named first
PROD-AI-01audience, provider disclosure, abuse controls, privacy posture and failure behaviour for a public conversational quiz wizarddefer until the corpus replacement lands and PL-06 is answered. Current source provides bounded admin-side generation, not a public chat surfacedeferring costs nothing. Building it depends on PL-06’s absent secrets and on a privacy decision this vault cannot record
UX-ANSUI-01the expanded shape of the Answers operator controlexpose the two bits separately, since precedence is already settled and the collapsed switch still writes both while player timing and the PDF sheet are not separately reachableone control split plus its accessible names. Precedence needs no relitigation
FL-003accept unordered provider routing for signed-in traffic, or pin it the way guest routing is pinnedpin it, for symmetry with the guest path that already refuses fallbacks. Recorded as a recommendation only, because intent cannot be read off observed behaviourone routing change. No probe was run and none can be: see the FL-003 section above
3.2.2 SettingsIaCutoveraccept a grouping for the settings information architectureaccept the six-group shape on the mockup before any plugin change, under the hard constraint that no control’s data-path moves, because both the save payload and the no-script fallback key on itreviewing costs nothing. Each accepted group is then a scoped markup move with its own assertion
3.2.8 IaMockupAsScratchpadwhether the mockup is the agreed place to settle the layoutyes, and keep it bench-external. It already mirrors the deployed DOM with every control and every data-path preserved and exactly one added control, its own search fieldno cost; it exists and is already the cheapest place to disagree

Sheet C — launch and operations

Five owner-supplied choices, and one row that closes automatically when they land. PL-07 is the aggregate: it needs no separate answer.

idthe decisionrecommendationcost if accepted
DEBUG-01keep bench debug logging at public launch, or disable itdisable WordPress debug logging on the public tier and keep it on the bench. Public exposure of the log is already denied, and the debug window stayed byte-identical across a full probe wave in this drive, so the bench posture costs nothing to retainone configuration flag on the public tier. No plugin change
OPS-LOG-01review cadence, owner, escalation destination, minimization procedure and evidence destination for access logssupply all five. The throttling control itself is implemented and the daily rotation exists; only the governance is missingthe governance statement is documentation. No bench work
OPS-BACKUP-01destination, credential reference, transfer encryption, retention immutability, schedule, restore owner, and one remote restore proofsupply all seven. The local artifact and its restore drill are closed, including a scratch-database restore in this drive’s own W0 step, so the remaining work is entirely off-hostoff-host infrastructure plus one proven remote restore. Nothing in the plugin changes
IMG-01image pinning and rollback policy for the WordPress, WP-CLI and MariaDB imagespin all three and record the rollback targets. Do not invent digests: the current posture is documented as moving tags, and a fabricated digest is worse than an unpinned taga compose change plus a pre-update backup rule and an approver. Cheap once the digests are supplied by the operator
OPS-ALERT-01alert destination, transport, credentials, severity routing, and a proven test recipientsupply all five. Local health gates are already green; there is simply nowhere for an alert to goinfrastructure only

Sheet D — tandem design branches

Each already carried a written recommendation from the 2026-08-25 tandem session. They are restated here so the owner answers them beside everything else, not on a separate page.

idthe decisionrecommendationcost if accepted
TNDM-02whether “several different cats” meant the twelve builder cards or the whole subject taxonomyconfirm the reading first. The dated 2026-08-25 sampler measurement spanned six to ten distinct subjects per draw; if the twelve cards were meant, the eventual change is taxonomy-content re-parenting rather than codeconfirming costs nothing. Re-parenting waits for the incoming replacement and a post-import census. Overlaps 3.1.9
TNDM-15hide the logged-out navigation entry, or leave itleave it for now, and replace the theme’s auto-listing block with an explicit navigation menu as a site-content task when the bench stops being the corpus source. Making the page private would lock out logged-in subscribers, who are the audienceleaving costs nothing. The menu replacement is site content plus a corpus recapture
TNDM-09Rexpose a visitor opt-in for the fine-tune step, or make it the default for the print outcomeexpose the opt-in. The step is implemented and good but unreachable as shipped, and the flag that reveals it was flipped only for verification and restoredone Customize-panel control. This is also the fixture that TOUR-19 lacked, so answering it makes that row browser-provable
TNDM-RAILcollapse the mobile statistics rail behind a summary, or keep it expandedcollapse it. Everything is currently on-screen and reachable, but the rail occupies 383px of a 390px viewport and pushes list content down the pageone collapse affordance plus its accessible name, CSS and a small amount of markup

Sheet E — corpus, taxonomy and documentation

The other eight rows in the corpus and taxonomy section are deferred behind the incoming replacement, not decidable, and are recorded that way in the ledger rather than here. Measuring a corpus that is about to be replaced produces figures that are stale on arrival.

idthe decisionrecommendationcost if accepted
3.1.8 FrEsShipOrDropidentical to LANG-FRES in Sheet Banswer it once, in Sheet Bone answer closes both rows
ArchiveFoldermove the dated pages under an archive folder, or keep the frontmatter-and-index archive layerkeep the current layer and close the row as superseded. Measured with this page in place: 72 pages sit under the audits folder, and of the vault’s 599 wikilinks 551 are fully qualified, leaving 48 that resolve by basename alone. The lint gate resolves a target only on a unique exact or suffix match, so re-slugging that many pages turns every one of those 48 into a resolution risk, in a vault with no version control to undo itkeeping costs nothing and the archive layer already exists in frontmatter and index grouping. The move costs a rewrite of every affected link plus a full route re-verification, for no reader-visible gain

Sheet F — browser tooling and tandem showcase

idthe decisionrecommendationcost if accepted
ResumeAndRecoverywhether to build checkpoint-and-resume for the tandem harness, and whenschedule it as tooling work, not documentation. It was reclassified onto this sheet because no execution wave in this drive owns the tandem harness, so leaving it in the documentation section would have implied a writer could close it. Five recovery cases must each resume without opening a duplicate surface or switching browser: stale references to elements that no longer exist, closed tabs, login expiry mid-run, dialogs intercepting the next action, and unexpected navigation away from the verified surface. The completion rule is that resume restores the last verified visible elementharness work in the browser tooling layer. Nothing in the plugin changes, and no corpus dependency exists
TenStopAcceptancewhen to resume the ten-stop runresume only with the owner present and steering, which is the row’s own condition; three stops ran and the run was parked deliberately. The named failure to avoid is narration collapsing into repeated single-word fragmentsowner time. No bench cost
SpeechSynchronizationnothing independentkeep it blocked behind TenStopAcceptance; it cannot be verified without a ten-stop run to verify it againstnone until the run happens
SingleSignOnSomedaywhether to revisit portal-backed single sign-on for the administrator session and the wikileave it unscheduled, which is the existing decision. Nothing depends on it and its requirements are unmeasurednone. Revisiting means measuring an OIDC client, an identity mapping, a forward-auth rule and the fate of the local administrator account

Sheet G — designer pass, 2026-08-31

W4’s rows, with its own measurements. Every figure here is pixel-measured from the delivered captures, and the two settings captures were reported as undecidable rather than as passes, so no settings row appears below. Of the six settings concerns the designer could not decide, five retain their own shell or browser assertion; TOUR-07 instead closed on its measured non-reproduction, with the competing source offsets consolidated separately.

idmeasured problemrecommendationcost
TOUR-24a486 CSS pixels, 50.2% of the area below the admin bar, is empty beneath the last control; no bounded card surface exists; the only control below the answers is an unlabelled square roughly 30px wide; the answer grid runs about 1384 CSS pixels wide for labels as short as two wordsbound and centre rather than fill: give the shell a maximum inline size near 860px with automatic inline margins, make it a minimum-height flex column, centre the question and answer block, and pin the utility row as its footer. This converts trailing dead space into balanced space, roughly halves answer line length, and gives the audio control an ownerCSS only in assets/css/qwizz-player.css, where the shell is unbounded at :6 and the standalone wrapper is unbounded at :118, with the answers grid at :29-30. No JS, no markup, no new tokens. It interacts with the choice-grid span rules, so it needs a wave-6 re-assertion and one 390px re-measurement
TOUR-24a, cheaper alternativesame measurementkeep the top-anchored layout but bound the column and give the shell a real surface, using the existing surface fill, a 1px existing border and the existing radius, so the trailing space reads as intentional marginthree or four declarations against assets/css/qwizz-player.css:10, which today sets a background and an 18px radius with no border and no shadow. No layout-mode change. This also raises answer-button affordance for free
PLAYER-AFFORDANCEanswer-button fill measures about 1.02:1 against the page, so the primary interactive controls are separated from the page by a thin light border alonerepoint the answer fill or its border at a token pair that clears 3:1 against the pagetoken only, at assets/css/qwizz-player.css:30. Folded into the card option above at no extra cost
PLAYER-PROGRESS-CONTRASTthe progress indicator measures 1.31:1 against the page, against the 3:1 minimum for non-text graphical objectsrepoint the indicator fill at an existing accent token that clears 3:1 and keep the track paleone declaration
PLAYER-ADVANCE-DISCOVERABILITYno Next, Submit, Skip or Back control appears anywhere in a 1600Ă—1000 player viewport; the only control below the answer grid is the unlabelled audio squareconfirm that answer-click-to-advance is intended, and if it is, state it once in the utility row and give the audio control a visible label, consistent with the icon-plus-text precedent TOUR-17 just establishedmarkup and copy only
QE-HELPER-ASYMMETRYin the question editor’s meta row, the type and language selects each carry a helper sentence and the difficulty select carries none, so the row reads as an unfinished setadd one capability sentence for difficulty, or collapse all three into a single shared explanation under the rowone view file, copy only

What this page does not claim

  • No wiki page here is live until a production build and a live-page check are recorded. The first W5 check-only path passed with 79 files parsed, 840 emitted, exit 0. No later W6 check-only, production build, deployment or live-page receipt is claimed here.
  • Nothing on it is release-eligible. Every bench change it cites is releaseEligible: false and reaches a release only through the locked source pipeline.
  • No rendered claim is made for TOUR-19’s fine-tune modal, TOUR-20’s locked embed, or TOUR-24b’s dark first paint: each is missing a fixture, and each says so in its own row rather than borrowing confidence from an adjacent surface. The repaired German strings are verified as installed catalog content and have not been re-observed as paint.
  • No designer verdict is claimed for the settings surfaces. Two of W4’s four captures were delivered too downscaled to resolve a label, a border or a toggle state, and that was recorded as an evidence gap.
  • No pre-replacement corpus, taxonomy-content or census measurement is promoted into a present-tense completion claim. Those rows remain deferred — corpus replacement inbound, while dated measurements above remain point-in-time evidence.
  • No sheet row was implemented. A recommendation on this page is a recommendation.