Initial development queue to reach MVP for the three e2e projects under e2e/: insurance-claim, patterns-eval, delegate-52. Ordered so each task delivers a running slice the next task builds on. Source of truth for schemas is DESIGN.md; source of truth for e2e behaviour is each project's README.md.
- eval-cmd review-and-refactor — Once
knowledge/eval.rs eval-cmdis fully implemented and green, rundeveloper:refactoroversrc/knowledge/eval.rs,src/cli/eval.rs, theEvaluationRepositoryadditions insrc/content/repository.rs, andtests/eval_cmd.rs. Confirm the orchestrator/CLI split mirrorscli/run.rs, the four outcome buckets are accounted for at each report level, and the report-shape contract is locked in by the feature test. - project-layout review-and-refactor — Once the
Projectaggregate (src/content/project.rs), theVfs<T>adapter migration in src/content/repository.rs, and theRunTxUnit of Work are fully implemented and green, rundeveloper:refactoroversrc/content/project.rs, the migratedsrc/content/repository.rsadapters,src/cli/{assemble,run,eval}.rs, andtests/project_layout.rs. ConfirmProjectPathis the only path argument accepted by the read-side sub-handles, thegrep -r tempfile src/content/lint guard is in place, and noFs<T>adapter,open_fs_repositories, orAssembleUnitOfWorkreference survives. - patterns-eval-checkers review-and-refactor — Once the three structural checkers are implemented and tests/patterns_eval_checkers.rs is green (and the live falsification step in e2e/patterns-eval/ci.sh asserts
improved > 0), rundeveloper:refactorover the threecheck_*.pycheckers, the rewritten invocation synthetics in tests/e2e_patterns_eval.rs, andci.sh. Confirm each checker's rules trace 1:1 to a SKILL.md "Common Mistakes" entry, the empty-stderr-on-Fail contract holds across all rule branches, and the noop suite totals stay unchanged (discovery 12/0/2/0, invocation 6/0/3/0). - e2e-patterns-eval review-and-refactor — Once the e2e-patterns-eval wiring slice is fully implemented and the feature test tests/e2e_patterns_eval.rs is green, run
developer:refactorover the new e2e project files (e2e/patterns-eval/ — assemblies, prompts, eval YAMLs, Python checker stubs,ci.sh, AGENTS.md,.gitignore, the GitHub Actions workflow) and the feature test itself. Confirm the assemblies matche2e/insurance-claim/shape, the eval YAMLs match the README verbatim,ci.shmirrors the insurance-claim driver with the documented two-suite differences, and the deferred-carry totals in the feature test match the design's Metrics section exactly (discovery: 12 passed / 2 deferred; invocation: 3 passed / 6 deferred). - ailly-skill-eval review-and-refactor — Once the
ailly-skill-evalskill is fully written and the feature test tests/skill_eval_guide.rs is green, rundeveloper:refactoroverskills/ailly-skill-eval/SKILL.md,skills/ailly-skill-eval/references/method.md, and the feature test itself. Confirm: no schema is duplicated from DESIGN.md (the guide links out); every section ofmethod.mdtraces to whate2e/patterns-eval/actually builds (Fidelity rule —baseline.yaml, notinvocation-baseline.yaml); theSKILL.mdbody has not grown a standalone "before you start, set up the project" section (thegeneral:writing-paired-skillssplit trigger from the design's deferred decisions); and the finalname/descriptionwording was validated against the discovery-dogfooding metric, with the test'sSKILL_NAMEconstant matching.
- multi-turn-skeletons — Assembly
conversation:with multiple blank assistant turns;runresolves each against the cumulative transcript so far. - matrix-provider-axis — Matrix entries that are maps (e.g.
{ name: anthropic, model: claude-opus-4-7 }); per-bindingmodel:override flows through to the engine call. - engine-multi-provider — Additional
EngineProvideradapters for OpenAI and Google via Rig (gpt-5-turbo, gemini-3-pro per the e2e README). - eval-when-filter —
when:subset match againstmeta.binding; no-filter fanout case running once per matched conversation;program_outputsplumbed into later cases for cross-binding rollups. - e2e-delegate-52 — Wire delegate-52: provider × domain × distractor_count matrix, six-turn workflow, per-domain scorers ported from microsoft/DELEGATE52, cross-provider judge rollup. Add scheduled CI step.
-
dotenvy README pointer — Once
e2e-insurance-claimande2e-delegate-52are wired, add a one-line note to each project's README that contributors can drop a<project>/.envinstead of exportingANTHROPIC_API_KEYin the shell, with a forward pointer to src/cli/env.rs. Not blocking; lands as a docs commit once the projects exist. -
patterns-eval no-key CI policy — The live falsification step in e2e/patterns-eval/ci.sh now hard-fails when
ANTHROPIC_API_KEYis absent, against the insurance-claim convention of gracefully skipping the live half so keyless contributors still see the assemble half pass. The acceptance run uses the key ine2e/patterns-eval/.env; the broader policy for the no-key case is unresolved. Trigger: a contributor without API access needs the assemble half to pass in CI without the live half erroring. -
patterns-eval non-TypeScript checkers — The three
check_*.pycheckers target TypeScript only, because the invocation prompts pin TS (via e2e/patterns-eval/context/AGENTS.md). If a future sweep pins a different output language, each checker needs a language branch or a per-language sibling. Trigger: a patterns-eval sweep pins a non-TS output language. -
patterns-eval structural-checker fragility — The live falsification gate in e2e/patterns-eval/ci.sh passes but with a thin, variable margin:
improvedranged 1–3 across live runs and the gate survives largely on the LLM-as-judge assertion. The regex/heuristiccheck_*.pycheckers reliably discriminate onlyemitting-logs, and even there a capable model's idiom variation (a barename:event field,Brand<>helpers, expression-bodied arrow constructors) intermittently fails the invocation arm.newtypeis an intentional null result (both arms pass). Decide whether to (a) lean the structural assertion on the judge and demote the script checkers to advisory, (b) pin model temperature/seed so the gate is reproducible, or (c) accept occasional gate flake and document it. Current framing is in e2e/patterns-eval/AGENTS.md "Reading the invocation comparison". -
patterns-eval README reconciliation — The built falsification arm in e2e/patterns-eval/ is
baseline.yaml; the project README still calls itinvocation-baseline.yaml. The ailly-skill-eval guide follows the built artifact (Fidelity rule). Trigger: the patterns-eval README is next touched for any reason. -
ailly-skill-eval paired-skills split — The skills/ailly-skill-eval/SKILL.md is intentionally holistic. If its body grows a standalone "before you start, set up the project" section that would repeat on every use, split into a bootstrap skill and a per-call-site skill under
general:writing-paired-skills. Trigger: the SKILL.md body acquires a setup procedure section.
- content/conversation deferred decisions — Five revisit-after items carried over from the conversation design doc: typed
ImageSource, narrowingtool_result.content, closingTraceEventinto a named enum, promotingConversationto an aggregate root, and lifting blank/filledMessageinto type-states. See TASK-NOTES-conversation-deferred.md for trigger conditions per item. - content/evaluation deferred decisions — Three revisit-after items carried over from the evaluation design doc:
ToolCallSpecextension,f64onTextSemanticMatch.threshold(and the resultingPartialEqrather thanEqderivations), and strictScriptBodyexclusivity. (The fourth original item, semantic validation on assertion shapes, was resolved by eval-assertions-core in favor of executor-levelMalformedoutcomes.) See TASK-NOTES-evaluation-deferred.md for trigger conditions per item. - knowledge/assertions deferred decisions — Four revisit-after items carried over from the eval-assertions-core design doc: cache-hit token budgets, first-result vs all-results quantifier on
json_path, reason-string format stability, andtool_call_orderstrict-contiguous variant. See TASK-NOTES-assertions-deferred.md for trigger conditions per item. - knowledge/eval-script deferred decisions — Eight revisit-after items carried over from the eval-script design doc: per-assertion
timeout_msoverride, suite-levelpass_envdefaults plus a denylist, hermeticProgramresolution, runtime-version pinning via project config, stdout streaming into the report, an opt-in shared script library outside the project root, the Approach-2ScriptContextbundle refactor, and full stderr surfacing. See TASK-NOTES-eval-script-deferred.md for trigger conditions per item. - engine deferred decisions — revisit-after items across the engine-provider and engine-rig design docs: keyed
NoopEngine::from_tableconstructor,open_enginebootstrap helper,Conversation::request_aton the aggregate, promotingtokiofrom dev-dep to runtime dep, live wire-up for OpenAI / Gemini / Bedrock,Message.cacheforwarding into the Rig request, streaming, tool-definition wiring on requests, and theRateLimitedquota vs request-rate distinction. See TASK-NOTES-engine-deferred.md for trigger conditions per item. - eval-cmd deferred decisions — Five revisit-after items carried over from the eval-cmd design doc: per-class drill-down for
scriptandprogram, report streaming,--report-diroverride, exit code for deferred-only outcome, andrun_idsource. See TASK-NOTES-eval-cmd-deferred.md for trigger conditions per item. - project-layout deferred decisions — Five revisit-after items carried over from the project-layout design doc: recursive
**glob support, per-prompt cache strategy,RemoteAssemblyRepository, project schema validation atProject::open, and concurrent-writer atomicity onMemoryFS. See TASK-NOTES-project-layout-deferred.md for trigger conditions per item.