2026-09-02 QuizWizz UI/UX perfection round
Amendment — 2026-09-02 22:01 UTC
The original receipt closed SET-07 on a selector that matched neither the broken heading icons nor the same elements in browser assertion (c). That closure was wrong. SET-07 was reopened, repaired in mirror commit
715474f, and reclosed only after a widened 77-icon probe and two new mutation rows proved the corrected contract. The original SET-07 row and3/25 → 0/24measurement remain below, visibly marked SUPERSEDED; that figure was produced by the same defective selector and is not evidence. Evidence: E10–E11.
Close-out status
ACCEPT-WITH-WAIVERS. The installed plugin tree and pushed mirror are at HEAD
715474f. The final shell gate is TAP1..94,# assertions=94 failures=0, from/tmp/qwux/wave-all-final2.tap. Cache-disabled Chromium passed the post-amendment chunks:legacy47/47, player 9/9, admin 13/13, and boundeduiux-perfectionQWIZZ_UIUX_STEPS=a-d,e-g, andh-jat 8/8, 7/7, and 7/7. Every final browser run reportsoverallPass=true,restoration.complete=true,consoleErrors=[],pageErrors=[], andforeignRowsDuringRun=[]. Sixteen mutation rows went red on their named contract and green after SHA-exact restoration. Evidence: E10–E12.Waivers. The final first-visible-control metric is
505px, not the plan’s≤290px, because the final measurement names the first visible form control and includes the 32px admin bar, 72px dashbar and heading; the plan’s 367px baseline used a different anchor. The first quiz-list Details table cell is75px, not≤40px, while its repaired.qwizz-list-contextcontent is one line and26px; WordPress title/date layout governs the enclosing row. The standards reviewer left eight grouped P3 judgment follow-ups. Evidence: E2, E6.Release boundary:
releaseEligible: false. These are bench patches, not a release or release authorisation. The release owner must apply source changes through the locked pipeline. Coordinating issue: loca/quizwizz #14. Evidence: E2.
Evidence register
| ID | Evidence used by this receipt |
|---|---|
| E1 | Approved defect inventory and acceptance plan, local://qwizz-uiux-perfection-plan.md:13-65. The plan establishes the before-state IDs and intended contracts; it is not used as proof that a fix landed. |
| E2 | Consolidated final dossier, local://qwizz-uiux-evidence.md:1-63 and /tmp/qwux/evidence-dossier.md:1-63: final measurements, commits, gates, residue, recovery and review disposition. |
| E3 | Identical-base measurement runner /tmp/qwux/measure.js; before /tmp/qwux/before.json at mirror 2da4b577; after /tmp/qwux/after.json at mirror 54c54c8. Refinements skip screen-reader-only icon siblings, include ancestor opacity, and emulate coarse pointer for mobile fine-tune. Desktop is 1280×900; mobile is 390×844 @2x; cache was disabled. Its icon-gap 3/25 → 0/24 result is superseded: both sides used the defective selector, so that row is not evidence for SET-07. Other metrics retain their original authority. Provenance: E2 lines 17–43; supersession: E10–E11. |
| E4 | Original mutation matrix local://qwizz-mutation-matrix.md:1-141, /tmp/qwux/mutation-matrix.md, and agent://SliceE2. Rows 1–3 cite predecessor executions in history://SliceE; rows 4–14 are live red→restore→green executions recorded by Slice E2. Post-publication rows 15–16 are separate evidence in E11. |
| E5 | Slice reports: history://SliceA plus agent://SliceA; history://SliceB; agent://SliceC; history://SliceD plus agent://SliceD; and agent://SliceE2. These establish slice-local browser observations, deviations, installation/lint receipts and commit identities. |
| E6 | Independent verdicts agent://FinalReviewer-2 and agent://FinalAuditor3. Both return ACCEPT-WITH-WAIVERS, zero blockers. The reviewer records one fixed copy finding and the P3 judgment follow-ups; the auditor records the two measurement waivers and required clean full-gate close. |
| E7 | Backup recovery record /tmp/qwux/backup-recovery.json:1-17: four attributable rows deleted, three displaced rows restored from /home/loca/backups/wrdp/20260902T013032Z/db.sql.gz, final 95-row ordered digest 86100bbc6dd9b7a8312ef96cbdcb8a314e9fc53092eebd384233d5573f43898f. |
| E8 | Shell records /tmp/qwux/wave-all.tap, /tmp/qwux/wave-5-rerun.tap, /tmp/qwux/wave-all-final.tap, and the post-amendment authority /tmp/qwux/wave-all-final2.tap; post-amendment browser records /tmp/qwux/e3-final-{legacy,player,admin,uiux-ad,uiux-eg,uiux-hj}.json; current harness SHA-256 be619c00ac67d076b517f8703da578147fbf76d05cd292c18a4fe769165e9ac6. Exact browser totals and invariants are in agent://SliceE3:117-215. |
| E9 | Source-only validation command /home/loca/dev/wikis/build.sh wrdp --check-only, re-run 2026-09-03 after the six amendment pages were complete. It reported SSOT Validation passed., Found 87 input files, Parsed 87 Markdown files, Emitted 876 files, and Check-only completed successfully. No production build or deploy was run. |
| E10 | Post-publication SET-07 proof: cache-disabled operator measurement /tmp/qwux/icongap.js; before-repair screenshot /tmp/omp-sshots-15704bf48cf1b420.webp; agent://SliceA:1-66; pushed mirror commit 715474f; installed rule wp/wp-content/plugins/quizwizz/assets/css/qwizz-admin-settings-core.css:294-303, live SHA-256 92d09a8e7c60784e36e2eb999ab51f74e26bc466f83707602f9ee8593d23f88a. |
| E11 | Widened assertion and mutation proof: scripts/quizwizz-browser-smoke.js:3088-3148; harness SHA-256 be619c00ac67d076b517f8703da578147fbf76d05cd292c18a4fe769165e9ac6; agent://SliceE3:1-215; raw rows /tmp/qwux/e3-row15-{red,green}.json and /tmp/qwux/e3-row16-{red,green}.json. |
| E12 | Gate-reliability records: idle /tmp/qwux/w5-{1..6}.tap; loaded /tmp/qwux/w5c-{1..6}.tap, with the sole failure at /tmp/qwux/w5c-4.tap:18-35; assertion output scripts/quizwizz-probe.sh:1353-1361 and its six ANDed conditions at :1324-1351; final shell authority /tmp/qwux/wave-all-final2.tap:107-134,249-268; loca/quizwizz #15. The immediate post-failure residue readback was an orchestrator WP-CLI/SQL observation with no JSON artifact; its exact reproducible commands and results are recorded in Gate reliability. |
Amendment — SET-07 reopened and closed, gate blind spot fixed
The original A8 CSS rule and browser assertion (c) both selected #qwizz-settings svg.qwizz-icon:first-child:not(:only-child). Root cause: in <h3><svg …> Difficulty choices</h3> the label is a text node, not an element child, so the SVG is still :only-child; consequently the selector matched neither the broken CSS target nor the gate’s sample and the gate reported zero violations by skipping the failing elements. Evidence: original result retained in E3–E4; selector correction and widened gate in E10–E11.
Before repair, cache-disabled Chromium measured margin-inline-end: 0px; in the Difficulty choices heading the SVG right edge and text left edge were both x=758. The widened /tmp/qwux/icongap.js probe checked 77 icon/text pairs and found 23 violations: every subcard h3, the Create export, Download, Cancel job, and Use site theme buttons, and p.qwizz-auto-hide-note. The overlap is retained in /tmp/omp-sshots-15704bf48cf1b420.webp. Evidence: E10.
Commit 715474f, settings: restore icon and label spacing, adds a positive direct-child rule beside the old sibling-shaped selector and preserves zero margin for icon-only hint controls (qwizz-admin-settings-core.css:294-303). The installed file’s SHA-256 is 92d09a8e7c60784e36e2eb999ab51f74e26bc466f83707602f9ee8593d23f88a. The same widened operator probe then checked 77 pairs with 0 violations and measured 8px gaps for both Available experiences and Use site theme. Undo, redo, and mobile-search remain 36×44px; preview-close remains 44×44px; all four retain zero horizontal padding. Evidence: E10.
Assertion (c) now walks every visible SVG under #qwizz-settings, finds its nearest qualifying same-line text rectangle, excludes .screen-reader-text and rectangles at most 1px wide, reports each violation as {gap,text,host}, and passes only when checked >= 60 and violations are zero (scripts/quizwizz-browser-smoke.js:3088-3148). The denominator guard is deliberate: a selector that matches nothing must not pass. The operator view checks 77 pairs; the disposable harness administrator checks 76 because its control-less Protected backups card is hidden. Evidence: E11, especially agent://SliceE3:1-18,105-116.
| Mutation row | Mutant | Red result | SHA-exact restore and green replay |
|---|---|---|---|
| 15 | Restore the old selector | only assertion (c) red; 76 checked, 22 violations | CSS restored to 92d09a8e…; 76 checked, 0 violations; 8/8 |
| 16 | Delete the combined spacing rule | only assertion (c) red; 76 checked, 34 violations | CSS restored to 92d09a8e…; 76 checked, 0 violations; 8/8 |
Both rows retained restoration.complete=true, empty console/page error arrays, and foreignRowsDuringRun=[]. Evidence: E11, /tmp/qwux/e3-row15-{red,green}.json, /tmp/qwux/e3-row16-{red,green}.json.
After repair, the shell authority is /tmp/qwux/wave-all-final2.tap: TAP 1..94, zero failures. Final browser chunks are 47/47, 9/9, 13/13, 8/8, 7/7, and 7/7; every run restored completely with zero console/page errors and no foreign rows. The pushed mirror is 715474f, and residue remains 95 Settings-backup rows at ordered SHA-256 86100bbc6dd9b7a8312ef96cbdcb8a314e9fc53092eebd384233d5573f43898f. Evidence: E8, E10–E12.
Before and after measurements
The table preserves the final dossier’s definitions and caveats. A target is not marked met when the measurement definition changed.
| Surface and metric | Before | After | Target or reading | Evidence |
|---|---|---|---|---|
| Settings toolbar height, desktop | 122px | 52px | ≤52px, met | E2–E3 |
| Settings toolbar height, mobile collapsed | 208px | 52px | ≤52px, met | E2–E3 |
| Settings toolbar sticky top, desktop / mobile | 32px / 46px | 104px / 118px | stacks below the 72px dashbar | E2–E3 |
| First visible control, desktop document y | 574px | 505px | Plan ≤290px used baseline 367 and a different anchor; not met under the final definition | E2–E3, E6 |
| Scroll-spy correct tabs | 2/9 | 9/9 | all visible tabs | E2–E4 |
Visible [data-effect-sentence] nodes | 9 | 0 | zero visual rectangles | E2–E4 |
| Leading-icon gap violations — SUPERSEDED | Not evidence: the same defective selector produced both counts and skipped the broken elements. See the SET-07 amendment above. | Original E2–E4; correction E10–E11 | ||
Search print: results / SECTION MATCH / Also in | 11 / 4 / false | 6 / 0 / true | direct results plus one section-jump row | E2–E4 |
| Preview note / tabs / dialog overflow | false / 1 / hidden | true / 0 / visible | note present, obsolete tabs absent, tooltip unclipped | E2–E4 |
| Top-level bordered Settings panels | 9 | 0 | one containment edge | E2–E3 |
#qw-data number input width | 475px | 70px | compact numeric field | E2–E3 |
| Settings page height, desktop / mobile tier 4 | 7,205px / 11,956px | 7,115px / 11,034px | reported only; single-scroll-page ruling retained | E2–E3 |
| Mobile save status / placeholder | 15×44px / Search every QuizWizz setting… | 66×36px / Search settings… | readable compact status and short search copy | E2–E4 |
| Settings mobile horizontal overflow | true | false | no document overflow | E2–E3 |
| Dashbar secondary overflow segments | 3 | 0 | no secondary overflow | E2–E4 |
| Quiz-list Details table cell, first / rows 1–5 | 81px / [81,75,81,104,138] | 75px / [75,75,75,75,75] | Plan ≤40px addressed Details content; inner context is one line / 26px, enclosing row remains 75px | E2–E4, E6 |
| Quiz-list readiness / duplicate saved views | Private\nReady / true | Private · Ready / false | one-line status, no duplicate links | E2–E3 |
| Dashboard summary / action row / page-title action | true / true / 0 | false / false / 1 | one native creation action | E2–E4 |
| Quiz-editor listbox bottom / metadata rows / toggles / Trivia-export note | 930px / 0 / native / false | 830px / 20 / 42×24, 42×24 / true | listbox inside viewport; metadata, styled toggles and consequence note present | E2–E3 |
| Builder desktop height / columns / chip height | 1,831px / 2 / 96px | 1,222px / 4 / 56px | ≤1,300px, at least four columns | E2–E4 |
| Builder mobile height / columns | 1,729px / 2 | 1,439px / 2 | two narrow columns retained | E2–E4 |
| Builder outcome visible / position / aligned | false / fixed / false | true / sticky / true | visible disabled state on load, form-aligned | E2–E4 |
| Builder hover rules carrying transform | 4 | 1 | sole remaining rule is the tooltip exemption | E2–E3 |
| Fine-tune Print bottom / resting controls / tools opacity / bar | 2,825px / 11 / 1 / static | 874px / 1 / 0 / sticky | primary actions inside the 900px viewport; handle only at rest | E2–E4 |
| Fine-tune left / width; choice background; letters; textarea resize | 197px / 872px; rgb(247,245,251); false; vertical | 123px / 1,020px; transparent; true; none | print-like paper and answer markers | E2–E3 |
| Fine-tune mobile stem width / page height / Print bottom | 187px / 5,703px / 5,215px | 262px / 4,765px / 818px | baseline did not emulate touch; final run did | E2–E3 |
| Guest console / page errors | [] / [] | [] / [] | unchanged clean runtime | E2–E3 |
Defect disposition
Settings
| ID | Accepted disposition | Evidence |
|---|---|---|
| SET-01 | Resolved: measured scroll-spy moved from 2/9 to 9/9; the offset predicate and its mutation are load-bearing. | E2–E4 |
| SET-02 | Resolved for toolbar height, 122px→52px. The separately defined first-control y target remains waived at 505px. | E2–E3, E6 |
| SET-03 | Resolved: toolbar top moved 32px/46px→104px/118px and no longer overlaps the 72px dashbar. | E2–E4 |
| SET-04 | Resolved for pinned chrome: mobile toolbar 208px→52px and document overflow cleared; tier-4 height 11,956px→11,034px is reported, not a pass criterion. | E2–E3 |
| SET-05 | Resolved: save status 15×44px→66×36px and the placeholder became Search settings…. | E2–E4 |
| SET-06 | Resolved: nine visible effect sentences→zero; assistive text remains and the row is compact. | E2–E5 |
| SET-07 | SUPERSEDED ORIGINAL DISPOSITION. The original 3/25 → 0/24 result used the same defective selector in implementation and gate, so it did not close SET-07 and is not evidence. SET-07 was reopened and reclosed by the amendment above: widened probe 77/23→77/0, commit 715474f, guarded gate, and mutation rows 15–16. | E10–E11 |
| SET-08 | Resolved: print search 11 results / four fallback cards→six results / zero fallback cards plus one Also in row. | E2–E4 |
| SET-09 | Resolved: limitation note false→true, preview tabs 1→0, dialog overflow hidden→visible. | E2–E4 |
| SET-10 | Resolved in the accepted Slice A rendering: paired cards align to their content and control-less cards/panels are hidden by tier. | history://SliceA; E5 |
| SET-11 | Resolved in the accepted Slice A browser readback: banner preview computes object-fit: contain. | history://SliceA; E5 |
| SET-12 | Resolved: data-panel number input width 475px→70px. | E2–E3 |
| SET-13 | Resolved: top-level bordered panels 9→0 while subcards retain the content edge. | E2–E3 |
| SET-14 | Resolved: dashbar secondary-overflow segments 3→0. Mobile cards remain 204px wide by Slice D’s recorded deviation. | E2, history://SliceD; E5 |
| SET-15 | Resolved in Slice A’s accepted tier rendering: control-less Advanced cards no longer render as empty content blocks. | history://SliceA; E5 |
Craft builder
| ID | Accepted disposition | Evidence |
|---|---|---|
| CRF-01 | Resolved: desktop height 1,831px→1,222px, columns 2→4 and chip height 96px→56px. | E2–E4 |
| CRF-02 | Resolved: outcome false/fixed/misaligned→visible/sticky/aligned; buttons are present and disabled before selection. | E2–E4 |
| CRF-03 | Resolved in Slice B’s rendered checks: Surprise me has a distinct full-width modifier and the selected-topic count updates. | history://SliceB; E5 |
| CRF-04 | Resolved in Slice B’s rendered checks: the disclosure has a separate title/hint, first Quiz title control, Question count, and consequence copy. | history://SliceB; E5 |
| CRF-05 | Resolved: hover-transform rules 4→1; the survivor is the allowed tooltip reveal. | E2–E3 |
| CRF-06 | Resolved for reachability and density: mobile height 1,729px→1,439px, two columns retained, sticky outcome visible. | E2–E4 |
Fine-tune editor
| ID | Accepted disposition | Evidence |
|---|---|---|
| FT-01 | Resolved: Print bottom 2,825px→874px and the action bar static→sticky. | E2–E4 |
| FT-02 | Resolved: resting controls 11→1 and tools opacity 1→0; mutation proof observes 0 at rest and 1 on hover. | E2–E4 |
| FT-03 | Resolved: editor width 872px→1,020px, choice fill removed, answer letters present and textarea resizing disabled. | E2–E3 |
| FT-04 | Resolved: coarse-pointer mobile text stem 187px→262px, page height 5,703px→4,765px and Print bottom 5,215px→818px. | E2–E3 |
| FT-05 | Resolved by Slice B’s accepted source cutover: the two unused Print-localisation aliases were removed; the visible Print contract is unchanged. | history://SliceB; E5 |
| FT-06 | Resolved in Slice C’s browser readback: helper/lede text computes 13px with readable secondary colour, while count and dirty state moved to the outcome bar. | agent://SliceC; E5 |
Admin quiz surfaces
| ID | Accepted disposition | Evidence |
|---|---|---|
| EDT-01 | Resolved: quiz-search listbox bottom 930px→830px inside the 900px viewport, 0→20 metadata rows; Slice D also observed live result-count announcement. | E2–E3, history://SliceD; E5 |
| EDT-02 | Resolved: both native checkboxes became 42×24 styled controls and the Trivia-export consequence note false→true. Final wording correctly names Repeat questions and was browser-verified in 54c54c8. | E2–E3, agent://SliceD; E5 |
| LST-01 | Resolved for the owned content: readiness is Private · Ready, duplicate saved views are absent, and inner Details content is one line / 26px. The enclosing WordPress row remains 75px and is a waiver. | E2–E4, E6 |
| DSH-01 | Resolved: duplicate summary/action blocks true/true→false/false and one native page-title action is present. | E2–E4 |
Slice and commit receipt
| Slice | Accepted result and deviations | Commit evidence |
|---|---|---|
| A — Settings | One-row shelf, measured scroll offset, compact exposures, search/preview cleanup, empty-card suppression, banner/number/containment fixes. Advanced cannot align exactly at document end because scrolling clamps. Follow-up restored AI-panel reachability at every eligible tier (2–4) and removed a 7px mobile tooltip overflow. The post-publication SET-07 correction replaced the false original icon-gap closure. | 19d8906, follow-up 220ee53, SET-07 repair 715474f; history://SliceA; agent://SliceA; E2, E5, E10 |
| B — Craft builder | Dense category chips, distinct Surprise control, always-present sticky outcome, simplified Customize and dead hover/label cleanup. Hidden form inputs were moved before the outcome so the bar is the final visual child while the form state remains inside the form. | 94827de; history://SliceB; E2, E5 |
| C — Fine-tune | Builder-matched bottom bar, hover/focus tools, print-like choices and one-retry pool-short Replace. The editor bar intentionally omits data-outcome; touch visibility uses (hover: none) and (pointer: coarse); pool-bound answer letters are read-only presentation. | c80cb89; agent://SliceC; E2, E5 |
| D — admin surfaces | Compact dashbar/list/dashboard and bounded metadata-rich quiz search. Details table-cell height remains WordPress-governed although the inner context is one line / 26px; dashbar copy is 451 short; mobile cards measure 204px. Review corrected the Trivia guidance copy. | 3dd0860, review fix 54c54c8; history://SliceD; agent://SliceD; E2, E5 |
| E — gates | E1 re-contracted four obsolete geometry/search predicates; E2 added uiux-perfection, 14 original mutation rows, operator-identity attribution and cleanup hardening. The amendment widened assertion (c), added the non-trivial denominator and added mutation rows 15–16. Harness-only; no plugin-mirror commit. | Harness SHA-256 be619c00…; agent://SliceE2; agent://SliceE3; E4, E8, E11 |
Mirror sequence: c80cb89 → 94827de → 3dd0860 → 19d8906 → 220ee53 → 54c54c8 → 715474f. The post-amendment authority is pushed mirror commit 715474f; installed CSS SHA-256 is 92d09a8e…. Evidence: E2, E10.
Shell and browser gates
Shell gate, including the transient record
The first final-phase full run, /tmp/qwux/wave-all.tap, reached TAP 1..94 with one Wave 5 portability-residue failure while read-only reviewers were concurrent. The isolated replay /tmp/qwux/wave-5-rerun.tap passed 12/12, and the pre-amendment clean full run /tmp/qwux/wave-all-final.tap passed 94/94. After the SET-07 repair and gate hardening, /tmp/qwux/wave-all-final2.tap is authoritative: TAP 1..94, # assertions=94 failures=0. The failures and superseded green run are retained rather than rewritten out of history. Evidence: E2, E8, E12.
Bounded browser authority
| Selector | Final result | Execution rule |
|---|---|---|
legacy | 47/47, repeated 47/47 | serial bounded run; repetition is close-out evidence, not a second unique contract |
autostart,auto-resume,sound-toggle,play-destination,tier-selector | 9/9 | serial bounded run |
welcome,superglued-rail,single-column,selection-borders,trivia-html | 13/13 | serial bounded run |
uiux-perfection, QWIZZ_UIUX_STEPS=a-d | 8/8 | separate chunk, maximum 240 seconds |
uiux-perfection, QWIZZ_UIUX_STEPS=e-g | 7/7 | separate chunk, maximum 240 seconds |
uiux-perfection, QWIZZ_UIUX_STEPS=h-j | 7/7 | separate chunk, maximum 240 seconds |
Never run uiux-perfection as all. Every post-amendment browser row reports overallPass=true, restoration.complete=true, consoleErrors=[], pageErrors=[], and foreignRowsDuringRun=[]. Evidence: /tmp/qwux/e3-final-{legacy,player,admin,uiux-ad,uiux-eg,uiux-hj}.json; agent://SliceE3:117-182; E8, E11.
E1 re-contracted four predicates: Settings offset equals rounded toolbar bottom plus 12px; the activated target clears the measured sticky shelf; TOUR-08 requires zero SECTION MATCH, one Also in: row and the PDF jump; and the settings toolbar must stack below the dashbar. The always-run cleanup now also requires every Settings-backup row created during a run to belong to the disposable harness administrator. Evidence: agent://SliceE2:5-10,26-40; E4.
The new uiux-perfection steps are:
| Step | Browser-authoritative contract |
|---|---|
| a | every visible workspace tab activates itself and uses the measured offset |
| b | effect sentences have zero visual rectangles |
| c | every visible Settings SVG is sampled against its nearest qualifying same-line text rectangle; at least 60 pairs must be checked and every gap must be at least 6px |
| d | preview limitation note exists and preview tabs do not |
| e | builder grid density and always-visible disabled/aligned outcome bar |
| f | fine-tune bar is viewport-reachable; tools are hidden at rest and visible on hover |
| g | first pool-short reroll retries once with exclude_ids: [] and leaves row count unchanged/nonblank |
| h | dashbar secondary text does not overflow |
| i | quiz-list context is one compact line |
| j | dashboard duplicate summary/actions stay absent and one page-title action remains |
Evidence: E4, E11.
Sixteen-row mutation matrix
Every executed red run retained complete restoration metadata, empty console/page error arrays and no foreign backup rows. Rows 1–3 are cited predecessor evidence rather than rerun by Slice E2; rows 4–14 were executed live by Slice E2; post-publication rows 15–16 were executed by Slice E3 against the widened icon predicate. Evidence: local://qwizz-mutation-matrix.md:47-89; agent://SliceE2:43-155; E11.
| Row | Defended contract and mutant | Red observation | Green replay |
|---|---|---|---|
| 1 | E1 measured shelf offset; restore stickyOffsetCache = 172 | only measured-offset assertion red | predecessor green, SHA-exact restore |
| 2 | E1 search; inject SECTION MATCH | only Also in/search assertion red | predecessor green, SHA-exact restore |
| 3 | E1 mobile status; remove data-short | only mobile save/status assertion red | predecessor green, SHA-exact restore |
| 4 | toolbar stacking; set toolbar top to 32px | 1/5 red, toolbar 32px vs dashbar bottom 104px | 5/5 |
| 5 | step a; restore fixed offset | 1/8 red, root offset 172 vs expected 168 | 8/8 |
| 6 | step b; expose one effect sentence | 1/8 red, one visual rectangle per sentence | 8/8 |
| 7 | step c; remove icon margin | 1/8 red, gap 0 | 8/8 |
| 8 | step d; remove preview-note assignment | 1/8 red, empty note | 8/8 |
| 9 | step e; re-add markup hidden and JS hide-on-not-ready | 1/5 red, desktop/mobile outcome hidden | 5/5 |
| 10 | step f; force tools visible at rest | 1/5 red, rest opacity 1 | 5/5, rest 0 / hover 1 |
| 11 | step g; remove no-exclusions retry | 1/5 red, one request and no second reroll | 5/5, two requests / 10 rows |
| 12 | step h; remove secondary cap and append full detail | 1/7 red, five overflowing segments | 7/7 |
| 13 | step i; insert breaks and make context block layout | 1/7 red, context height 68px | 7/7, 26px |
| 14 | step j; re-add dashboard summary | 1/7 red, summary count 1 | 7/7, count 0 |
| 15 | step c; restore the old implementation selector | only step c red, 76 checked / 22 violations | 8/8, CSS SHA-exact 92d09a8e…, 76 / 0 |
| 16 | step c; delete the combined spacing rule | only step c red, 76 checked / 34 violations | 8/8, CSS SHA-exact 92d09a8e…, 76 / 0 |
Two mutants had to reach the effective seam. Row 9 changed markup and JavaScript because markup-only hidden is cleared by the state layer. Row 13 changed separators and flex layout because a bare line break is inert in the flex row. This widening is recorded, not hidden. Evidence: E4.
Gate reliability
Wave 5 assertion 12, portability fixtures leave no jobs files chunks schedules posts or option drift, is one Boolean conjunction over six residue classes (scripts/quizwizz-probe.sh:1324-1361). A controlled repetition measured a load-sensitive flake:
| Bench condition | Runs | Failures | Measured rate | Evidence |
|---|---|---|---|---|
| idle | 6 | 0 | 0/6 | /tmp/qwux/w5-1.tap through /tmp/qwux/w5-6.tap |
concurrent HTTP loop over admin.php?page=qw-settings and /?page_id=57 | 6 | 1 | 1/6 | /tmp/qwux/w5c-1.tap through /tmp/qwux/w5c-6.tap; failure /tmp/qwux/w5c-4.tap:18-35 |
Immediately after the loaded failure, the orchestrator ran read-only checks through sudo -n docker compose --profile cli run --rm wpcli: wp option get qwizz_portability_last_error returned empty; SELECT COUNT(*) FROM wp_qwizz_portability_jobs returned 0; and wp cron event list --hook=qw_process_portability_job --format=count returned 0. This observation has no JSON artifact; the commands and results are recorded here so it is reproducible rather than given an invented path. Evidence: orchestrator WP-CLI/SQL readback immediately after /tmp/qwux/w5c-4.tap.
UNVERIFIED attribution: of the six ANDed subconditions, the timing-dependent $residue_cron / wp_next_scheduled() read at scripts/quizwizz-probe.sh:1328-1331 is the only plausible cause, but the failing assertion prints only portability probe failed and does not disclose which subcondition was false (/tmp/qwux/w5c-4.tap:18-22). Until loca/quizwizz #15 adds sub-condition diagnostics or otherwise settles the cause, gate runs require an idle bench. The post-amendment idle full run is green at 94/94 in /tmp/qwux/wave-all-final2.tap:267-268. Evidence: E12.
Harness defects found while proving the gate
The accepted harness closes two identity/attribution defects and three additional reliability/residue defects — five recorded fixes, even though the Slice E2 deviation labels the latter group “three additional harness defects”:
- operator identity lookup no longer opens QuizWizz Settings; it reads core
/wp-admin/profile.phpinstead; - foreign backup rows are now a failing assertion rather than preserved-but-green metadata;
- portability response observation no longer loses
decodeURIComponentfailures insidewaitForResponse; - workspace clicks use stable DOM geometry to avoid the smooth-scroll click race;
- disposable-admin blank
qw_questionauto-drafts are attributed and deleted.
The operator-identity Settings write path is closed. Agents must run Settings verification through disposable identities, never the operator identity. Evidence: agent://SliceE2:22-41,212-224; E4.
Backup-table incident, recovery and residue
Four attributable before-change rows were written as owner 1 during this round: two around Slice A’s AI-toggle verification and two from a later harness path. The owner-1 per-writer cap displaced three rows from 2026-08-31. Under the operator ruling that progress mattered more than those settings snapshots, recovery used the 2026-09-02 nightly root backup: verify the three payloads, delete exactly four attributable agent rows, restore three displaced rows byte-exact. Evidence: E2; /tmp/qwux/backup-recovery.json:5-16.
Final accepted residue:
| Check | Accepted value | Evidence |
|---|---|---|
| Settings-backup rows | 95 | E7; agent://SliceE3:204-215 |
| Ordered backup digest | 86100bbc6dd9b7a8312ef96cbdcb8a314e9fc53092eebd384233d5573f43898f | E7; agent://SliceE3:204-215 |
| Settings semantic digest | 874bb4f7eb73a1b1fe7363aa765e02123be496830e3e0c9d62f3819b330dad32 | agent://SliceE3:204-215 |
| Disposable harness users | 0 | agent://SliceE3:204-215 |
| Smoke posts | 0 | agent://SliceE3:204-215 |
| Portability jobs | 0 | agent://SliceE3:204-215 |
| Session-created question auto-drafts | 0; six attributed rows removed, pre-existing population left untouched | agent://SliceE2:212-224,240-253 |
Standing hazard: owner 1 still has 11 backup rows, above the configured cap of 10. Any future operator-identity Settings save can displace history. This becomes an explicit open-work row and operating rule, not a claim that the current accepted table is dirty. Evidence: E2, agent://SliceE2:22-40.
Independent review
agent://FinalAuditor3 returned ACCEPT-WITH-WAIVERS, zero blockers. Its original shell waiver was satisfied by /tmp/qwux/wave-all-final.tap; the superseding post-amendment authority is /tmp/qwux/wave-all-final2.tap. Its remaining two waivers are the 505px first-control metric and 75px enclosing Details cell documented above. Evidence: E6, E12.
agent://FinalReviewer-2 returns ACCEPT-WITH-WAIVERS, zero blockers. The Trivia note was the only finding fixed in this round’s close-out: commit 54c54c8 changes the rendered guidance to Trivia HTML export needs “Repeat questions” enabled (Settings › Presentation › Answer key detail). Evidence: agent://SliceD; E6.
The remaining reviewer judgments are grouped into eight open-work rows without changing their substance:
- REST metadata cleanup: decode subject labels and remove the Rest→Admin label dependency/fifth language-name map;
- remove shadowed toolbar declarations in settings core/layout CSS;
- remove the dead fine-tune
__number--gutterbranch and.qwizz-editor__countselector; - remove the shadowed minified category prelude;
- change source eyebrow
YOUR QUIZtoYour quizwhile CSS keeps visual uppercase; - replace the phantom public
--qw-brandbranch with the--qw-vtoken that resolves in fine-tune CSS; - fold appended admin-editor override blocks into their owning rules;
- give the quiz-list
+Nsubject overflow badge assistive text.
Evidence: agent://FinalReviewer-2; E6.
Screenshot index
The files remain temporary host evidence; none is copied into the vault.
| Surface | Screenshot paths reported by the slice |
|---|---|
| Settings, desktop overview | /tmp/omp-sshots-wasqrh5h.webp |
| Settings, mobile toolbar/search | /tmp/omp-sshots-obaihfnl.webp |
| Quiz list | /tmp/omp-sshots-sr2tkfmn.webp |
| Dashboard | /tmp/omp-sshots-2c2xxxlt.webp |
| Quiz editor search/answers | /tmp/omp-sshots-riaq88lk.webp |
| Quiz editor corrected Trivia guidance | /tmp/omp-sshots-1570411c3bf5d7c7.webp |
| Settings with dashbar | /tmp/omp-sshots-yhvnlymy.webp |
| Settings SET-07 overlap before repair | /tmp/omp-sshots-15704bf48cf1b420.webp |
| Craft builder, desktop/mobile | UNVERIFIED screenshot-path index: Slice B records browser measurements but supplied no durable /tmp/omp-sshots-*.webp path in its report. |
| Fine-tune, desktop/mobile/hover tools | UNVERIFIED screenshot-path index: Slice C records visual/browser checks but supplied no durable /tmp/omp-sshots-*.webp path in its report. |
Evidence: history://SliceA; history://SliceD; absence qualification against history://SliceB and agent://SliceC. The behavioral claims for Builder and fine-tune come from E2–E5, not from an invented image path.
Acceptance boundary
This receipt records the installed state and pushed mirror commit, executable gates, mutation non-vacuity, independent review and repaired residue. It does not state that a canonical release was built, signed, published or deployed. Every patch remains releaseEligible: false; the release owner carries it through the locked pipeline. The companion standing pages are Now, probes, open work, audit index, and changelog.
Vault validation was source-only: E9 passed on the final six-page amendment set with 87 Markdown inputs and 876 emitted check files. This writer ran no production build or deploy, so this receipt is not claimed live.