Explore once. Cook a recipe. Let it graduate to a script.
You pay once to explore an app into a versioned cookbook. After that, any agent, engine, or human runs a single recipe from a tiny slice of context — and a recipe that passes graduates into a script that runs for free.
One loop, funded once
Exploration is the only expensive step, and you do it a single time. Everything after is O(1-test): read the router, read one recipe, run it, grade it.
The cookbook: five levels, disclosed on demand
A cookbook is layered so an executor loads only what one test needs. That's what makes a single test cost ~1,500 tokens no matter how big the app is — the deep layers (healing, the full map) load only when something breaks or when you're authoring.
How a recipe becomes a script
The recipe is the source of truth — human-readable intent. A script binding is a generated fast-path: once a recipe proves itself, its steps + anchors + oracle compile into a real Playwright (or Katalon) script that reruns with no model. The script is never authoritative; on drift it steps aside and the recipe takes over.
Natural language
- "test that a vital article renders with the right title"
- what a human or agent means
import
Recipe L2
steps:goto · wait_for · read …oracle:h1 equals "Albert Einstein"- refs
@anchorsfrom the map (L4)
graduate
Script binding
- Playwright
.spec.ts - Katalon
.groovy - runs deterministically, $0, no model
goto /wiki/… · read @article/h1await page.goto(…) · expect(locator('#firstHeading'))locator(...) in the scriptequals · contains · countexpect(...).toBe(...) in the scriptThree lanes, one source of truth
Every run tries the cheapest trustworthy lane first and falls back honestly.
Binding
A fresh compiled script runs on its native engine. Used only while its fingerprint (recipe + anchors) is fresh.
Intent
The recipe runs via the agent/engine against the live app, graded by its oracle. This lane decides bug-vs-drift.
Healing
An anchor miss emits a patch proposal (FAIL-STALE, not a bug). A maintainer applies it; the recipe re-graduates.