Make every settings row reachable, and every accessibility switch honest

Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
This commit is contained in:
Gabriel Brown
2026-08-24 21:03:36 -04:00
parent e1ff25fc66
commit 9ffaf45a4d
33 changed files with 2384 additions and 76 deletions
@@ -194,7 +194,23 @@ for (const required of ["rule.urgency === \"low\"", "rule.urgency === \"critical
fail(`effectiveUrgency is missing ${required}`);
}
const bell = functionBody("playBell");
// The DECISION PATH of the bell, rather than the text of one function. Visual
// alerts split the shared gates out into `bellWouldRing`, so the screen flash
// can follow the same rules as the chime without following the event-sounds
// switch (the rule is pinned above that function). The gates below did not
// change; they moved one call up, and a contract reading only the body of
// playBell would have reported the per-application sound switch as dropped.
//
// NOTE: this whole block is a bun -e argument in single quotes. No apostrophes.
const playBell = functionBody("playBell");
const bell = playBell + functionBody("bellWouldRing");
// ...and the split only holds while playBell actually consults the predicate.
// A playBell that stopped calling it would leave every gate below in a
// function nothing runs, which reads exactly like a passing contract.
if (!/bellWouldRing\(notification\)/.test(playBell))
fail("playBell no longer consults bellWouldRing, so the per-application, urgency and suppress-sound gates sit in a function the bell never calls");
if (!bell.includes("root.effectiveUrgency(notification) === NotificationUrgency.Low"))
fail("the bell reads the claimed urgency rather than the effective one, so treat-as-low would still chime");
// The per-application sound switch is narrower than the enabled switch: the