This document defines how OpenAMP Foundry versions schemas, certificates, manifests, benchmark cards, review packets, result summaries, and release artifacts.
A project becomes infrastructure only when outsiders can build on its artifacts without fearing silent breakage.
Any artifact that external humans, agents, labs, reviewers, or downstream tools may consume needs a version and compatibility story.
| Class | Examples | Compatibility expectation |
|---|---|---|
| Core schemas | candidate certificate, lab result, decision log | Strong backward compatibility. |
| Review artifacts | external review packet, expert review pack, release review | Stable structure, extensible fields. |
| Benchmark artifacts | benchmark cards, metric snapshots, gate outputs | Stable required fields, versioned metrics. |
| Candidate artifacts | manifests, ranked JSONL, panel summaries | Stable IDs and provenance fields. |
| Calibration artifacts | intake reports, gate verdicts, decision logs | Strong auditability and immutability. |
| Demo artifacts | toy examples and tutorial outputs | Can evolve, but should be labeled. |
| Experimental artifacts | simulation outputs, exploratory reports | May change, must be marked experimental. |
Use semantic intent, not only package version.
Increment when:
- required fields are removed or renamed;
- interpretation changes;
- old consumers may silently misread the artifact;
- proof-ladder or safety meaning changes;
- release status semantics change.
Increment when:
- optional fields are added;
- new enum values are added safely;
- new metadata appears;
- backward-compatible validation rules are added.
Increment when:
- typos are fixed;
- descriptions improve;
- examples change;
- validation error messages improve;
- non-semantic formatting changes.
Every serious artifact should include:
artifact_type: candidate_certificate | candidate_manifest | benchmark_card | review_packet | result_summary | calibration_verdict | decision_log
artifact_version: MAJOR.MINOR.PATCH
created_at: YYYY-MM-DD
created_by: human-or-agent-or-tool
repo_commit: git-sha
pipeline_version: version-or-null
schema_version: version-or-null
release_status: open | staged | restricted | internal | do-not-release
proof_ladder_level: integer-or-nullIf an artifact cannot include all fields, document why.
Candidate IDs should be stable within a panel or batch.
If a candidate is renamed, provide an alias map.
Some artifacts may include sequence hashes or safe references instead of full sequences.
Consumers must not assume full sequence visibility.
Evidence certificates should remain readable across versions.
If old fields are replaced, provide migration guidance.
Benchmark cards should preserve the meaning of historical results.
If a benchmark changes enough that metrics are not comparable, create a new benchmark ID.
Calibration decision artifacts are historical records.
Do not mutate past decisions to fit new schemas. Add migration wrappers or append new decision records.
Experimental artifacts must say they are experimental.
They should include:
- status: experimental;
- allowed use;
- forbidden use;
- known instability;
- whether they can affect ranking;
- when they should be deprecated.
Virtual-assay outputs are experimental unless the relevant gate says otherwise.
When deprecating an artifact:
- Add a
deprecated: truefield where possible. - Add
deprecated_atdate. - Add
replacement_artifactif one exists. - Explain why the artifact is deprecated.
- Keep readers or validators for at least one major cycle where practical.
- Update
docs/PROJECT_INDEX.mdif the artifact was user-facing.
Migration scripts should:
- never invent missing scientific evidence;
- never strengthen proof-ladder level;
- never convert restricted artifacts into open artifacts;
- preserve original creation time and commit when available;
- record migration time and tool version;
- emit warnings for ambiguous fields.
The project should eventually maintain a registry of schemas:
schemas:
candidate.schema.json:
artifact_type: candidate_certificate
current_version: TBD
status: stable | experimental | deprecated
owner: maintainer-role
lab_result.schema.json:
artifact_type: result_summary
current_version: TBD
status: stable | experimental | deprecatedUntil automated registry support exists, docs/PROJECT_INDEX.md and this document serve as the human registry.
Before a breaking artifact change:
- Is the break necessary?
- Can an optional field solve it instead?
- Are downstream users affected?
- Are old artifacts still readable?
- Is migration safe?
- Does the change alter safety or claim meaning?
- Does it require human review?
- Are docs and examples updated?
Agents may add optional metadata fields with tests if scope is clear.
Agents must not autonomously:
- remove required fields;
- change proof-ladder meaning;
- alter release-status semantics;
- migrate candidate release status;
- change calibration decision history;
- break schema compatibility.
OpenAMP artifacts should be stable enough that serious outsiders can build workflows around them.
That is one of the differences between a demo repo and infrastructure.