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 and 3/25 → 0/24 measurement 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 TAP 1..94, # assertions=94 failures=0, from /tmp/qwux/wave-all-final2.tap. Cache-disabled Chromium passed the post-amendment chunks: legacy 47/47, player 9/9, admin 13/13, and bounded uiux-perfection QWIZZ_UIUX_STEPS=a-d, e-g, and h-j at 8/8, 7/7, and 7/7. Every final browser run reports overallPass=true, restoration.complete=true, consoleErrors=[], pageErrors=[], and foreignRowsDuringRun=[]. 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 is 75px, not ≤40px, while its repaired .qwizz-list-context content is one line and 26px; 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

IDEvidence used by this receipt
E1Approved 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.
E2Consolidated 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.
E3Identical-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.
E4Original 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.
E5Slice 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.
E6Independent 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.
E7Backup 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.
E8Shell 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.
E9Source-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.
E10Post-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.
E11Widened 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.
E12Gate-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 rowMutantRed resultSHA-exact restore and green replay
15Restore the old selectoronly assertion (c) red; 76 checked, 22 violationsCSS restored to 92d09a8e…; 76 checked, 0 violations; 8/8
16Delete the combined spacing ruleonly assertion (c) red; 76 checked, 34 violationsCSS 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 metricBeforeAfterTarget or readingEvidence
Settings toolbar height, desktop122px52px≤52px, metE2–E3
Settings toolbar height, mobile collapsed208px52px≤52px, metE2–E3
Settings toolbar sticky top, desktop / mobile32px / 46px104px / 118pxstacks below the 72px dashbarE2–E3
First visible control, desktop document y574px505pxPlan ≤290px used baseline 367 and a different anchor; not met under the final definitionE2–E3, E6
Scroll-spy correct tabs2/99/9all visible tabsE2–E4
Visible [data-effect-sentence] nodes90zero visual rectanglesE2–E4
Leading-icon gap violations — SUPERSEDED3/250/24Not 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 in11 / 4 / false6 / 0 / truedirect results plus one section-jump rowE2–E4
Preview note / tabs / dialog overflowfalse / 1 / hiddentrue / 0 / visiblenote present, obsolete tabs absent, tooltip unclippedE2–E4
Top-level bordered Settings panels90one containment edgeE2–E3
#qw-data number input width475px70pxcompact numeric fieldE2–E3
Settings page height, desktop / mobile tier 47,205px / 11,956px7,115px / 11,034pxreported only; single-scroll-page ruling retainedE2–E3
Mobile save status / placeholder15×44px / Search every QuizWizz setting…66×36px / Search settings…readable compact status and short search copyE2–E4
Settings mobile horizontal overflowtruefalseno document overflowE2–E3
Dashbar secondary overflow segments30no secondary overflowE2–E4
Quiz-list Details table cell, first / rows 1–581px / [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 75pxE2–E4, E6
Quiz-list readiness / duplicate saved viewsPrivate\nReady / truePrivate · Ready / falseone-line status, no duplicate linksE2–E3
Dashboard summary / action row / page-title actiontrue / true / 0false / false / 1one native creation actionE2–E4
Quiz-editor listbox bottom / metadata rows / toggles / Trivia-export note930px / 0 / native / false830px / 20 / 42×24, 42×24 / truelistbox inside viewport; metadata, styled toggles and consequence note presentE2–E3
Builder desktop height / columns / chip height1,831px / 2 / 96px1,222px / 4 / 56px≤1,300px, at least four columnsE2–E4
Builder mobile height / columns1,729px / 21,439px / 2two narrow columns retainedE2–E4
Builder outcome visible / position / alignedfalse / fixed / falsetrue / sticky / truevisible disabled state on load, form-alignedE2–E4
Builder hover rules carrying transform41sole remaining rule is the tooltip exemptionE2–E3
Fine-tune Print bottom / resting controls / tools opacity / bar2,825px / 11 / 1 / static874px / 1 / 0 / stickyprimary actions inside the 900px viewport; handle only at restE2–E4
Fine-tune left / width; choice background; letters; textarea resize197px / 872px; rgb(247,245,251); false; vertical123px / 1,020px; transparent; true; noneprint-like paper and answer markersE2–E3
Fine-tune mobile stem width / page height / Print bottom187px / 5,703px / 5,215px262px / 4,765px / 818pxbaseline did not emulate touch; final run didE2–E3
Guest console / page errors[] / [][] / []unchanged clean runtimeE2–E3

Defect disposition

Settings

IDAccepted dispositionEvidence
SET-01Resolved: measured scroll-spy moved from 2/9 to 9/9; the offset predicate and its mutation are load-bearing.E2–E4
SET-02Resolved for toolbar height, 122px→52px. The separately defined first-control y target remains waived at 505px.E2–E3, E6
SET-03Resolved: toolbar top moved 32px/46px→104px/118px and no longer overlaps the 72px dashbar.E2–E4
SET-04Resolved 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-05Resolved: save status 15×44px→66×36px and the placeholder became Search settings….E2–E4
SET-06Resolved: nine visible effect sentences→zero; assistive text remains and the row is compact.E2–E5
SET-07SUPERSEDED 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-08Resolved: print search 11 results / four fallback cards→six results / zero fallback cards plus one Also in row.E2–E4
SET-09Resolved: limitation note false→true, preview tabs 1→0, dialog overflow hidden→visible.E2–E4
SET-10Resolved 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-11Resolved in the accepted Slice A browser readback: banner preview computes object-fit: contain.history://SliceA; E5
SET-12Resolved: data-panel number input width 475px→70px.E2–E3
SET-13Resolved: top-level bordered panels 9→0 while subcards retain the content edge.E2–E3
SET-14Resolved: dashbar secondary-overflow segments 3→0. Mobile cards remain 204px wide by Slice D’s recorded deviation.E2, history://SliceD; E5
SET-15Resolved in Slice A’s accepted tier rendering: control-less Advanced cards no longer render as empty content blocks.history://SliceA; E5

Craft builder

IDAccepted dispositionEvidence
CRF-01Resolved: desktop height 1,831px→1,222px, columns 2→4 and chip height 96px→56px.E2–E4
CRF-02Resolved: outcome false/fixed/misaligned→visible/sticky/aligned; buttons are present and disabled before selection.E2–E4
CRF-03Resolved in Slice B’s rendered checks: Surprise me has a distinct full-width modifier and the selected-topic count updates.history://SliceB; E5
CRF-04Resolved 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-05Resolved: hover-transform rules 4→1; the survivor is the allowed tooltip reveal.E2–E3
CRF-06Resolved for reachability and density: mobile height 1,729px→1,439px, two columns retained, sticky outcome visible.E2–E4

Fine-tune editor

IDAccepted dispositionEvidence
FT-01Resolved: Print bottom 2,825px→874px and the action bar static→sticky.E2–E4
FT-02Resolved: resting controls 11→1 and tools opacity 1→0; mutation proof observes 0 at rest and 1 on hover.E2–E4
FT-03Resolved: editor width 872px→1,020px, choice fill removed, answer letters present and textarea resizing disabled.E2–E3
FT-04Resolved: coarse-pointer mobile text stem 187px→262px, page height 5,703px→4,765px and Print bottom 5,215px→818px.E2–E3
FT-05Resolved 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-06Resolved 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

IDAccepted dispositionEvidence
EDT-01Resolved: 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-02Resolved: 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-01Resolved 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-01Resolved: duplicate summary/action blocks true/true→false/false and one native page-title action is present.E2–E4

Slice and commit receipt

SliceAccepted result and deviationsCommit evidence
A — SettingsOne-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 builderDense 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-tuneBuilder-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 surfacesCompact 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 — gatesE1 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: c80cb8994827de3dd086019d8906220ee5354c54c8715474f. 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

SelectorFinal resultExecution rule
legacy47/47, repeated 47/47serial bounded run; repetition is close-out evidence, not a second unique contract
autostart,auto-resume,sound-toggle,play-destination,tier-selector9/9serial bounded run
welcome,superglued-rail,single-column,selection-borders,trivia-html13/13serial bounded run
uiux-perfection, QWIZZ_UIUX_STEPS=a-d8/8separate chunk, maximum 240 seconds
uiux-perfection, QWIZZ_UIUX_STEPS=e-g7/7separate chunk, maximum 240 seconds
uiux-perfection, QWIZZ_UIUX_STEPS=h-j7/7separate 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:

StepBrowser-authoritative contract
aevery visible workspace tab activates itself and uses the measured offset
beffect sentences have zero visual rectangles
cevery 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
dpreview limitation note exists and preview tabs do not
ebuilder grid density and always-visible disabled/aligned outcome bar
ffine-tune bar is viewport-reachable; tools are hidden at rest and visible on hover
gfirst pool-short reroll retries once with exclude_ids: [] and leaves row count unchanged/nonblank
hdashbar secondary text does not overflow
iquiz-list context is one compact line
jdashboard 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.

RowDefended contract and mutantRed observationGreen replay
1E1 measured shelf offset; restore stickyOffsetCache = 172only measured-offset assertion redpredecessor green, SHA-exact restore
2E1 search; inject SECTION MATCHonly Also in/search assertion redpredecessor green, SHA-exact restore
3E1 mobile status; remove data-shortonly mobile save/status assertion redpredecessor green, SHA-exact restore
4toolbar stacking; set toolbar top to 32px1/5 red, toolbar 32px vs dashbar bottom 104px5/5
5step a; restore fixed offset1/8 red, root offset 172 vs expected 1688/8
6step b; expose one effect sentence1/8 red, one visual rectangle per sentence8/8
7step c; remove icon margin1/8 red, gap 08/8
8step d; remove preview-note assignment1/8 red, empty note8/8
9step e; re-add markup hidden and JS hide-on-not-ready1/5 red, desktop/mobile outcome hidden5/5
10step f; force tools visible at rest1/5 red, rest opacity 15/5, rest 0 / hover 1
11step g; remove no-exclusions retry1/5 red, one request and no second reroll5/5, two requests / 10 rows
12step h; remove secondary cap and append full detail1/7 red, five overflowing segments7/7
13step i; insert breaks and make context block layout1/7 red, context height 68px7/7, 26px
14step j; re-add dashboard summary1/7 red, summary count 17/7, count 0
15step c; restore the old implementation selectoronly step c red, 76 checked / 22 violations8/8, CSS SHA-exact 92d09a8e…, 76 / 0
16step c; delete the combined spacing ruleonly step c red, 76 checked / 34 violations8/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 conditionRunsFailuresMeasured rateEvidence
idle600/6/tmp/qwux/w5-1.tap through /tmp/qwux/w5-6.tap
concurrent HTTP loop over admin.php?page=qw-settings and /?page_id=57611/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”:

  1. operator identity lookup no longer opens QuizWizz Settings; it reads core /wp-admin/profile.php instead;
  2. foreign backup rows are now a failing assertion rather than preserved-but-green metadata;
  3. portability response observation no longer loses decodeURIComponent failures inside waitForResponse;
  4. workspace clicks use stable DOM geometry to avoid the smooth-scroll click race;
  5. disposable-admin blank qw_question auto-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:

CheckAccepted valueEvidence
Settings-backup rows95E7; agent://SliceE3:204-215
Ordered backup digest86100bbc6dd9b7a8312ef96cbdcb8a314e9fc53092eebd384233d5573f43898fE7; agent://SliceE3:204-215
Settings semantic digest874bb4f7eb73a1b1fe7363aa765e02123be496830e3e0c9d62f3819b330dad32agent://SliceE3:204-215
Disposable harness users0agent://SliceE3:204-215
Smoke posts0agent://SliceE3:204-215
Portability jobs0agent://SliceE3:204-215
Session-created question auto-drafts0; six attributed rows removed, pre-existing population left untouchedagent://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:

  1. REST metadata cleanup: decode subject labels and remove the Rest→Admin label dependency/fifth language-name map;
  2. remove shadowed toolbar declarations in settings core/layout CSS;
  3. remove the dead fine-tune __number--gutter branch and .qwizz-editor__count selector;
  4. remove the shadowed minified category prelude;
  5. change source eyebrow YOUR QUIZ to Your quiz while CSS keeps visual uppercase;
  6. replace the phantom public --qw-brand branch with the --qw-v token that resolves in fine-tune CSS;
  7. fold appended admin-editor override blocks into their owning rules;
  8. give the quiz-list +N subject overflow badge assistive text.

Evidence: agent://FinalReviewer-2; E6.

Screenshot index

The files remain temporary host evidence; none is copied into the vault.

SurfaceScreenshot 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/mobileUNVERIFIED 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 toolsUNVERIFIED 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.