How it works

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.

01

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.

funded once
Explore
An agent walks the app once and writes down what it learned.
the artifact
Cookbook
Versioned recipes · anchors · app map · healing ledger.
~1.5k tokens
Run one recipe
Any executor: Playwright · CDP · agent · human.
graded
Verdict
PASS · FAIL-BUG · FAIL-STALE · BLOCKED — with evidence.
friction
Freshness ledger
Drift is recorded; a maintainer patches the cookbook.
↻  the ledger feeds patches back into the cookbook — knowledge compounds instead of evaporating every run
02

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.

L1router
SKILL.md
Decides which recipe to run, and when a model is even needed.≤ 1000 tok
every run
L2recipe
recipes/TC-*.md
One test: setup, steps (a 12-verb grammar), and an explicit oracle.≤ 400 tok
every run · one of them
L3healing
healing.md
The drift playbook — how to repair a recipe when the app changed.
only on failure
L4map
map/ + anchors.json
App structure + the element registry (role · name · stable hint · notes).
authoring / healing
ledger
coverage.json
Freshness dating + what's covered — the memory that keeps the cookbook honest.
maintainer
Zero-to-one-test ≤ 1,500 tokens. Router (≤1000) + one recipe (≤400) + overhead. L3/L4 never load on a green run — they're the repair kit, not the test.
03

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.

upstream

Natural language

  • "test that a vital article renders with the right title"
  • what a human or agent means
author /
import
the hub · source of truth

Recipe L2

  • steps: goto · wait_for · read …
  • oracle: h1 equals "Albert Einstein"
  • refs @anchors from the map (L4)
compile /
graduate
generated fast-path

Script binding

  • Playwright .spec.ts
  • Katalon .groovy
  • runs deterministically, $0, no model
RECIPE
step goto /wiki/… · read @article/h1
SCRIPT
await page.goto(…) · expect(locator('#firstHeading'))
ANCHOR (L4)
role + name + stable hint
SELECTOR
the concrete locator(...) in the script
ORACLE
equals · contains · count
ASSERTION
expect(...).toBe(...) in the script
Binding-first at runtime, three outcomes: a fresh script runs at $0 · a script miss/stale/failure is only a signal — the run falls back to the recipe (intent) lane + heals, never a false verdict · a PASS on a deterministic-ready recipe graduates (re-compiles the script). The freshness ledger decides whether a script is still trusted: it fingerprints the recipe source + its resolved anchors — change either, and the script retires until the recipe re-earns it.
04

Three lanes, one source of truth

Every run tries the cheapest trustworthy lane first and falls back honestly.

Binding

$0 · no model

A fresh compiled script runs on its native engine. Used only while its fingerprint (recipe + anchors) is fresh.

Intent

model · source of truth

The recipe runs via the agent/engine against the live app, graded by its oracle. This lane decides bug-vs-drift.

Healing

on drift

An anchor miss emits a patch proposal (FAIL-STALE, not a bug). A maintainer applies it; the recipe re-graduates.