Skip to content

FR acceptance map

Where every functional requirement's promised behaviour lives — in the docs and in CI. (FR numbering follows the internal PRD; this page exists so no promise can quietly vanish.)

FR Promise Docs Proof in CI
FR-1 CLI surface + exit codes 0/1/2/3, --json everywhere, crash → prefilled issue link Quickstart tests/cli/ (incl. --help example audit)
FR-2 Scenario DSL, error envelopes with YAML line:col, canonical world digest per seed DSL tests/scenario/, golden vectors
FR-3 Determinism pillars: virtual clock, keyed PRNG, single writer Reproducibility golden digests, 3 OS × 2 Py
FR-4 email/crm/calendar packs, pagination, referential integrity Packs tests/packs/
FR-5 MCP stdio+HTTP, run lifecycle (eval.finish, budgets), strict/observed ordering Integrations tests/protocol/
FR-6 Five faults × after_calls/probability, reproducible per seed DSL — faults tests/runner/, m2 golden
FR-7 14-field append-only journal, wall time excluded from digests Contracts tests/journal/
FR-8 Run-set verdict, six-ring attribution, CEL + helpers, collateral allowlist Contracts tests/verdict/
FR-9 Content-addressed repro_id; verify four-way classification Reproducibility tests/cli/test_verify.py
FR-10 FC adapters (OpenAI/Anthropic), pytest fixture + JUnit, DeepEval extra Integrations tests/integrations/
FR-11 TTFD ≤ 60s cold (CI-timed), errors documented, help has examples Quickstart, Errors ttfd CI job, docs-sync tests
FR-12 ~10 examples dual-indexed, anti-pattern guide, all runnable offline examples/ tests/examples/
FR-13 Hosted service (triggered milestone) = same code, same digests Roadmap n/a until triggered
FR-14 BYO: declarative pack.yaml (zero code) + Python entry point BYO tests/packs/test_byo.py
FR-15 --repeat/--parallel/--seed/--pass-threshold, cross-run first divergence Reproducibility tests/verdict/test_repeat.py
FR-16 Scripted multi-turn: when: triggers, world events, zero LLM DSL — turns tests/runner/test_turns.py