Agent task contract

May 30, 2026 · View on GitHub

Machine-oriented map: for this task, read these files and run these commands. Humans observe evidence packs and policy docs; agents implement and maintain the catalog and harness.

Status: MVP scaffolding. Prefer make targets over ad-hoc python eval_engine/… unless you are debugging the harness itself.

First orientation (any task)

StepRead / run
1AGENTS.md — purpose, boundaries, do-not list
2ARCHITECTURE.md — objects and layering
3SKILL_INDEX.md or make list-skills
4This file for the matching task row below

Core flow (canonical diagram — do not duplicate elsewhere):

skill + user input             -> useful local result
skill + manifest + fixture     -> evidence pack
evidence pack + verifier       -> verifier evidence pack

Task matrix

TaskRead firstThenPreferred command
Discover a skillSKILL_INDEX.mdskills/<name>/SKILL.md, skill_manifest.yamlmake list-skills
Inspect a contractpython tools/render_contract_summary.py skills/<name>SKILL.md, skill_manifest.yamlpython tools/render_contract_summary.py skills/<name>
Run a skill (user data)skills/<name>/SKILL.mdruntime.side_effects, limitationsScript in SKILL.md (not eval_engine)
Generate evidence packdocs/trust-and-evidence.mdTarget manifest validation.*make run-skill SKILL=<name> FIXTURE=<path> OUT=runs/<id>
Inspect a packdocs/trust-and-evidence.mdworkflow_run_record.md, validation_summary.json, output.json, trust_summary.json if presentmake review-packet PACK=<pack>
Compare runsdocs/replay.mdBoth pack dirsmake diff RUN_A=… RUN_B=…
Add a skilldocs/authoring-skills.md, skills/dicom-metadata-extract/docs/skill-scope.mdmake verify-skills after authoring
Add a verifierCONTRIBUTING.md § Verifierverifiers/skill_completeness_v1/make run-skill with verifier path
Audit one skillverifiers/skill_completeness_v1/SKILL.mdTarget skills/<name>/make audit-skill SKILL=<name>
Release readinessdocs/release-readiness.mdruns/skill_audit/_summary.json, candidate evidence packsmake status-agent-skills then make review-packet PACK=<pack>
Add with-vs-without comparisondocs/with-vs-without-authoring.mdtools/with_vs_without/run_nv_model_studies.py, target SKILL.md, upstream README/model cardpython tools/with_vs_without/run_nv_model_studies.py --skills <name> --mode prompts --prompt-style path
Change a gate / harnesseval_engine/AGENTS.md, docs/spec-model.mdspec/skill_manifest.schema.jsonmake lint then make verify-skills and make verify
Change manifest schemaspec/README.mddocs/spec-model.mdmake lint
Promote an example packexamples/README.mdexamples/INDEX.mdmake diff against prior anchor
Repo hygieneLint outputmake lintmake lint

Where to put changes

ChangeLocation
User-facing wrapperskills/<name>/
Second-pass auditverifiers/<name>/
Generic gate or pack writereval_engine/
Schema / spec prosespec/ (+ docs/spec-model.md)
Curated proofexamples/
Maintainer experimenttools/
Generated outputruns/ (gitignored)

Never: import eval_engine/ from skills/ or verifiers/.

Verification ladder (after edits)

make lint                    # policy + manifest schema
make test                    # pytest (eval_engine + skills + verifiers)
make verify-skills           # structural audit + reproducibility audit
make verify                  # harness smoke + canonical pack diff

Optional when touching gates:

make verify-negative-fixtures

Safety defaults

  • Refuse clinical decision support, patient-facing advice, or regulatory claims.
  • Do not commit patient data, large volumes, weights, or secrets.
  • When unsure, choose the reversible option and document any gap under the relevant manifest's limitations.