# Vision review — synthesis of three lenses Three parallel read-only reviews of the completed settings redesign (honesty audit, completeness vs GNOME/macOS/KDE, product coherence), 2026-08-24, HEAD `be0e552`. Full agent reports live in the session transcript; this file is the ranked synthesis. Companion to the /code-review ultra run of the same day. ## The one-sentence verdicts - **Honesty**: clears the bar on breadth and intent; thinnest at the last mile — the honesty is computed in the services and then dropped by one line of glue at the surface. - **Completeness**: "has thoroughly won the argument that it is a complete settings app; has not yet made the argument that it is a *Hyprland* settings app." - **Coherence**: 8/10 as one product; the deficit is component adoption, not design disagreement — the phases wrote down every shared abstraction and then copy-pasted it. ## Tier 0 — bugs to fix now (shipped-broken behavior) 1. **DND exceptions are dead** — `Toasts.qml:15` re-gates on `!Notifs.doNotDisturb`, overriding the service's three-way decision. Allowed apps chime + flash and never show. Fix: `visible: Notifs.popups.length > 0`. 2. **Restore-defaults safety snapshot races the wipe** — `takeSafetySnapshot()` returns at launch; the reset rewrites settings.json before the async helper reads it. The "undoable" promise records the post-reset defaults. Fix: completion signal, reset inside it, abort on snapshot failure. 3. **Reset confirm lies about dock pins** — "Pinned applications … are not changed" while `resetDesktopDefaults` restores the shipped 16-app dock. Fix the sentence. 4. **Manual proxy deadlock** — host and port each refuse to commit until the other is set; neither can ever be first, and manual mode is already engaged. Fix: page-local drafts, commit when both present. 5. **"Close the range" closes one of two protocols** — the mutation loop discards every iteration after the first; Fedora's zone has tcp AND udp ranges. Fix: multi-spec verb or pending-mutation queue. 6. **Reassurance without measurement** ×3 on Privacy — device-security "everything recommended" over a parse failure; "No app has asked" over an unread portal; live tiles "Idle" with pw-dump absent. The `scanned`/`available`/`initialized` flags exist unread. Same class: failed update check renders "Up to date" (`panama-updates` exit-code swallow); health sidebar footer green beside a red unavailable hero (flag precedence). 7. **User-deletion consent names a guessed path** — `"/home/" + userName` in the armed confirm; the helper reports the real HomeDirectory unread. 8. **VRR picker snaps back mid-confirmation** — reads the persisted store instead of `pendingRequestedLayout` during the keep-or-revert window. 9. **Quicksettings scan killed by the settings service** — `Connectivity.active` false re-syncs `scannerEnabled` off under an open panel stuck at "Searching…". Refcount the hold. 10. **Dictation try-it can type someone else's recording** — "Listening…" set even on `already-recording`; mic test has no error surface at all. ## Tier 1 — the safety layer (one pass, one file first) - `SettingsButton` carries the two-press contract in a comment and enforces nothing: add keyboard focus/keys/ring + make the seven one-press destructive buttons two-stage (BluetoothPanel Forget, FocusModeRow Delete, ThemeSaveRow Delete, HomeFavoriteCard Remove, UsersPage avatar Remove, SshKeysPage agent Remove, DisplayPanelHeader Forget) — then the nine more from the honesty audit's finding 11 (theme cards, override reset, history clear, RDP creds, BT quicksettings trash glyph, print-job cancel, display Forget, default-zone change; snapshot-delete and powermenu name their consequence). - Promote three patterns to components so they can't be forgotten: **ConfirmAction** (two-stage, one-armed-at-a-time, Keep/Verb…/Verb it), **ErrorRow** (in-card placement, " needs attention"), **"not measured, because—"** state for status surfaces. Add the idiom contract the coherence review specifies so drift fails the build. ## Tier 2 — identity features (the "Hyprland settings app" argument) 1. **Custom keyboard shortcuts** (schema `customBinds` → keybinds.lua, ShortcutCapture reused) — build the user-config-through-schema mechanism properly; 2. **Window rules editor** rides the same mechanism (float/workspace/size/opacity scope first; match captured from the live window); 3. **Gesture bindings** complete the trio. 4. **Search tokenization** + the named holes (log out, wired, metered, gestures…) + route through `openSettingsSection` so results land on the right tab (mechanism exists, one caller). 5. **Kill the last dead doors**: GNOME "system" umbrella button on Health (contract can't see it — add `[system]=about` to OWNED), the Wellbeing handoff (inert without gnome-shell) → replace with native screen time/break reminders; the phantom "per-device input stays with GNOME" comment. 6. **Network round-out**: static IP/DNS/metered/saved networks/hidden SSID (new panama-network verbs). 7. Smaller: DND quick-settings tile, color filters via `decoration:screen_shader`, Bluetooth device management depth (trust/rename/adapter, D-Bus already exposes it), keyboard layout list (evdev.lst already parsed), first-run offering import + theme, Displays rescan row, removable-drive mount, launcher toggle verbs (dark mode first), per-app hub drill-in, uncapped lists (known_hosts worst; MyHome entities double-render; quicksettings Wi-Fi/BT lists whose settings twins carry the bounding comments). ## Tier 3 — coherence convergence (four passes, first two ≈ a day) Pass 1 the safety layer (above). Pass 2 adopt existing components (SectionLabel ×9, StatusBadge rename + 6 hand-rolls, SettingsChip ×4, chip height 26, guard the 12 unguarded refresh-on-open). Pass 3 the two extractions + idiom contract. Pass 4 copy & docs: search section-routing, 12 README errors, 5 manual errors + 14 unmentioned categories, one spelling each of colour/app, detail-punctuation rule, 29 essay-details into SettingsNote. ## Recorded honest state (not findings) Tier-2 deferrals all verified recorded in-tree (mono audio, sticky keys, rollback, PPDs, Samba, hibernate, etc.). All 190 schema keys have genuine readers. Zero dead components, complete qmldir, uniform disclosure/lede/button conventions. The manual's structure is contract-pinned; its content is not (that gap is Tier 3 Pass 4).