Handbook
Feedback360 UX scorecard
Measures the static report at report/360-report.html on a 100-point scale. Machine-readable twin: ux-scorecard.json. Evidence: ux-evidence/<label>/.
Updated
How the score works
Each category has a weight; each is rated 0–5 from visible, verifiable evidence only (screenshots + scripts/ux-audit.mjs output — never intent or unshipped code):
category_score = weight × rating / 5
UX total = sum(category_score)
Audit harness
cd workbench/feedback-360
NODE_PATH=/home/lzvyahin/Code/forgesdlc-kitchensink/tools/website-ux-auditor/node_modules \
node scripts/ux-audit.mjs --label <phase-label>
Checks hard gates (data hashes, console errors, tab rendering, 390px overflow,
external requests) and captures desktop 1280 / mobile 390 screenshots, touch-target
measurements, keyboard and deep-link probes into ux-evidence/<label>/.
Data-integrity baseline hashes: ux-evidence/baseline-hashes.json
(covers data.json, metrics.json, and the embedded #report-data JSON).
Current score: 87.7 / 100 (stmt2-grouping, 2026-07-11) — baseline was 52.9
| Category | Weight | Baseline | Current | Score | Key current evidence |
|---|---|---|---|---|---|
| Guided comprehension | 15 | 2.7 | 4.4 | 13.2 | Hero bet + top-3 moves + risk/strengths in first viewport (1280 & 390); hero sets competency focus |
| Navigation and context | 12 | 2.8 | 4.8 | 11.5 | Sticky nav, arrow keys, #tab/competency deep links, cross-tab focus bar; clickable 12-card competency analytics strip filters statements in one click; deep links verified in all three view modes |
| Mobile usability | 18 | 1.7 | 4.1 | 14.8 | All 8 tabs 0px body overflow (gate PASS); card layouts for Matrix/Perception; analytics strip horizontal-scroll row at 390px; one 40px exception (wiki-link) |
| Data visualization clarity | 12 | 2.9 | 4.5 | 10.8 | Quadrant/heatmap/dumbbell/dot-strip legends; axis helpers; labeled values; inline 1–7 score dots; per-competency cards with color-banded averages and flag counts (worst-first) |
| Actionability | 15 | 3.3 | 4.4 | 13.2 | 30/60/90 cards, why-priority bullets, success metrics, copy plan, reset weights (behavior-verified) |
| Cognitive-load management | 10 | 2.3 | 4.7 | 9.4 | ≤1 flag chip per collapsed row; named default view; grouped-by-competency mode reduces full-list scroll from 54 rows to 12 collapsed headers (probe: 0 visible rows collapsed), filters auto-expand matching sections and hide empty ones |
| Accessibility | 10 | 2.5 | 4.1 | 8.2 | Dialog semantics + focus trap verified; keyboard chart/heatmap; focus-visible everywhere; analytics cards + segmented control are buttons with aria-pressed |
| Trust and methodology | 5 | 3.0 | 3.9 | 3.9 | Visible MoE warning + expandable detail; confidence legend; confidentiality note |
| Performance and maintainability | 3 | 4.2 | 4.6 | 2.8 | Still static/offline, 0 external requests, 0 console errors; 704 KB; entire UX layer back-ported into the generator — python -m feedback360 --stage render reproduces it byte-identically (verified), guarded by the report_contains_ux_sprint_markup gate |
| Total | 100 | 52.9 | 87.7 |
Target gates
- Sprint 1: ≥ 70/100, Mobile usability ≥ 3.2/5, Accessibility ≥ 3.2/5
- Sprint 2: ≥ 82/100, Guided comprehension ≥ 4.2/5, Actionability ≥ 4.3/5
- Regression gate: no category drops by more than 0.2 rating points
- Hard-fail gate: any data/metric/comment/formula mutation fails the run outright
Hard gates (final run — ux-evidence/stmt2-final/, exit 0)
| Gate | Baseline | Final |
|---|---|---|
| data_files_unchanged | PASS | PASS |
| report_contains_ux_sprint_markup | — (added 2026-07-10) | PASS — fails loud if the report is regenerated without the UX layer |
| no_console_errors | PASS | PASS |
| all_tabs_render | PASS | PASS |
| mobile_390_no_uncontrolled_body_overflow | FAIL (Gaps/Perception/Divergence) | PASS |
| desktop_1280_usable | PASS | PASS |
| offline_static_no_external_dependencies | PASS | PASS |
Change log
| Date | Phase | Total | Notes |
|---|---|---|---|
| 2026-07-09 | A — baseline harness | 52.9 | Harness + evidence created; no UI changes |
| 2026-07-09 | B — responsive nav | 58.2 | Sticky scrollable tabs (150→61px), roving tabindex + arrow keys, hash deep links, 44px controls, aria fix. Nav 2.8→3.9, Mobile 1.7→2.1, A11y 2.5→3.1 |
| 2026-07-09 | C — guided Summary | 64.7 | Hero bet + top-3 moves + risk/strengths cards in first viewport (1280 & 390); findings/MoE behind disclosure; confidence legend. Prompt B work re-applied after regression. Guided 2.7→4.1, CogLoad 2.3→2.9, Trust 3.0→3.4, Mobile 2.1→2.3 |
| 2026-07-09 | D — Matrix mobile | 68.2 | Quadrant legend + axis helpers, 44px keyboard-focusable points, quadrant-grouped mobile cards with chart toggle. Viz 2.9→3.6, Mobile 2.3→2.7, A11y 3.1→3.3 |
| 2026-07-09 | E — Gaps/Divergence | 72.1 | Legends + labeled values, gaps overflow 168→0 and divergence 15→0 (scroll containers + swipe hints), 48 keyboard-accessible heat cells, divergence-desc sort. Viz 3.6→4.2, Mobile 2.7→3.2, A11y 3.3→3.6. Sprint 1 gate met (≥70, Mobile ≥3.2, A11y ≥3.2) |
| 2026-07-09 | F+G — Perception/Statements | 76.7 | Perception mobile cards (overflow 128→0; all-tabs overflow gate passes for first time), Johari accordions + quadrant one-liners, Statements top-10 priority view + show-all + search + labeled values. CogLoad 2.9→3.7, Mobile 3.2→3.9, Viz 4.2→4.3, Guided 4.1→4.2 |
| 2026-07-09 | H+I — Voices/Actions | 81.5 | Voices themes collapsed (top 2 open) + filters + confidentiality note; Actions 30/60/90 cards, copy plan, reset weights, advanced-scoring disclosure (verified: reset restores 0.5/0.35/0.15, sliders re-rank). CogLoad 3.7→4.0, Action 3.3→4.4, Trust 3.4→3.9, Mobile 3.9→4.0 |
| 2026-07-09 | J — competency focus | 84.0 | Global focus bar, cross-tab highlight (dim not hide), #tab/slug deep links, statements filter sync (verified: #statements/vision → 14 highlights; clear → restored). Nav 3.9→4.6, Guided 4.2→4.4, CogLoad 4.0→4.1 |
| 2026-07-09 | K — final a11y/regression | 85.5 | Dialog semantics + focus trap (Playwright-verified), focus-visible coverage, Voices dedup. All 6 hard gates pass, exit 0. Sprint 2 gate met (≥82; A11y 4.1 ≥4.0; Mobile 4.1 ≥3.8). See CHANGELOG_UX.md |
| 2026-07-10 | Statements declutter | 86.4 | Row grid-wrap fixed (flex + right-aligned meta), ≤1 flag chip per collapsed row (84 chips moved to expanded detail), inline 1–7 score dots, named "Top 10 development priorities" view, flag-filter counts, single toolbar, wiki updated. All 6 hard gates pass, exit 0 (ux-evidence/stmt-declutter/). CogLoad 4.2→4.5, Viz 4.3→4.4; no category regressed. See CHANGELOG_UX.md |
| 2026-07-11 | Statements v2 — restore, back-port, group, analytics | 87.7 | Report wiped twice by Studio pipeline regeneration → entire UX layer (A–K + declutter + v2) back-ported into report_template.html + render_html.py; new report_contains_ux_sprint_markup hard gate. Column-aligned row meta (fixed grid, probe: .stmt-avg x=881 on every row), clickable 12-competency analytics strip (worst-first, filters list, syncs with select/hash/focus bar), three-mode view switcher (Top 10 / By competency / All 54) with 12 collapsible sections and filter auto-expand. All 7 gates pass, exit 0 (ux-evidence/stmt2-final/); 79 pytest + check-30 green. Nav 4.6→4.8, CogLoad 4.5→4.7, Viz 4.4→4.5, Perf/Maint 4.2→4.6; no category regressed. See CHANGELOG_UX.md |