{
  "schema_version": 1,
  "title": "UC3 explicit provenance — local growth, activity loss and observer limits",
  "nodes": [
    {"id":"uc2-report","kind":"report","status":"measured","source":"Documentation/Program/UC2_report.md"},
    {"id":"uc3-plan","kind":"protocol","status":"verified","source":"Documentation/Program/UC3_plan.md"},
    {"id":"uc3-scope","kind":"limitation","status":"verified","source":"Documentation/Program/UC3_plan.md","anchor":"premiss-og-valgte-unntak"},
    {"id":"uc3-protocol","kind":"protocol","status":"verified","source":"Documentation/Program/UC3_preregistration.json"},
    {"id":"uc3-kernel","kind":"code","status":"verified","source":"Tools/local_growth_candidate.py"},
    {"id":"uc3-observer","kind":"code","status":"verified","source":"Tools/local_growth_observer.py"},
    {"id":"uc3-runner","kind":"code","status":"verified","source":"Tools/run_local_growth_candidate.py"},
    {"id":"uc3-kernel-tests","kind":"test","status":"verified","source":"tests/test_local_growth_candidate.py"},
    {"id":"uc3-observer-tests","kind":"test","status":"verified","source":"tests/test_local_growth_observer.py"},
    {"id":"uc3-runner-tests","kind":"test","status":"verified","source":"tests/test_local_growth_runner.py"},
    {"id":"uc3-qualification","kind":"report","status":"verified","source":"Documentation/Program/UC3_qualification.md"},
    {"id":"uc3-calibration","kind":"result","status":"measured","source":"Documentation/Program/UC3_calibration.json"},
    {"id":"uc3-calibration-initial","kind":"data","status":"measured","source":"Documentation/Program/UC3_calibration_initial.json"},
    {"id":"uc3-calibration-events","kind":"data","status":"measured","source":"Documentation/Program/UC3_calibration_events.csv"},
    {"id":"uc3-calibration-frames","kind":"data","status":"measured","source":"Documentation/Program/UC3_calibration_frames.csv"},
    {"id":"uc3-calibration-summary","kind":"data","status":"measured","source":"Documentation/Program/UC3_calibration_summary.csv"},
    {"id":"uc3-calibration-observations","kind":"data","status":"measured","source":"Documentation/Program/UC3_calibration_observations.json"},
    {"id":"uc3-candidate","kind":"result","status":"measured","source":"Documentation/Program/UC3_candidate.json"},
    {"id":"uc3-candidate-initial","kind":"data","status":"measured","source":"Documentation/Program/UC3_candidate_initial.json"},
    {"id":"uc3-candidate-events","kind":"data","status":"measured","source":"Documentation/Program/UC3_candidate_events.csv"},
    {"id":"uc3-candidate-frames","kind":"data","status":"measured","source":"Documentation/Program/UC3_candidate_frames.csv"},
    {"id":"uc3-candidate-summary","kind":"data","status":"measured","source":"Documentation/Program/UC3_candidate_summary.csv"},
    {"id":"uc3-candidate-observations","kind":"data","status":"measured","source":"Documentation/Program/UC3_candidate_observations.json"},
    {"id":"uc3-report","kind":"report","status":"measured","source":"Documentation/Program/UC3_report.md"},
    {"id":"uc3-exposure-limit","kind":"limitation","status":"measured","source":"Documentation/Program/UC3_report.md","anchor":"kandidat-vekst-uten-vedvarende-aktivitet"},
    {"id":"uc3-next-decision","kind":"protocol","status":"planned","source":"Documentation/Program/UC3_report.md","anchor":"resultat-og-beslutning"},
    {"id":"uc3-query-gate","kind":"limitation","status":"blocked","source":"Documentation/Program/UC3_report.md","anchor":"publiseringsgrense"}
  ],
  "edges": [
    {"source":"uc3-plan","target":"uc2-report","relation":"derived_from"},
    {"source":"uc3-plan","target":"uc3-scope","relation":"limited_by"},
    {"source":"uc3-protocol","target":"uc3-plan","relation":"implements"},
    {"source":"uc3-kernel","target":"uc3-plan","relation":"implements"},
    {"source":"uc3-observer","target":"uc3-plan","relation":"implements"},
    {"source":"uc3-runner","target":"uc3-protocol","relation":"implements"},
    {"source":"uc3-kernel-tests","target":"uc3-kernel","relation":"tests"},
    {"source":"uc3-observer-tests","target":"uc3-observer","relation":"tests"},
    {"source":"uc3-runner-tests","target":"uc3-runner","relation":"tests"},
    {"source":"uc3-qualification","target":"uc3-kernel-tests","relation":"reports"},
    {"source":"uc3-qualification","target":"uc3-observer-tests","relation":"reports"},
    {"source":"uc3-qualification","target":"uc3-runner-tests","relation":"reports"},
    {"source":"uc3-calibration","target":"uc3-observer","relation":"calibrates"},
    {"source":"uc3-calibration","target":"uc3-runner","relation":"executed_with"},
    {"source":"uc3-calibration","target":"uc3-calibration-summary","relation":"derived_from"},
    {"source":"uc3-calibration-summary","target":"uc3-calibration-observations","relation":"derived_from"},
    {"source":"uc3-calibration-observations","target":"uc3-calibration-frames","relation":"derived_from"},
    {"source":"uc3-calibration-observations","target":"uc3-calibration-events","relation":"derived_from"},
    {"source":"uc3-calibration-events","target":"uc3-calibration-initial","relation":"derived_from"},
    {"source":"uc3-candidate","target":"uc3-protocol","relation":"derived_from"},
    {"source":"uc3-candidate","target":"uc3-calibration","relation":"assumes"},
    {"source":"uc3-candidate","target":"uc3-kernel","relation":"executed_with"},
    {"source":"uc3-candidate","target":"uc3-runner","relation":"executed_with"},
    {"source":"uc3-candidate","target":"uc3-candidate-summary","relation":"derived_from"},
    {"source":"uc3-candidate-summary","target":"uc3-candidate-observations","relation":"derived_from"},
    {"source":"uc3-candidate-observations","target":"uc3-candidate-frames","relation":"derived_from"},
    {"source":"uc3-candidate-observations","target":"uc3-candidate-events","relation":"derived_from"},
    {"source":"uc3-candidate-events","target":"uc3-candidate-initial","relation":"derived_from"},
    {"source":"uc3-candidate-events","target":"uc3-kernel","relation":"executed_with"},
    {"source":"uc3-report","target":"uc3-candidate","relation":"reports"},
    {"source":"uc3-report","target":"uc3-calibration","relation":"reports"},
    {"source":"uc3-report","target":"uc3-qualification","relation":"reports"},
    {"source":"uc3-report","target":"uc3-exposure-limit","relation":"limited_by"},
    {"source":"uc3-report","target":"uc3-scope","relation":"limited_by"},
    {"source":"uc3-report","target":"uc3-query-gate","relation":"limited_by"},
    {"source":"uc3-next-decision","target":"uc3-candidate","relation":"derived_from"},
    {"source":"uc3-next-decision","target":"uc3-exposure-limit","relation":"limited_by"}
  ]
}
