Why
The Goose comparison highlighted recipes/sub-recipes as a useful way to reduce repeated planning and make long-running work reproducible. OpenChrome already has the right implementation issue for this: #854 (oc playbook — declarative YAML scenario runner with inline Outcome Contracts). Creating a second recipe runner would be duplicate scope.
This issue adds the missing hardening layer around #854: a small, merge-blocking live-verification pack that proves browser recipes are useful as deterministic OpenChrome harness artifacts after implementation.
Scope
After #854 lands, add runnable browser recipe fixtures and verification documentation that exercise the playbook runner through a real OpenChrome MCP server.
Required fixtures
Add a small local fixture site under tests/fixtures/playbook/ or equivalent:
index.html: links to a details page and contains a safe form.
details.html: has stable text and at least one interactive control.
- optional
submit.html: receives local-only form navigation; no external network side effects.
Required playbooks
Add 3 reviewable YAML playbooks under docs/recipes/ or tests/fixtures/playbook/recipes/:
basic-navigation.yaml — navigate, read/assert title/text, follow a link, assert URL/text.
safe-form.yaml — fill a local form, submit to a local fixture endpoint/page, assert post-submit state.
failure-recovery.yaml — intentionally assert a missing element first, then demonstrate fail-fast output with enough evidence for the host to recover.
Each playbook must use inline Outcome Contracts instead of LLM judgement.
Non-goals
Acceptance criteria
Merge-blocking live verification with OpenChrome
After #854 and this issue are implemented, the PR must include live verification against a real OpenChrome MCP server:
- Build OpenChrome.
- Start the local fixture server.
- Run
basic-navigation.yaml through oc playbook run and confirm all assertions pass.
- Run
safe-form.yaml and confirm the local-only submit path succeeds without external network or account side effects.
- Run
failure-recovery.yaml and confirm it fails at the intended step with structured evidence.
- Re-run
basic-navigation.yaml to prove the failure playbook did not corrupt the browser/session state.
Attach console output or an MCP transcript showing all three playbooks.
Self-review checklist for implementer
Curated scope, overlap handling, and verification checklist
Scope classification
Overlap and conflict resolution
Implementation checklist
Success criteria
Post-merge OpenChrome live verification checklist
Why
The Goose comparison highlighted recipes/sub-recipes as a useful way to reduce repeated planning and make long-running work reproducible. OpenChrome already has the right implementation issue for this: #854 (
oc playbook — declarative YAML scenario runner with inline Outcome Contracts). Creating a second recipe runner would be duplicate scope.This issue adds the missing hardening layer around #854: a small, merge-blocking live-verification pack that proves browser recipes are useful as deterministic OpenChrome harness artifacts after implementation.
Scope
After #854 lands, add runnable browser recipe fixtures and verification documentation that exercise the playbook runner through a real OpenChrome MCP server.
Required fixtures
Add a small local fixture site under
tests/fixtures/playbook/or equivalent:index.html: links to a details page and contains a safe form.details.html: has stable text and at least one interactive control.submit.html: receives local-only form navigation; no external network side effects.Required playbooks
Add 3 reviewable YAML playbooks under
docs/recipes/ortests/fixtures/playbook/recipes/:basic-navigation.yaml— navigate, read/assert title/text, follow a link, assert URL/text.safe-form.yaml— fill a local form, submit to a local fixture endpoint/page, assert post-submit state.failure-recovery.yaml— intentionally assert a missing element first, then demonstrate fail-fast output with enough evidence for the host to recover.Each playbook must use inline Outcome Contracts instead of LLM judgement.
Non-goals
Acceptance criteria
oc_assertor equivalent contracts.npm run build, targeted playbook tests, andnpm run lint:tierpass.Merge-blocking live verification with OpenChrome
After #854 and this issue are implemented, the PR must include live verification against a real OpenChrome MCP server:
basic-navigation.yamlthroughoc playbook runand confirm all assertions pass.safe-form.yamland confirm the local-only submit path succeeds without external network or account side effects.failure-recovery.yamland confirm it fails at the intended step with structured evidence.basic-navigation.yamlto prove the failure playbook did not corrupt the browser/session state.Attach console output or an MCP transcript showing all three playbooks.
Self-review checklist for implementer
Curated scope, overlap handling, and verification checklist
Scope classification
test/1044-playbook-live-pack). Continue in that PR.oc playbookrunner. This issue must not create a second runner.Overlap and conflict resolution
Implementation checklist
Success criteria
Post-merge OpenChrome live verification checklist
oc playbook/harness command against the local fixture pack.