🗄️ Backlog history

Historical record — 2026-08-15 and 2026-07-30

Preserved as observed. These are the two dated sections of the retired audits/qwizz/backlog.md, carried over verbatim: wording, figures, verdicts and citations are unchanged, including the section’s own superseded-by-delivery callout. One mechanical repair was needed and nothing else was touched — three aliased wikilinks sitting inside table cells were rewritten as ordinary Markdown links to the same page, because Quartz renders an aliased wikilink in a table cell as raw text even when its pipe is escaped. The 2026-07-30 table below is a superseded baseline and must not be read as current state. Current truth: Program Masterplan. Open work: Open work ledger.

2026-08-15 verified remediation

All eight W10 repairs are closed on the live bench. This section is their dated remediation record, backed by evidence/2026-08-15-visual-ia/verify-2026-08-16.json; none remains in the active frontier.

IDStatusClosed contract
W10-01doneBuilder shared-context ReferenceError removed; customization controls and presets render.
W10-02doneBackup Delete controls use destructive styling and deliberate action spacing across all ten rows.
W10-03doneA real single-quiz question reflows at 320×720 with 320 px document width and no overflowing descendant.
W10-04doneFive-row admin navigation and per-screen .current state are restored.
W10-05doneArchive players require a gesture; only the dedicated single-quiz page autostarts.
W10-06doneThe localized advance label is visible; the sound control keeps the state-neutral accessible name Ton before and after toggle on the live German locale, corresponding to source English Sound, with state carried by aria-pressed.
W10-07doneAnswer review is outside the five-action disclosure with the measured 28 px result gap.
W10-08doneEvery scanned plugin-owned target meets the 24 px floor at both viewports; core-owned geometry remains excluded.

These closures are bench-local. releaseEligible: false remains authoritative, and canonical-release handoff still requires the absent reproducible build inputs, locks, CI, provenance, signing, and owner release review.

2026-07-30 live re-audit (code + runtime evidence only)

Scope: the requested feature list, re-verified against current plugin source and live bench runtime/DOM. Prior vault prose was not used as evidence. Live qw_exposure_settings at audit time was configured with outcomes.pdf=false, modes.dynamic=false, count min/max/default 20, langs.de=false while iface_lang="de", and matrix.pdf/key/title/fill/labels/lang=hidden, so several controls were option-hidden rather than missing; those cases are marked state-hidden. The audit mutated only qw_exposure_settings under snapshot and restored it byte-identically (1,946 bytes, cmp clean).

Superseded by delivery on 2026-07-30

Every broken, partial and open row below except the two wiki rows was implemented and verified the same day; see the masterplan delivery record for what shipped and how it was proven. The table is retained verbatim as the audit baseline that justified the work — do not read it as current state. Its citations are frozen historical references; deleted/moved runtime-class paths are explicitly identified below and mapped to active responsibilities in the current classmap delta. Still-open frontier, stated here once: the wiki was published on 2026-08-16 from this vault and the drift is closed; release-owner compiled-block defects including compiled front-end registration/title drift and block-source/toolchain absence; acceptance-proof gaps for the new full Craft block contract; operator policy/publication items; authenticated user-management surfaces and site-editable templates; and product decisions listed above.

RequestVerdictEvidence
Admin/front-end fully German under forced DEbrokende_DE MO lacks entries for otherwise-wrapped strings: Redo (includes/Admin/views/settings-page.php:96), Builder/Player/Presentation (includes/Admin/SettingsPage.php:40-42), Create export (views/settings-page.php:223), Dashboard help (:283), Site theme (prints light) (includes/ExposureSettings.php:463), plus front-end Play and answer review off (assets/js/qwizz-builder.js:818,825), and player Share quiz / Share score (includes/Frontend/QuizEmbed.php:78-79). Rendered live at admin.php?page=qw-settings and /?page_id=57 with iface_lang="de".
Untranslatable-by-construction stringsopenContent-language labels English/Deutsch (views/settings-page.php:117), subject/category names (includes/SubjectTaxonomy.php:20-51, live .qwizz-admin-category b), toast literals (assets/js/qwizz-admin-settings.js:114-115), effect-state words (assets/js/qwizz-effect-state.js:24-28,184).
Per-script de_DE JSON catalogs for every visible-string handleopenlanguages/ ships only quizwizz-de_DE-qwizz-player.json and quizwizz-de_DE-quizwizz-quiz-editor-script.json; the latter matches no current handle (current editor handle is quizwizz-admin-editor). Visible-string handles without catalogs include qwizz-admin-settings, qwizz-builder, qwizz-finetune, qwizz-admin-subjects.
Autosave every change, no explicit savedone[data-path="outcomes.pdf"] toggled with no [data-save] present; status went 1 unsaved changeAlle Änderungen gespeichert between 653 ms and 1003 ms; WP-CLI reread confirmed persistence (assets/js/qwizz-admin-settings.js:10,22,104-105).
Undo/redo including Cmd/Ctrl+Zdone[data-undo]/[data-redo] and body Ctrl+Z / Shift+Ctrl+Z each reverted the live control and persisted state; bound HISTORY_LIMIT=30 (qwizz-admin-settings.js:10,20,22,106-108).
Language change applies instantlypartialChange persists and the UI does switch language, but by full page reload: performance.timeOrigin changed and navigation type was reload (qwizz-admin-settings.js:105).
No async drift between UI, preview, and realitypartialDOM and modal preview lead persisted state for the 700 ms debounce plus REST latency (unsaved at 653 ms, saved by 1003 ms); the preview is explicitly illustrative, not the live Builder/Player/PDF renderer (includes/Admin/SettingsPage.php:162).
Default theme can be cleared directlypartialRe-clicking the starred [data-theme-default] radio cannot unstar it (no “no default” state, no toast). Disabling the theme itself works and reassigns the default (sitelight, theme_default=light), with no pre/post-save difference (ExposureSettings.php:703-726, qwizz-admin-settings.js:59).
crossing-out marker optional/better shapeopenThe round marker is the correct-answer radio itself (label.qwizz-correct-choice > input[type=radio], appearance:none, 19×19 px, border-radius:50%) at includes/Admin/MetaBoxes.php:289-293; it is required, not configurable, and no setting exists.
Most print settings default offpartialFresh defaults: date/matrix.fill=off, page numbers/matrix.foot=off, answer labels presentation.prepend_style=none, layout_cols=1; but presentation.show_question_count=true by default, and no option exists for left alignment or answer-grid single-row/2×2 (ExposureSettings.php:291-297,353-372).
Independent question numbering vs answer labelling (numeric / alphabetical / none each)openOnly answer labels are selectable (presentation.prepend_style); PDF question numbers are hard-coded numeric (includes/Pdf/PdfGenerator.php:201-205), and the none answer branch still prints a marker.
Fine-tune helper copy suppressibleopenUnconditional markup at includes/Frontend/views/finetune-editor.php:38; no option key, no matrix row.
Clean simple wp-admin QuizWizz dashboarddoneincludes/Admin/AdminMenu.php:24-40 + includes/Admin/DashboardPage.php:50-194; live admin.php?page=qw-dashboard renders .qwizz-dashboard.
Dashboard stats: plays, prints, right/wrong ratio, per-user activityopenOnly quizzes (14) and authored Your quizzes (0) are real; the strip itself renders plays not user-scoped · prints not stored (includes/Admin/AdminStatistics.php:359-388,568-580). No print-event persistence exists; attempt results are never aggregated.
Dashboard AI / ideas surfaceopenNo AI/idea path in DashboardPage.php, Onboarding.php, AdminStatistics.php; live dashboard has no matching element.
Ever-present stat rail replacing sidebar duplicationpartialRail is sticky and present on every QuizWizz screen (AdminMenu.php:87-104,148-168), measured h≈113–114 px at 1440 px wide, but the submenu still duplicates Quizze/Fragen/Themen/Einstellungen (AdminMenu.php:73-84).
WordPress-native debug/audit integrationdoneincludes/Admin/SiteHealth.php:40-104; live site-health.php shows both QuizWizz tests and #health-check-section-quizwizz debug data.
Frontend user quiz library (own quizzes)openOnly the public catalog exists (includes/Frontend/Embeds.php:17-20,59-69, frozen historical citation to a now-deleted class; see current replacement map), all published quizzes, no identity condition.
Frontend user stats / points historyopenOnly the current attempt’s completion score renders (assets/js/qwizz-player-renderer.js:255-265); no user-scoped read surface.
Per-user tracking of plays / shares / pointsopenwp_qwizz_attempts has no user_id; identity is a cookie HMAC client_hash (includes/Installer.php:236-253, includes/AttemptService.php:72-88, includes/RateLimiter.php:15-40). Sharing is client-side only, nothing persisted (assets/js/qwizz-player.js:653-681).
Frontend self-management of own quizzesopenNo frontend renderer/route; management endpoints are admin-scoped (includes/Rest/AdminController.php:18-74).
Density controls leave the front enddoneassets/js/qwizz-density.js is orphaned: no PHP enqueue/localization anywhere; live admin and public pages have zero density selectors/scripts.
Site theme rules the front end; explicit quiz theme overridesdoneassets/css/qwizz-tokens.css:80-140 inherits type/colour; assets/js/qwizz-player.js:242-249 omits data-theme for site. Live: /?qw_quiz=world-quiz-english has data-theme=null; /?qw_quiz=geografie-weltreise has data-theme="light".
Slim/standalone window for shared quizdoneBare shared-play document at /?qwizz_play=<id> (includes/Frontend/CraftHandler.php:77-109, frozen historical citation to a now-deleted class; see current replacement map); live ?qwizz_play=99 renders .qwizz-player with zero iframes and no theme main.
WordPress component library / font / iconsetpartialAdmin typography and colour follow wp-admin tokens (computed font-family is the WP admin system stack; qwizz-tokens.css:33-71), but components and icons are bespoke inline Lucide-style SVG (includes/Icons.php:121-146; live first settings SVG is qwizz-icon lucide lucide-wand, .dashicons count 0).
Site-editor-editable design / print templatesopenNo register_block_pattern/register_block_template* anywhere; only the four inserter blocks (includes/Plugin.php:146-201). Live Site Editor pattern store returned []; print is server-rendered (includes/Pdf/PdfGenerator.php:174-220).
Public responsive stylesheet free of wp-admin rulesbrokenassets/css/qwizz-responsive.css is publicly enqueued (includes/Frontend/QuizEmbed.php:45-52; includes/Frontend/Shortcode.php:139-140 is a frozen historical citation to a now-deleted class—see current replacement map) and its served bytes contain #wpcontent plus the .qwizz-settings*, .qwizz-preview*, .qwizz-help*, .qwizz-admin-*, .qwizz-savebar, .qwizz-backup*, .qwizz-bundled-import*, .qwizz-import-review, and .p-* families.
Primary actions are exactly Print and Play with iconspartialOnly qw_pdf/qw_play are emitted (includes/Frontend/views/builder-view.php:236-239), relabelled Print/Play (assets/js/qwizz-builder.js:809-820); the Play glyph is lucide-play, not a controller or wizard hat. Print was state-hidden (outcomes.pdf=false).
Start over / Edit sheet / Exact PDF gonedoneAbsent from source and from the live builder button set.
Primary actions docked to the bottomopenassets/css/qwizz-builder.css:609-619 sets .qwizz-actions{position:static}; live computed position:static, button top ≈ 803 px.
Instant next step after first source clickdonePrepared-quiz click activated [data-step="output"] from client state with no new fetch (assets/js/qwizz-builder.js:1019-1035).
Quiz review reduced to a tiny hover/focus tooltipopenSource still builds a full .qwizz-player__review card list (assets/js/qwizz-player-renderer.js:186-218,243-280); currently state-hidden by matrix.key.st="hidden".
Generate vs prepared side by side, with shelfpartialBoth cards plus the shelf exist in source (builder-view.php:107-117); live shows only the shelf because modes.dynamic=false.
Draft/publish eye toggle in the quiz listopenLive edit.php?post_type=qw_quiz exposes only stock WordPress row controls and quick edit; no eye toggle selector exists.
Player result actionsmixedimplemented: Retry quiz, New quiz, Share quiz, Share score, plus a generic Drucken (window.print()). open: a distinct Print score action, Print unsolved quiz, Fork quiz (assets/js/qwizz-player.js:567-590).
Timer settings honoureddoneplayer.auto_advance_ms=1500 resolved through includes/QuizService.php:644-646 and includes/Rest/QuizController.php:209-212; live countdown read Nächste Frage in 2 Sekunden. with pause/resume and add-10-seconds controls.
Sound off by default, user-activated onlydoneassets/js/qwizz-player.js:49,290,611-627; live .qwizz-player__sound aria-pressed="false", text Sound off.
Final-ten-seconds countdown cue, configurablepartialOne-shot 880 Hz tone at assets/js/qwizz-player.js:424-440,628-650; no escalating per-second cue and no admin/cue-level setting.
Animated score count-upopenScore snaps: rAF sampling observed null → "2 / 10 (20%)" in one frame, computed animationName:"none" (assets/js/qwizz-player-renderer.js:243-265); no score keyframes in qwizz-player.css.
Excitement / escalation knobs beyond difficultyopenOnly prog difficulty and auto_advance_ms exist (includes/QuestionSelector.php:175-194, includes/QuizService.php:626-648).
Wizard hat instead of wandpartialThe admin menu icon is already wizard-hat (includes/Admin/AdminMenu.php:171-173, registry fallback includes/Icons.php:25-31,280-281). Wand remains the settings hero/panel marks (views/settings-page.php:92,122,158, SettingsPage.php:40), the guest-builder brand (builder-view.php:46), and the banner icon whitelist/default (ExposureSettings.php:283-290,812-814, includes/LogoSource.php:14,190-205) — and wizard-hat is not an allowed banner value. Blocker: build/quiz/index.js:16-21,226,229 also hard-codes wand and must not be hand-edited.
Published wiki is a trustworthy SSOTbrokenThe live site is an older build than the vault: live / still frames Option F Waves 1–4 (Jul 29, 2026) and live /audits/qwizz/masterplan is titled Remediation Masterplan (Jul 28, 2026), while q5vault/audits/qwizz/masterplan.md:2 is Program Masterplan dated 2026-07-29. Vault corpus is 29 pages against the changelog’s stale “21 pages” claim (q5vault/changelog.md:40).
Wiki clutter reducedopenThree overlapping landings (q5vault/index.md:17-29, audits/index.md:9-15, audits/qwizz/index.md:11-35), a duplicated visual-evidence stack (visual audit + triage + two atlas pages), three archival handoff pages with no canonical-repo applicability, and escaped-pipe wikilinks at audits/qwizz/design/masterplan.md:66-70. Contradicted content: design/admin-dashboard.md:68 audits qw-get-started/qw-import as live screens although includes/Admin/AdminMenu.php:134-145 redirects both; design/settings.md:86 names a stylesheet that no longer exists.

Bench residue observed during this audit: leftover verification account qwverify-20260729 still exists (this audit’s own qwaudit fixture was created and deleted).