Why it refuses to guess
A tool that quietly assumes what your product is will hand you confident findings about
something else. Ranking a marketing page for “clarity in five seconds” is right; doing it to an
internal admin panel is nonsense. So init asks, and every module reasons through
the answers.
What the profile holds
| Field | What it changes |
|---|---|
| Name and URL | The target every run drives, and the name that appears in reports. |
| Description | What the product claims to do. Site review checks the pages against it. |
| Audience | Who Test drive draws testers to resemble, and whose expectations copy is judged against. |
| Surfaces | The pages every run covers. This is the list, not a crawl limit. |
| Competitors | What “different enough to remember” is measured against. |
| Code location | Lets a finding name the file, so a fix prompt points at something real. |
| Test account | Optional. Without it, runs see only what a logged-out visitor sees. |
Surfaces are the unit of coverage
A surface is a page the profile declares. Runs drive surfaces; coverage is measured against them; the memory graph is built out of them. If a page is not a surface, no run will meet it.
You do not have to write the list by hand:
node cli.cjs map
Two browser passes (one as a visitor, one signed in if there is a recipe) recording which pages exist, which stand behind the sign-in and which are dead. Free, no model calls, and it writes the map every later run reads.
--scenarios filters the surfaces the profile already declares. It cannot add
one. If a run only covered your landing page, the profile only had your landing page in it.
Knowing what is not covered
node cli.cjs coverage
How much of the product is actually tested: the pages your front door links to, measured against the surfaces runs really drive. Free, no key. It is the honest counterweight to a green report: a clean run over three pages is not a clean product.