|
| 1 | +# Roadmap Completion And Release Hardening |
| 2 | + |
| 3 | +This document is the acceptance ledger for the UX roadmap work in |
| 4 | +`docs/proposals/ux-workflow-analysis-1-may-2026.md`. It complements |
| 5 | +`docs/UX_VALIDATION.md` and the static audit script |
| 6 | +`scripts/ux_roadmap_audit.py`. |
| 7 | + |
| 8 | +The roadmap implementation is complete when the code, docs, and local |
| 9 | +verification evidence in this file are present. Release QA should still rerun |
| 10 | +the manual/runtime gates before any tag that advertises the UX roadmap, because |
| 11 | +platform, scale, and fixture evidence must be refreshed per release build. |
| 12 | + |
| 13 | +## Roadmap Evidence Ledger |
| 14 | + |
| 15 | +| Roadmap item | Completion signal | Static audit support | Runtime/release artifact | |
| 16 | +|---|---|---|---| |
| 17 | +| Keyboard focus styling and operability | Focus styling exists and keyboard matrix is defined | Search QSS for `:focus`, accessible names, shortcut/search controls | `--qa-practical` plus the keyboard matrix in `docs/UX_VALIDATION.md` | |
| 18 | +| Pointer target hardening | Toolbars and icon buttons have target-size rules | Search QSS for minimum sizing and button padding | Target-size review sheet in release QA | |
| 19 | +| Contrast hardening | Theme token contrast matrix is documented | Theme/style inventory and token docs | `docs/THEME_CONTRAST_MATRIX.md` | |
| 20 | +| Layout/scale hardening | Scale audit states and acceptance criteria are documented | Static scan can flag fixed sizes and dense surfaces | Layout screenshot set in release QA | |
| 21 | +| Status/modality cleanup | Modal inventory is classified and noncritical information dialogs are removed | Static modal inventory from `QMessageBox`, `QDialog`, and `exec()` usage | Modal decision template below | |
| 22 | +| i18n foundation | Translator bootstrap plus app-shell translation coverage exist | Search `QTranslator`, `installTranslator`, `tr()`, `QCoreApplication::translate()` | Pseudo-localization run in release QA | |
| 23 | +| Model/view migration | Large browsers use model/view where scale matters | Search `QAbstractItemModel`, `QTableView`, `QTreeView`, residual item widgets | Practical archive QA and large-archive release benchmark | |
| 24 | +| Performance baseline | Representative operations have timing/profile signals | Search `QElapsedTimer`, performance helpers, preview profiles | `docs/UX_PERFORMANCE_BASELINE.md` | |
| 25 | +| Consistency pass | Verbs, icons, statuses, and destructive patterns are reviewed | Docs and static action inventories | Consistency review sheet in release QA | |
| 26 | +| Telemetry plan | Event inventory and privacy rules exist before instrumentation | Search telemetry/analytics/logging terms | Privacy-reviewed event list in `docs/UX_VALIDATION.md` | |
| 27 | +| A/B validation | High-friction changes have variants and metrics | Docs presence check | A/B validation plan in `docs/UX_VALIDATION.md` | |
| 28 | +| Release hardening | Completion checklist is evidence-backed and free of placeholder statuses | Script report plus release docs | This ledger plus `scripts/validate_build.py` | |
| 29 | + |
| 30 | +## Static Audit Command |
| 31 | + |
| 32 | +Run this from the repository root: |
| 33 | + |
| 34 | +```sh |
| 35 | +python scripts/ux_roadmap_audit.py --strict |
| 36 | +``` |
| 37 | + |
| 38 | +Optional machine-readable output: |
| 39 | + |
| 40 | +```sh |
| 41 | +python scripts/ux_roadmap_audit.py --strict --format json |
| 42 | +``` |
| 43 | + |
| 44 | +Strict mode is the roadmap completion gate. It fails required checks, warning |
| 45 | +checks, and placeholder completion-ledger statuses. |
| 46 | + |
| 47 | +## Current Completion Checklist |
| 48 | + |
| 49 | +This table records the implementation evidence for the current roadmap sweep. |
| 50 | +Release-gated rows are complete as roadmap artifacts because the acceptance |
| 51 | +matrix and evidence templates exist; the concrete platform captures should be |
| 52 | +refreshed during each tagged release process. |
| 53 | + |
| 54 | +| Area | Evidence location | Status | |
| 55 | +|---|---|---| |
| 56 | +| Static roadmap audit | `python scripts/ux_roadmap_audit.py --strict` | Complete | |
| 57 | +| Keyboard QA | `docs/UX_VALIDATION.md` keyboard matrix; `--qa-practical` smoke coverage | Complete | |
| 58 | +| Pointer/target QA | `docs/UX_VALIDATION.md` pointer matrix; theme target-size rules | Complete | |
| 59 | +| Contrast | `docs/THEME_CONTRAST_MATRIX.md` | Complete | |
| 60 | +| Layout/scale | `docs/UX_VALIDATION.md` layout and scale audit matrix | Complete | |
| 61 | +| Modality | Static modal inventory, no `QMessageBox::information`, decision template below | Complete | |
| 62 | +| i18n | Translator bootstrap in `src/main.cpp`; shell/dialog `tr()` coverage | Complete | |
| 63 | +| Performance | `foundation/performance_metrics` signals; `docs/UX_PERFORMANCE_BASELINE.md` | Complete | |
| 64 | +| Consistency | `docs/UX_VALIDATION.md` consistency review sheet; `docs/UI_BUTTON_ICONS.md` | Complete | |
| 65 | +| Telemetry | Privacy-safe event inventory in `docs/UX_VALIDATION.md`; redacted UX trace payloads | Complete | |
| 66 | +| A/B validation | `docs/UX_VALIDATION.md` A/B validation plan | Complete | |
| 67 | +| Docs | README links the UX validation docs; changed workflows are documented | Complete | |
| 68 | +| Build validation | `meson compile -C builddir`; `meson test -C builddir --print-errorlogs` | Complete | |
| 69 | +| Practical QA | `.\builddir\src\pakfu.exe --cli --qa-practical` | Complete | |
| 70 | +| Release assets | `scripts/validate_build.py`; `scripts/validate_release_assets.py`; `docs/RELEASES.md` | Complete | |
| 71 | + |
| 72 | +## Release Revalidation Commands |
| 73 | + |
| 74 | +Use the commands below when preparing a release that includes these roadmap |
| 75 | +changes. Replace the binary path and version as appropriate for the platform. |
| 76 | + |
| 77 | +```sh |
| 78 | +python scripts/ux_roadmap_audit.py --strict |
| 79 | +python scripts/sync_doc_versions.py --check |
| 80 | +meson compile -C builddir |
| 81 | +meson test -C builddir --print-errorlogs |
| 82 | +python scripts/validate_build.py --binary builddir/src/pakfu --expected-version "$(cat VERSION)" --run-practical-qa |
| 83 | +python scripts/validate_release_assets.py --version "$(cat VERSION)" --dist dist |
| 84 | +``` |
| 85 | + |
| 86 | +On Windows, the binary path is usually `builddir\src\pakfu.exe`. |
| 87 | + |
| 88 | +## Manual Review Templates |
| 89 | + |
| 90 | +### Keyboard QA Result |
| 91 | + |
| 92 | +```text |
| 93 | +Platform: |
| 94 | +Qt version: |
| 95 | +PakFu version/commit: |
| 96 | +Scale and font settings: |
| 97 | +Archive/profile fixture: |
| 98 | +Workflow: |
| 99 | +Passed: |
| 100 | +Findings: |
| 101 | +Blockers: |
| 102 | +Follow-up issue: |
| 103 | +``` |
| 104 | + |
| 105 | +### Contrast Result |
| 106 | + |
| 107 | +```text |
| 108 | +Theme: |
| 109 | +Token/state: |
| 110 | +Foreground: |
| 111 | +Background: |
| 112 | +Measured ratio: |
| 113 | +Pass/fail: |
| 114 | +Screenshot/reference: |
| 115 | +Follow-up issue: |
| 116 | +``` |
| 117 | + |
| 118 | +### Benchmark Result |
| 119 | + |
| 120 | +```text |
| 121 | +Platform: |
| 122 | +PakFu version/commit: |
| 123 | +Corpus description: |
| 124 | +Operation: |
| 125 | +Cold result: |
| 126 | +Warm result: |
| 127 | +Memory high-water mark: |
| 128 | +Regression versus baseline: |
| 129 | +Notes: |
| 130 | +``` |
| 131 | + |
| 132 | +### Modal Decision |
| 133 | + |
| 134 | +```text |
| 135 | +Source/surface: |
| 136 | +Modal purpose: |
| 137 | +Current trigger: |
| 138 | +Decision: keep / replace / merge / defer |
| 139 | +Reason: |
| 140 | +Target milestone: |
| 141 | +Follow-up issue: |
| 142 | +``` |
| 143 | + |
| 144 | +## Definition Of Done For Roadmap Claims |
| 145 | + |
| 146 | +A roadmap item is complete when: |
| 147 | + |
| 148 | +- The code or docs change that implements the behavior is present. |
| 149 | +- The relevant static signal is present or an explicit exception is documented. |
| 150 | +- The runtime/manual artifact listed in the evidence ledger has a template or |
| 151 | + current result. |
| 152 | +- User-facing docs and CLI help are updated if behavior changed. |
| 153 | +- Release notes mention any workflow, accessibility, i18n, or compatibility |
| 154 | + impact when the changes are tagged. |
| 155 | + |
| 156 | +Do not mark a UX roadmap item complete based only on implementation code. The |
| 157 | +roadmap is complete when the behavior is implemented, measured where possible, |
| 158 | +documented, and release-reviewable. |
0 commit comments