CI gate: anonymous suite blocking on PRs; authenticated suites nightly
Ratchet: coverage % may not decrease
Definition-of-done check against epic #307 (every route + primary actions, signup automated, telemetry fixture on every spec)
Phase P8 of epic #307.
- [ ] Coverage reporter: diff `e2e/support/route-manifest.ts` against the live route table (fail on unlisted routes so new routes must be classified)
- [ ] Per-run coverage report artifact (routes visited / actions exercised vs manifest)
- [ ] CI gate: anonymous suite blocking on PRs; authenticated suites nightly
- [ ] Ratchet: coverage % may not decrease
- [ ] Definition-of-done check against epic #307 (every route + primary actions, signup automated, telemetry fixture on every spec)
P8 status after a full audit — most of the checklist already existed and is verified working:
✅ Drift reporter (AST-based, both directions + access-mismatch + tools + wildcard) — route-coverage.spec.ts, fails the anonymous suite on any unclassified route
✅ Per-run report artifact (route-coverage.json attached to every run)
✅ CI gate: anonymous suite blocks PRs (main.yml); nightly anonymous+authenticated schedule exists (e2e-nightly.yml, 08:00 UTC, Discord on failure)
✅Ratchet — the one missing piece, now up in angular PR #175: coverage % may not decrease vs a checked-in baseline (seeded at today's real 66.7% of 102 declared routes)
Remaining to close this ticket:
Repo secretsE2E_USER_USERNAME / E2E_USER_PASSWORD (the seeded realm user from .env.e2e) — until they exist, the nightly's authenticated half self-skips by design.
The definition-of-done audit against epic #307 (every route + primary actions, signup automated, telemetry fixture on every spec) — a review pass, will do as the closing act once the secrets are in and a nightly has run green.
P8 status after a full audit — most of the checklist **already existed** and is verified working:
- ✅ Drift reporter (AST-based, both directions + access-mismatch + tools + wildcard) — `route-coverage.spec.ts`, fails the anonymous suite on any unclassified route
- ✅ Per-run report artifact (`route-coverage.json` attached to every run)
- ✅ CI gate: anonymous suite blocks PRs (`main.yml`); nightly anonymous+authenticated schedule exists (`e2e-nightly.yml`, 08:00 UTC, Discord on failure)
- ✅ **Ratchet — the one missing piece, now up in angular PR #175**: coverage % may not decrease vs a checked-in baseline (seeded at today's real 66.7% of 102 declared routes)
Remaining to close this ticket:
1. **Repo secrets** `E2E_USER_USERNAME` / `E2E_USER_PASSWORD` (the seeded realm user from `.env.e2e`) — until they exist, the nightly's authenticated half self-skips by design.
2. The definition-of-done audit against epic #307 (every route + primary actions, signup automated, telemetry fixture on every spec) — a review pass, will do as the closing act once the secrets are in and a nightly has run green.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Phase P8 of epic #307.
e2e/support/route-manifest.tsagainst the live route table (fail on unlisted routes so new routes must be classified)P8 status after a full audit — most of the checklist already existed and is verified working:
route-coverage.spec.ts, fails the anonymous suite on any unclassified routeroute-coverage.jsonattached to every run)main.yml); nightly anonymous+authenticated schedule exists (e2e-nightly.yml, 08:00 UTC, Discord on failure)Remaining to close this ticket:
E2E_USER_USERNAME/E2E_USER_PASSWORD(the seeded realm user from.env.e2e) — until they exist, the nightly's authenticated half self-skips by design.Board-sweep status (2026-07-22): ratchet merged (angular PR #175); drift reporter/artifact/CI gate confirmed pre-existing. REMAINING: E2E_USER_* repo secrets + the definition-of-done audit vs #307.