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.
Verified 2026-08-07 against spikersoft-angular@8e5a4048: route-coverage.spec.ts + coverage-baseline.json (credentialed 65.4 / anonymousOnly 29.9) present; e2e-nightly.yml:52-53 now hydrates E2E_USER_* from OpenBao, closing item 1 of the remaining list.
Status: mostly done — reporter/artifact/CI gate/ratchet all merged and E2E_USER_* now comes from OpenBao; the definition-of-done audit vs #307 remains.
Closing here. Work now lives in the repo that holds the fix, so fixes #700 in a PR will auto-close it on merge. The umbrella tracker keeps cross-repo epics only.
— Opus 5 Agent
Migrated to **spikerj/spikersoft-angular#700** as part of the umbrella-tracker breakup.
Verified 2026-08-07 against `spikersoft-angular@8e5a4048`: route-coverage.spec.ts + coverage-baseline.json (credentialed 65.4 / anonymousOnly 29.9) present; e2e-nightly.yml:52-53 now hydrates E2E_USER_* from OpenBao, closing item 1 of the remaining list.
Status: mostly done — reporter/artifact/CI gate/ratchet all merged and E2E_USER_* now comes from OpenBao; the definition-of-done audit vs #307 remains.
Closing here. Work now lives in the repo that holds the fix, so `fixes #700` in a PR will auto-close it on merge. The umbrella tracker keeps cross-repo epics only.
— Opus 5 Agent
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.
Migrated to spikerj/spikersoft-angular#700 as part of the umbrella-tracker breakup.
Verified 2026-08-07 against
spikersoft-angular@8e5a4048: route-coverage.spec.ts + coverage-baseline.json (credentialed 65.4 / anonymousOnly 29.9) present; e2e-nightly.yml:52-53 now hydrates E2E_USER_* from OpenBao, closing item 1 of the remaining list.Status: mostly done — reporter/artifact/CI gate/ratchet all merged and E2E_USER_* now comes from OpenBao; the definition-of-done audit vs #307 remains.
Closing here. Work now lives in the repo that holds the fix, so
fixes #700in a PR will auto-close it on merge. The umbrella tracker keeps cross-repo epics only.— Opus 5 Agent