🗄️ 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.
| ID | Status | Closed contract |
|---|---|---|
| W10-01 | done | Builder shared-context ReferenceError removed; customization controls and presets render. |
| W10-02 | done | Backup Delete controls use destructive styling and deliberate action spacing across all ten rows. |
| W10-03 | done | A real single-quiz question reflows at 320×720 with 320 px document width and no overflowing descendant. |
| W10-04 | done | Five-row admin navigation and per-screen .current state are restored. |
| W10-05 | done | Archive players require a gesture; only the dedicated single-quiz page autostarts. |
| W10-06 | done | The 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-07 | done | Answer review is outside the five-action disclosure with the measured 28 px result gap. |
| W10-08 | done | Every 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,partialandopenrow 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.
| Request | Verdict | Evidence |
|---|---|---|
| Admin/front-end fully German under forced DE | broken | de_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 strings | open | Content-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 handle | open | languages/ 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 save | done | [data-path="outcomes.pdf"] toggled with no [data-save] present; status went 1 unsaved change → Alle Ä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+Z | done | [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 instantly | partial | Change 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 reality | partial | DOM 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 directly | partial | Re-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 (site→light, theme_default=light), with no pre/post-save difference (ExposureSettings.php:703-726, qwizz-admin-settings.js:59). |
○ crossing-out marker optional/better shape | open | The 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 off | partial | Fresh 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) | open | Only 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 suppressible | open | Unconditional markup at includes/Frontend/views/finetune-editor.php:38; no option key, no matrix row. |
| Clean simple wp-admin QuizWizz dashboard | done | includes/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 activity | open | Only 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 surface | open | No AI/idea path in DashboardPage.php, Onboarding.php, AdminStatistics.php; live dashboard has no matching element. |
| Ever-present stat rail replacing sidebar duplication | partial | Rail 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 integration | done | includes/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) | open | Only 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 history | open | Only 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 / points | open | wp_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 quizzes | open | No frontend renderer/route; management endpoints are admin-scoped (includes/Rest/AdminController.php:18-74). |
| Density controls leave the front end | done | assets/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 overrides | done | assets/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 quiz | done | Bare 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 / iconset | partial | Admin 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 templates | open | No 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 rules | broken | assets/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 icons | partial | Only 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 gone | done | Absent from source and from the live builder button set. |
| Primary actions docked to the bottom | open | assets/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 click | done | Prepared-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 tooltip | open | Source 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 shelf | partial | Both 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 list | open | Live edit.php?post_type=qw_quiz exposes only stock WordPress row controls and quick edit; no eye toggle selector exists. |
| Player result actions | mixed | implemented: 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 honoured | done | player.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 only | done | assets/js/qwizz-player.js:49,290,611-627; live .qwizz-player__sound aria-pressed="false", text Sound off. |
| Final-ten-seconds countdown cue, configurable | partial | One-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-up | open | Score 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 difficulty | open | Only prog difficulty and auto_advance_ms exist (includes/QuestionSelector.php:175-194, includes/QuizService.php:626-648). |
| Wizard hat instead of wand | partial | The 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 SSOT | broken | The 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 reduced | open | Three 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).
- return: Open work ledger · Program Masterplan · QuizWizz audits
- companion archive: Task log completed record