BioSymphony Ferm DoE keeps public contracts small and file-based. They are designed for long-running agents and generic issue trackers without embedding private tracker ids, provider launches, private paths, or unpublished artifacts.
schemas/task_request.schema.json defines one bounded work request. The matching
stdlib validator is exposed as:
PYTHONPATH=src python3 -m biosymphony_ferm_doe.cli validate-task-request templates/task_request.template.jsonRequired fields:
schema_version: 1request_kind: ferm_doe_task_requesttask_request_idcampaign_idtitlepublic_safetyexpected_artifactsacceptance_criteriavalidation_commandstouched_areas
Public-safe requests set:
{
"privacy": "synthetic_or_public_only",
"private_data_allowed": false,
"provider_mutation_allowed": false,
"tracker_specific_ids_allowed": false
}The validator rejects absolute private paths, secret-like text, private tracker-specific fields, and provider-mutation command tokens.
The repo-local preflight wrapper also recognizes task requests:
python3 skills/biosymphony-ferm-doe/scripts/preflight_check.py templates/task_request.template.jsonschemas/engine_task_request.schema.json defines the richer routing request used
by ferm-doe engine route-task-request. It keeps dispatch policy separate from
the compact public task-request validator above.
Run it with:
PYTHONPATH=src python3 -m biosymphony_ferm_doe.cli engine route-task-request templates/engine_task_request.template.jsonThe engine router classifies intent, chooses a recommended issue pack and lane,
and blocks external compute handoffs unless routing.remote_compute_allowed is
explicitly true. It returns routing advice only; it does not authorize provider
mutation or physical execution.
The public package has a compact dossier check, not the full private orchestration self-check. It validates the minimum public handoff surface:
campaign_manifest.jsonexpected/readiness_summary.jsonexpected/AGENTS.md- optional
expected/selected_wave_1_design.csv - optional
expected/run_packet.md - evidence table provenance headers when a manifest declares
inputs.evidence_table
Run it with:
PYTHONPATH=src python3 -m biosymphony_ferm_doe.cli check-dossier examples/demo-xylanase-publicFor a compact demo, the preflight wrapper should be pointed at the campaign
directory. It will also route the directory's campaign_manifest.json back to
the directory-level dossier contract when the expected/ contract files are
present:
python3 skills/biosymphony-ferm-doe/scripts/preflight_check.py examples/demo-xylanase-publicThe check fails for missing required files, invalid readiness status, malformed evidence provenance, duplicate selected-design run ids, and unsupported claims such as validated optimization, production readiness, or execution approval.
These contracts prove artifact shape and public safety. They do not prove lab-execution, assay validation, optimized conditions, validated scale transfer, or GxP batch-record readiness.