demo environment created in the Quickstart.
Look inside
Change a fact, and watch grading follow
RunTASK-004 and note what the verifier expected:
data/opportunities.json and make one opportunity bigger:
data/opportunities.json
OPP-003 sits in STG-004, which carries a 75% probability, so adding $100,000 of deal value adds $75,000 of weighted value. Both sides computed that independently from the same data.
This is what “deterministic verification” buys you. The verifier does not know
507500 — it derives the answer from the seeded world using the same helpers the tools use. Had the number been hardcoded, your edit would have made the verifier confidently wrong.Add a task of your own
A task is a JSON file. Adding one is adding a file.Write the verifier that grades it
verifiers/VER-007.ts
openPipelineFor is a domain helper that already exists in state.ts — the same one the pipeline_summary tool uses. That is the pattern: write the rule once, and let both the tool and the grader read it.
Check your work before running
Run it
pipeline.agent.js
Prove the verifier can fail
A check that passes on no work is not a check. Point an agent that does not answer at the same task and confirm it fails. Do this once for every verifier you write. It is the cheapest insurance in the whole workflow, and it is the step most often skipped.Where to go next
Environments
How data, state, tools, tasks and verifiers fit together.
Build From Scratch
A complete environment from an empty template.
Bring Your Own Agent
Wire up a real model loop.
Scoring
What pass, fail and reward actually mean.
Silo