Thanks for helping improve biosymphony-ferm-doe.
- Public-safe synthetic / public-source examples only. No private strain details, customer records, unpublished sequences, or confidential formulations.
- Label synthetic rows clearly (
source_type: synthetic_demoetc.). - Preserve non-claims: this project is for pre-experiment planning unless executed result rows are ingested with provenance. See
NON_CLAIMS.md. - Prefer small, auditable artifacts over large opaque reports.
- Validator philosophy is guidance, not gating. Most checks should emit warnings; reserve errors for structural or public-safety failures.
make help # list every common target with a one-line summary
make release-check # tests + demos + contract-check + tool-registry + audit + public-release scan
make public-ready # release-check + required gitleaks history/tree scan
make secret-scan-optional # best-effort local diagnostic when gitleaks may be absent
make show-warnings # see what the diagnostic walkthrough surfacesThe dependency-free release-check catches structural and public-safety blockers. public-ready is the sharing gate; it fails if gitleaks is missing.
- Open a
[profile]issue using thenew_profiletemplate. - Once direction is agreed:
- Add the profile entry to
src/biosymphony_ferm_doe/profiles.pyunderPROFILE_REGISTRY. Required fields:description,advised_inputs,advised_expected,advised_blocks,required_blocks,advised_doe_families. Profile-specific structural flags as needed. - Add the profile name to the JSON Schema enum at
schemas/campaign_manifest.schema.json→properties.profiles.items.enum. - Add a snippet under
templates/profiles/<name>.snippet.json. - Add a row to
docs/PROFILES.md.
- Add the profile entry to
- If structural validation differs from the existing profiles, update
src/biosymphony_ferm_doe/validators.pyaccordingly. Default to warnings. - Optionally ship
examples/demo-<name>-public/with synthetic data illustrating the profile. make release-checkmust stay green.
- Open a
[family]issue using thenew_doe_familytemplate. - Once direction is agreed:
- Add the family entry to
src/biosymphony_ferm_doe/doe_families.pyunderFAMILY_REGISTRYwithdescription,min_runs_formula, supports/requires flags, andtypical_use. - If the formula is computable in closed form, extend
minimum_runs(...). - Add the family name to the JSON Schema enum at
schemas/campaign_manifest.schema.json→$defs.doe.properties.family.enum. - Add a section to
docs/DOE_FAMILIES.md.
- Add the family entry to
- If new structural fields are needed (e.g.
n_blocks,whole_plot_count), add them to$defs.doein the schema and to the_validate_doe(...)function. - Add a unit test in
tests/test_validators.pyexercising the family's structural requirements.
- Create
examples/demo-<name>-public/. - Use synthetic numerical values. If anchored to a public paper, cite by DOI in
inputs/evidence_table.csv(citation metadata only; do not paste article text). - Required files:
campaign_manifest.jsoninputs/historical_run_ledger.csv,inputs/evidence_table.csvexpected/readiness_summary.json,expected/AGENTS.mdREADME.mddescribing scope and verdict
- Set
claim_level: public_synthetic_demoandsystem.privacy: synthetic_or_public_only. - Verdict should be
YELLOWorRED. ForcedGREENon a synthetic demo is dishonest. - Run
make release-check; the demo should validate witherror_count == 0.
- The
auditcommand catches private paths, secret-like values, and forbidden file names. Add# audit-skip: <reason>to a documentation example line that legitimately matches a pattern. - The
make secret-scantarget requiresgitleaks;make secret-scan-optionalis only for best-effort local diagnostics. - If a contribution requires a new
claim_levelvalue, propose it in the issue first.claim_levelis a provenance label, not a sanitization control; public examples should still use synthetic or public-source rows.
The PULL_REQUEST_TEMPLATE.md has the full checklist; the high points:
make release-checkpasses- public-safety items confirmed
- schema changes are backwards-compatible (optional fields), or breaking changes are flagged in
CHANGELOG.md - demos still validate to expected verdicts
SKILL.md/agents/*.mdupdated when refuse-vs-warn behavior changes
- Stdlib only at runtime. The JSON Schema is for consumers; do not add a runtime dep on
jsonschema. - One short docstring per module / function maximum. No multi-paragraph docstrings, no decorative line wrapping in comments.
- Keep validator severities consistent: warnings for absence and for advisory shortfalls; errors for contradictions and public-safety violations.