The pack now looks at the page, and writes down what it saw. Step 4 of the journey captures each route you name at two viewport heights, at rest and scrolled, and reports what a reader would actually meet — something covering something else, text running out of its container, a control too small to hit. The evidence manifest gains an inspection observations field that a list of screenshot filenames does not satisfy.
A skipped inspection can no longer pass as a completed one. Seven distinct result states replace a single unverified line, and the same state reaches the manifest, the step's output, and the acceptance gate — so a missing browser arrives as a decision rather than a green tick.
Measure the noise yourself. Four defect fixtures and four known-clean ones ship with a procedure for measuring the false-positive rate in your own environment. The pack publishes no rate of its own, because the rate moves with the judge and the viewport sizes and does not transfer.
A visible defect now costs something. A run that took every capture and found a banner covering the heading reports that it *ran* and that it did not *pass* — two answers, because "the browser would not start" and "the page is broken" need different fixes. The surface does not complete over an unresolved blocking finding.
The independent reviewer can finally see the page.frontend-reviewer is handed the captures, reads them, and can take its own when the ones it was given do not cover what the diff makes it suspicious of. Until now it read the diff, and no diff shows one element covering another.