experiment_id: EXP-CALM-1
title: "CALM controls <-> PoC gap-matrix crosswalk"
hypothesis: H-HG-1
channel: djat-poc-hypergraph-20260716
status: designed

premise: >
  Every CALM control in the incident-response-fabric architecture cites a tm: anchor.
  If a control cannot be traced to a Gap Analysis row AND a PoC evidence-property
  clause, it is a machine-detectable gap.

inputs:
  calm_architecture: ../architecture/incident-response-fabric.calm.json
  gap_matrix: ../../hypergraph-domain/registry/cross-domain/data/gap-analysis-matrix.v1.json
  standard_sections: ../../canon/standard-sections.v1.yaml
  anchor_registry: ../../hypergraph-domain/registry/external-names.yaml

method:
  - "Extract every control.requirements[].requirement-url from the CALM architecture."
  - "Resolve each tm: slug against external-names.yaml (must exist)."
  - "Join to gap-analysis-matrix rows by anchor."
  - "Join to standard-sections clauses tagged evidence-property or the domain clause."
  - "Emit unmatched controls as candidate gaps."

metrics:
  - name: control_resolution_rate
    target: ">= 0.90"
  - name: candidate_gaps
    target: "enumerated with anchor + reason"

success_criteria: >
  >=90% of CALM controls resolve to both a gap-matrix row and a standard clause;
  remaining controls are enumerated as candidate gaps with their tm: anchor.

pathways:
  - Hypergraph.Standard.AnchorRegister@v1
provenance:
  trust_key_dimension: "calm_node + standard_anchor"
