Problem
Chapter 1 (the E2E Regression Suite epic) can only catch deviations from behavior someone thought to specify. An agent driving the real product surfaces the journeys nobody scripted. Its output is findings and traces, never a merge gate — a red Chapter 1 means someone broke something; a red Chapter 2 might mean the agent got confused, and only a human can tell.
What this chapter is
Asserts invariants under unscripted use; finds gaps in the spec itself; determinism impossible by design; runs nightly; never gates merge; flake expected; output is findings + browser traces. It depends on Chapter 1 being stable (#388), not merely existing.
Success criteria
- One full nightly cycle completes with a readable session log
- ≥3 findings promoted into scripted Chapter 1 regressions in the first month
Non-goals
- Replacing the existing mocked suite (it is fast and it stays)
- Adopting RLS policies
- Visual regression / screenshot diffing
- Automating real Google OAuth
- LLM-as-judge scoring as a PR gate
Dependency graph
#388 (stability gate) ─┬─> #399 ─> #400 ─> #401
#391 (model seam) ─────┘ ▲
#397 (psycopg fixtures) ────────────┘
Open decision
Children
Prior art: open bug #355 (duplicate subject_root node) is exactly the class of defect the #400 oracles are built to catch.
Problem
Chapter 1 (the E2E Regression Suite epic) can only catch deviations from behavior someone thought to specify. An agent driving the real product surfaces the journeys nobody scripted. Its output is findings and traces, never a merge gate — a red Chapter 1 means someone broke something; a red Chapter 2 might mean the agent got confused, and only a human can tell.
What this chapter is
Asserts invariants under unscripted use; finds gaps in the spec itself; determinism impossible by design; runs nightly; never gates merge; flake expected; output is findings + browser traces. It depends on Chapter 1 being stable (#388), not merely existing.
Success criteria
Non-goals
Dependency graph
Open decision
Children
Prior art: open bug #355 (duplicate
subject_rootnode) is exactly the class of defect the #400 oracles are built to catch.