Skip to main content

Intervention Register Specification

The machine-readable contract is schemas/intervention.schema.json. The authoring template is templates/intervention.template.yaml. Entries live in data/public/interventions/, one YAML file per intervention.

Required fields​

fieldnote
intervention_idurn:worldfabric:intervention:<slug>
corridor_refthe canonical corridor record it acts on
targets_bottleneckreference into that corridor's bottleneck register
intervention_typetaxonomies/intervention_types.yaml
summaryone sentence, no adjectives
epistemic_statusfixed to scenario by the schema
proposed_changefunctional link, metric, direction, magnitude band
expected_effectcorridor metric, magnitude band, reasoning
displacementnext binding constraint, and why
counter_effectsat least one
preconditionsat least one
evidencesource-registry references
evidence_sufficiencytaxonomies/evidence_sufficiency.yaml
falsificationwhat would show this is the wrong intervention
confidencereuses system_states.yaml → confidence
priority_rationaleargued in words, never a score
statustaxonomies/intervention_status.yaml

review is optional and its fields accept null while undecided, consistent with the other templates in this package.

Magnitude, not measurement​

proposed_change.magnitude_band and expected_effect.magnitude_band take a band from taxonomies/magnitude_bands.yaml, never a number. A single figure attached to an effect that has not been observed is invented precision, and it would be quoted as though it had been measured.

uncertain is a legitimate band and is the correct default. It is not a failure to state a band.

Status transitions​

candidate → evidence_review → analytical_review → validated → implemented
↘ blocked_insufficient_evidence
↘ withdrawn
validated → contested | superseded

Two conditional rules are enforced by the schema rather than by review discipline:

  • status: candidate requires evidence_sufficiency: insufficient;
  • status: validated requires at least one evidence entry and an evidence_sufficiency of sufficient or sufficient_for_qualified_publication.

An author cannot promote an entry by editing one field.

Validation​

scripts/validate_records.py validates every file in data/public/interventions/ against the schema, alongside the corridor records. It is also run against the template, so a schema change that breaks the template is caught immediately rather than at the next authoring session.

Rendering rule​

Wherever interventions are displayed, the tier must be visible in the same view as the intervention itself — not in a footnote, not on a separate page. A candidate carries an explicit non-citable notice.

Counts of candidates are never presented as coverage or as progress. They measure how much has been hypothesised, which is not a measure of how much is known.