Two robustness fixes after the census flaked under full parallel probe
load (not a product regression — the failing diff was '# transaction' vs
'# transactions', pure pluralization):
- normalize collapses count-driven plurals so a data-count of 1 vs N no
longer churns the snapshot (the census tracks controls, not the data in
their labels)
- settle waits for the nav shell + 3 stable count samples (was 2), and the
project retries 2x — deterministic snapshots mean a real control change
still fails every retry while a load-flake passes
Re-baselined from a clean seed. Probe 33/33 stable across runs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The census baselines were captured after api.probe had already created
its adversarial bills (Zero/Big/<script>) in the scratch DB, so snapshot
content depended on spec ordering — the first census diffs were probe
artifacts, not product changes. Now: a dedicated 'census' project
(read-only, pristine seed data) runs via project dependencies before
'probe' (api.probe/webauthn mutate state), and the default UI projects
ignore the spec. Re-baselined from a prepare-db-fresh DB; probe chain
33/33 across three consecutive runs; default e2e 27 passed.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
QA_PLAN Appendix E was never filled in manually — Cycle 1 signed off on
playbooks alone, which is how the WebAuthn ghost feature hid. This spec
enumerates every visible interactive control (role + accessible name) on
all 15 authed pages and snapshots the normalized, deduped, sorted list;
a new/removed/renamed control is now a reviewable diff every probe run.
Numbers normalize to '#' (dates/amounts/counts), and a self-stabilizing
settle loop samples the control count until steady (fixed waits raced
the data queries). Probe suite: 33 passed.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>