{
  "protocols": [
    {
      "authority_boundary": "Exploratory manufactured protocol evidence only; no coaching, clinical, design, causal, population, collection, or claim-promotion authority.",
      "companion_issue": 4036,
      "evidence": [
        {
          "availability": "public",
          "evidence_id": "evidence-active-impedance-review",
          "evidence_origin": "manufactured-synthetic",
          "kind": "evidence-review",
          "path": "models/active-impedance-identification.qmd",
          "reviewed_by": "AffineDrift issue #4036 protected review",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-active-impedance-001",
          "sha256": "ac974e730dab6eea8430634c4ec2642781082d9828c853046dc3918595b6f51d",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-active-impedance-schema",
          "evidence_origin": "manufactured-synthetic",
          "kind": "schema-validation",
          "path": "schemas/research-protocol-readiness-v1.schema.json",
          "reviewed_by": "AffineDrift issue #4041 executable contract",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-active-impedance-001",
          "sha256": "8462a0c2d2811a72a78e6cb114af5748c58498a18c45986b3ed78abba80581d9",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-active-impedance-dry-run",
          "evidence_origin": "manufactured-synthetic",
          "kind": "synthetic-dry-run",
          "path": "data/research_protocols/manufactured_dry_runs.json",
          "reviewed_by": "AffineDrift issue #4041 deterministic dry run",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-active-impedance-001",
          "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa",
          "status": "verified"
        }
      ],
      "evidence_origin": "manufactured-synthetic",
      "history": [
        {
          "evidence_ids": [
            "evidence-active-impedance-review"
          ],
          "from": "concept",
          "on": "2026-08-29",
          "rationale": "Exact reviewed route evidence and authority boundaries are joined.",
          "to": "evidence-reviewed"
        },
        {
          "evidence_ids": [
            "evidence-active-impedance-schema",
            "evidence-active-impedance-dry-run"
          ],
          "from": "evidence-reviewed",
          "on": "2026-08-29",
          "rationale": "The strict schema and adverse manufactured dry run validate mechanics only.",
          "to": "simulation-ready"
        }
      ],
      "links": {
        "calculation_artifacts": [
          {
            "path": "src/affine_control/impedance_result_fixtures.py",
            "role": "calculation",
            "route_audit_id": "ad-route-eb36645ba003",
            "sha256": "c9341999dd8b6bcbae9bdc6b2bf54c3c83494a2d91464825d574022dc7edbec5",
            "source_revision": "544273a337dd7fbf0236b3a8b95e26b5d88c06cb"
          }
        ],
        "claim_ids": [],
        "claim_link_next_gate": "Register only bounded claims through the canonical claim authority.",
        "claim_link_status": "unavailable",
        "critique_ids": [],
        "critique_link_next_gate": "Register critiques through the canonical adjudication ledger.",
        "critique_link_status": "unavailable",
        "datasets": [
          {
            "availability": "public",
            "evidence_origin": "manufactured-synthetic",
            "path": "data/research_protocols/manufactured_dry_runs.json",
            "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa"
          }
        ],
        "route_audits": [
          {
            "audit_id": "ad-route-eb36645ba003",
            "route": "/models/active-impedance-identification.html"
          }
        ],
        "validation_release": {
          "next_gate": "Obtain an immutable verified #4042 release reference.",
          "status": "unavailable"
        },
        "workflow_artifacts": [
          {
            "path": "src/affine_control/impedance_protocol.py",
            "role": "workflow",
            "route_audit_id": "ad-route-eb36645ba003",
            "sha256": "35f36cd1c67f357c8b8acadcfc16509720fe5e8bc5702a2fb32ecdf6e2c7650a",
            "source_revision": "544273a337dd7fbf0236b3a8b95e26b5d88c06cb"
          }
        ]
      },
      "owner": "AffineDrift issue #4041 readiness library",
      "participant_scope": "human",
      "promotion_attempts": [
        {
          "attempt_id": "attempt-active-impedance-pilot",
          "evidence_ids": [],
          "on": "2026-08-29",
          "outcome": "rejected",
          "rationale": "Qualified measurement, calibration, risk, power, and governance evidence are unavailable.",
          "target": "pilot-ready"
        }
      ],
      "protocol_id": "ad-protocol-active-impedance-001",
      "protocol_revision": "42ddfc356fd6037605e874f751e7d34a17edb83b3a86d33ea2312311c8a64aa4",
      "record_revision": "3e15a0b193729f1421a842e29b773b6dcc84664cef5a43bb66a02f78671da9f2",
      "specification": {
        "analysis": {
          "deviation_policy": "Append deviations before analysis and create a new revision after a locked change.",
          "exclusion_rules": [
            "Reject undeclared frames, units, calibration, or provenance",
            "Do not remove adverse or null outcomes post hoc"
          ],
          "falsifiers": [
            "A manufactured negative or null case is reported as confirmation",
            "A required gate is satisfied by modeled evidence outside its allowed scope"
          ],
          "null_result_policy": "Retain negative, null, and unavailable outcomes in every generated view.",
          "power_plan": "Unavailable until a pilot supplies a justified variance or precision basis.",
          "promotion_criteria": [
            "Meet every target-state gate",
            "Obtain independent #4042 release evidence before publication",
            "Preserve claim, critique, and route-audit joins"
          ],
          "uncertainty_plan": "Propagate declared model, parameter, measurement, event-time, and sampling uncertainty; unavailable components remain unavailable.",
          "workflow_path": "src/affine_control/impedance_protocol.py"
        },
        "calibrations": [
          {
            "calibration_id": "cal-active-impedance",
            "plan": "Freeze traceability, range, resolution, synchronization, drift, and acceptance limits before pilot use.",
            "status": "planned"
          }
        ],
        "data_dictionary": {
          "path": "data/research_protocols/data_dictionary.json",
          "sha256": "a39b4ee56f9ecee321f2d2fe1612b351c201e1c813aaf258f99d6e087d4a1720"
        },
        "estimands": [
          {
            "contrast": "planned mechanical perturbation",
            "description": "stiffness, damping, and residual diagnostics",
            "estimand_id": "est-active-impedance",
            "outcome": "stiffness, damping, and residual diagnostics",
            "population": "Future eligible participants under approval"
          }
        ],
        "governance": {
          "animal_approval_required": false,
          "consent": "Not applicable to manufactured data; human consent remains unavailable.",
          "ethics": "Human review is required before pilot or collection.",
          "human_approval_required": true,
          "license": "Manufactured fixture is repository-licensed; measured-data rights are unavailable.",
          "privacy": "No participant data are present; a data-minimization and access plan is required before collection.",
          "private_data_approval_required": false
        },
        "hypotheses": [
          {
            "direction": "two-sided",
            "falsifier": "The locked manufactured adverse or null case is promoted as support.",
            "hypothesis_id": "hyp-active-impedance",
            "null_handling": "Retain and report negative, null, and unavailable outcomes.",
            "statement": "The declared analysis can distinguish stiffness, damping, and residual diagnostics from its manufactured null case."
          }
        ],
        "intervention_exposure": {
          "comparator": "Locked declared baseline",
          "description": "planned mechanical perturbation",
          "type": "modeled-perturbation"
        },
        "measurements": [
          {
            "calibration_id": "cal-active-impedance",
            "frame": "declared segment and perturbation frames",
            "name": "displacement, force, activation, and response",
            "quantity_class": "manufactured-synthetic",
            "unit": "m, N, and normalized activation"
          }
        ],
        "population": {
          "authority": "No population authority; no participant sample is present.",
          "exclusion": [
            "Undeclared frame, unit, calibration, or provenance"
          ],
          "inclusion": [
            "Meets a future protocol-specific eligibility contract"
          ],
          "sampling_frame": "Unavailable; manufactured dry run only",
          "target_population": "Future consenting adult golfers under separate approval"
        },
        "question": "Can declared perturbations distinguish active impedance from modeled passive response?"
      },
      "state": "simulation-ready",
      "title": "Active Impedance Identification",
      "unavailable_boundaries": [
        "Measured participant and external-site evidence",
        "Qualified instrumentation, ethics, consent, privacy, and data licenses",
        "Independent #4042 validation and publication release"
      ]
    },
    {
      "authority_boundary": "Exploratory manufactured protocol evidence only; no coaching, clinical, design, causal, population, collection, or claim-promotion authority.",
      "companion_issue": 4035,
      "evidence": [
        {
          "availability": "public",
          "evidence_id": "evidence-bilateral-hand-wrench-review",
          "evidence_origin": "manufactured-synthetic",
          "kind": "evidence-review",
          "path": "models/bilateral-hand-wrench-validation.qmd",
          "reviewed_by": "AffineDrift issue #4035 protected review",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-bilateral-hand-wrench-001",
          "sha256": "b6931853431957c41ae78111ad73b46a56a32d8501767e85b85c001ccfd41448",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-bilateral-hand-wrench-schema",
          "evidence_origin": "manufactured-synthetic",
          "kind": "schema-validation",
          "path": "schemas/research-protocol-readiness-v1.schema.json",
          "reviewed_by": "AffineDrift issue #4041 executable contract",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-bilateral-hand-wrench-001",
          "sha256": "8462a0c2d2811a72a78e6cb114af5748c58498a18c45986b3ed78abba80581d9",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-bilateral-hand-wrench-dry-run",
          "evidence_origin": "manufactured-synthetic",
          "kind": "synthetic-dry-run",
          "path": "data/research_protocols/manufactured_dry_runs.json",
          "reviewed_by": "AffineDrift issue #4041 deterministic dry run",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-bilateral-hand-wrench-001",
          "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa",
          "status": "verified"
        }
      ],
      "evidence_origin": "manufactured-synthetic",
      "history": [
        {
          "evidence_ids": [
            "evidence-bilateral-hand-wrench-review"
          ],
          "from": "concept",
          "on": "2026-08-29",
          "rationale": "Exact reviewed route evidence and authority boundaries are joined.",
          "to": "evidence-reviewed"
        },
        {
          "evidence_ids": [
            "evidence-bilateral-hand-wrench-schema",
            "evidence-bilateral-hand-wrench-dry-run"
          ],
          "from": "evidence-reviewed",
          "on": "2026-08-29",
          "rationale": "The strict schema and adverse manufactured dry run validate mechanics only.",
          "to": "simulation-ready"
        }
      ],
      "links": {
        "calculation_artifacts": [
          {
            "path": "src/affine_control/hand_wrench_fixtures.py",
            "role": "calculation",
            "route_audit_id": "ad-route-5602bed13ca4",
            "sha256": "6af72ab38fd868321596160b7b04cdc811d92437dc2b126f014ee0995f3fb36b",
            "source_revision": "8d0649f9fb5da9c65364f76161abe22379dcded3"
          }
        ],
        "claim_ids": [],
        "claim_link_next_gate": "Register only bounded claims through the canonical claim authority.",
        "claim_link_status": "unavailable",
        "critique_ids": [],
        "critique_link_next_gate": "Register critiques through the canonical adjudication ledger.",
        "critique_link_status": "unavailable",
        "datasets": [
          {
            "availability": "public",
            "evidence_origin": "manufactured-synthetic",
            "path": "data/research_protocols/manufactured_dry_runs.json",
            "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa"
          }
        ],
        "route_audits": [
          {
            "audit_id": "ad-route-5602bed13ca4",
            "route": "/models/bilateral-hand-wrench-validation.html"
          }
        ],
        "validation_release": {
          "next_gate": "Obtain an immutable verified #4042 release reference.",
          "status": "unavailable"
        },
        "workflow_artifacts": [
          {
            "path": "src/affine_control/hand_wrench_protocol.py",
            "role": "workflow",
            "route_audit_id": "ad-route-5602bed13ca4",
            "sha256": "f739e54ac59ce75006609cd6a401ed23cd2ac1092d08e427877cae65957b63e7",
            "source_revision": "8d0649f9fb5da9c65364f76161abe22379dcded3"
          }
        ]
      },
      "owner": "AffineDrift issue #4041 readiness library",
      "participant_scope": "human",
      "promotion_attempts": [
        {
          "attempt_id": "attempt-bilateral-hand-wrench-pilot",
          "evidence_ids": [],
          "on": "2026-08-29",
          "outcome": "rejected",
          "rationale": "Qualified measurement, calibration, risk, power, and governance evidence are unavailable.",
          "target": "pilot-ready"
        }
      ],
      "protocol_id": "ad-protocol-bilateral-hand-wrench-001",
      "protocol_revision": "121300cd84f3e4548686a574af8cd17ecb32fbfe198ea3f8b2ec7305b58861e1",
      "record_revision": "50bf385f16c6975b490aeda3ac8825265396bc70583633352a578829bdbcc1b7",
      "specification": {
        "analysis": {
          "deviation_policy": "Append deviations before analysis and create a new revision after a locked change.",
          "exclusion_rules": [
            "Reject undeclared frames, units, calibration, or provenance",
            "Do not remove adverse or null outcomes post hoc"
          ],
          "falsifiers": [
            "A manufactured negative or null case is reported as confirmation",
            "A required gate is satisfied by modeled evidence outside its allowed scope"
          ],
          "null_result_policy": "Retain negative, null, and unavailable outcomes in every generated view.",
          "power_plan": "Unavailable until a pilot supplies a justified variance or precision basis.",
          "promotion_criteria": [
            "Meet every target-state gate",
            "Obtain independent #4042 release evidence before publication",
            "Preserve claim, critique, and route-audit joins"
          ],
          "uncertainty_plan": "Propagate declared model, parameter, measurement, event-time, and sampling uncertainty; unavailable components remain unavailable.",
          "workflow_path": "src/affine_control/hand_wrench_protocol.py"
        },
        "calibrations": [
          {
            "calibration_id": "cal-bilateral-hand-wrench",
            "plan": "Freeze traceability, range, resolution, synchronization, drift, and acceptance limits before pilot use.",
            "status": "planned"
          }
        ],
        "data_dictionary": {
          "path": "data/research_protocols/data_dictionary.json",
          "sha256": "a39b4ee56f9ecee321f2d2fe1612b351c201e1c813aaf258f99d6e087d4a1720"
        },
        "estimands": [
          {
            "contrast": "planned instrumented-grip perturbation",
            "description": "identifiability rank and wrench error",
            "estimand_id": "est-bilateral-hand-wrench",
            "outcome": "identifiability rank and wrench error",
            "population": "Future eligible participants under approval"
          }
        ],
        "governance": {
          "animal_approval_required": false,
          "consent": "Not applicable to manufactured data; human consent remains unavailable.",
          "ethics": "Human review is required before pilot or collection.",
          "human_approval_required": true,
          "license": "Manufactured fixture is repository-licensed; measured-data rights are unavailable.",
          "privacy": "No participant data are present; a data-minimization and access plan is required before collection.",
          "private_data_approval_required": false
        },
        "hypotheses": [
          {
            "direction": "two-sided",
            "falsifier": "The locked manufactured adverse or null case is promoted as support.",
            "hypothesis_id": "hyp-bilateral-hand-wrench",
            "null_handling": "Retain and report negative, null, and unavailable outcomes.",
            "statement": "The declared analysis can distinguish identifiability rank and wrench error from its manufactured null case."
          }
        ],
        "intervention_exposure": {
          "comparator": "Locked declared baseline",
          "description": "planned instrumented-grip perturbation",
          "type": "modeled-perturbation"
        },
        "measurements": [
          {
            "calibration_id": "cal-bilateral-hand-wrench",
            "frame": "declared grip frame",
            "name": "bilateral force and moment",
            "quantity_class": "manufactured-synthetic",
            "unit": "N and N m"
          }
        ],
        "population": {
          "authority": "No population authority; no participant sample is present.",
          "exclusion": [
            "Undeclared frame, unit, calibration, or provenance"
          ],
          "inclusion": [
            "Meets a future protocol-specific eligibility contract"
          ],
          "sampling_frame": "Unavailable; manufactured dry run only",
          "target_population": "Future consenting adult golfers under separate approval"
        },
        "question": "Can instrumented bilateral grip measurements identify declared hand-wrench components within calibration limits?"
      },
      "state": "simulation-ready",
      "title": "Bilateral Hand-Wrench Identification",
      "unavailable_boundaries": [
        "Measured participant and external-site evidence",
        "Qualified instrumentation, ethics, consent, privacy, and data licenses",
        "Independent #4042 validation and publication release"
      ]
    },
    {
      "authority_boundary": "Exploratory manufactured protocol evidence only; no coaching, clinical, design, causal, population, collection, or claim-promotion authority.",
      "companion_issue": 4033,
      "evidence": [
        {
          "availability": "public",
          "evidence_id": "evidence-dcr-perturbation-review",
          "evidence_origin": "analytical",
          "kind": "evidence-review",
          "path": "articles/controllability-drift-ratio.qmd",
          "reviewed_by": "AffineDrift issue #4033 protected review",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-dcr-perturbation-001",
          "sha256": "7c71f1715a3cfc5d21153cc9d954e85815ee3116a7c1dd8a375a1908d9554724",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-dcr-perturbation-schema",
          "evidence_origin": "manufactured-synthetic",
          "kind": "schema-validation",
          "path": "schemas/research-protocol-readiness-v1.schema.json",
          "reviewed_by": "AffineDrift issue #4041 executable contract",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-dcr-perturbation-001",
          "sha256": "8462a0c2d2811a72a78e6cb114af5748c58498a18c45986b3ed78abba80581d9",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-dcr-perturbation-dry-run",
          "evidence_origin": "manufactured-synthetic",
          "kind": "synthetic-dry-run",
          "path": "data/research_protocols/manufactured_dry_runs.json",
          "reviewed_by": "AffineDrift issue #4041 deterministic dry run",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-dcr-perturbation-001",
          "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa",
          "status": "verified"
        }
      ],
      "evidence_origin": "analytical",
      "history": [
        {
          "evidence_ids": [
            "evidence-dcr-perturbation-review"
          ],
          "from": "concept",
          "on": "2026-08-29",
          "rationale": "Exact reviewed route evidence and authority boundaries are joined.",
          "to": "evidence-reviewed"
        },
        {
          "evidence_ids": [
            "evidence-dcr-perturbation-schema",
            "evidence-dcr-perturbation-dry-run"
          ],
          "from": "evidence-reviewed",
          "on": "2026-08-29",
          "rationale": "The strict schema and adverse manufactured dry run validate mechanics only.",
          "to": "simulation-ready"
        }
      ],
      "links": {
        "calculation_artifacts": [
          {
            "path": "tests/test_scientific_trust_metadata.py",
            "role": "calculation",
            "route_audit_id": "ad-route-cb2afdfef800",
            "sha256": "d91739ab6f8dd35e7cac38ae46e50b5c82508883b0be313a0cbbbb07a30dc58c",
            "source_revision": "48026454cdd3e07b3ce489d288efcb9295417b10"
          }
        ],
        "claim_ids": [
          "ad-dcr-001"
        ],
        "claim_link_next_gate": "Register only bounded claims through the canonical claim authority.",
        "claim_link_status": "linked",
        "critique_ids": [
          "crit-dimensional-inconsistency-dcr",
          "crit-lie-bracket-formalism-overreach",
          "crit-normative-ambiguity-drift",
          "crit-planar-dcr-blindness",
          "crit-precision-gross-control"
        ],
        "critique_link_next_gate": "Register critiques through the canonical adjudication ledger.",
        "critique_link_status": "linked",
        "datasets": [
          {
            "availability": "public",
            "evidence_origin": "manufactured-synthetic",
            "path": "data/research_protocols/manufactured_dry_runs.json",
            "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa"
          }
        ],
        "route_audits": [
          {
            "audit_id": "ad-route-cb2afdfef800",
            "route": "/articles/controllability-drift-ratio.html"
          }
        ],
        "validation_release": {
          "next_gate": "Obtain an immutable verified #4042 release reference.",
          "status": "unavailable"
        },
        "workflow_artifacts": [
          {
            "path": "tests/test_dcr_reachability_contract.py",
            "role": "workflow",
            "route_audit_id": "ad-route-cb2afdfef800",
            "sha256": "28a7189217472c7dfb54aa56f8b6d2a6831691a7fa30de28128719c83f5efbde",
            "source_revision": "48026454cdd3e07b3ce489d288efcb9295417b10"
          }
        ]
      },
      "owner": "AffineDrift issue #4041 readiness library",
      "participant_scope": "none",
      "promotion_attempts": [
        {
          "attempt_id": "attempt-dcr-perturbation-pilot",
          "evidence_ids": [],
          "on": "2026-08-29",
          "outcome": "rejected",
          "rationale": "Qualified measurement, calibration, risk, power, and governance evidence are unavailable.",
          "target": "pilot-ready"
        }
      ],
      "protocol_id": "ad-protocol-dcr-perturbation-001",
      "protocol_revision": "d773ee332f1af1d3068fc60a3fedec174b3fbe70003cec754fae3b8004032495",
      "record_revision": "f9a5ae5118e0481694b0dba65a62bcc5fcccae269bdc9411aebd7137535e77f3",
      "specification": {
        "analysis": {
          "deviation_policy": "Append deviations before analysis and create a new revision after a locked change.",
          "exclusion_rules": [
            "Reject undeclared frames, units, calibration, or provenance",
            "Do not remove adverse or null outcomes post hoc"
          ],
          "falsifiers": [
            "A manufactured negative or null case is reported as confirmation",
            "A required gate is satisfied by modeled evidence outside its allowed scope"
          ],
          "null_result_policy": "Retain negative, null, and unavailable outcomes in every generated view.",
          "power_plan": "Unavailable until a pilot supplies a justified variance or precision basis.",
          "promotion_criteria": [
            "Meet every target-state gate",
            "Obtain independent #4042 release evidence before publication",
            "Preserve claim, critique, and route-audit joins"
          ],
          "uncertainty_plan": "Propagate declared model, parameter, measurement, event-time, and sampling uncertainty; unavailable components remain unavailable.",
          "workflow_path": "tests/test_dcr_reachability_contract.py"
        },
        "calibrations": [
          {
            "calibration_id": "cal-dcr-perturbation",
            "plan": "Freeze traceability, range, resolution, synchronization, drift, and acceptance limits before pilot use.",
            "status": "planned"
          }
        ],
        "data_dictionary": {
          "path": "data/research_protocols/data_dictionary.json",
          "sha256": "a39b4ee56f9ecee321f2d2fe1612b351c201e1c813aaf258f99d6e087d4a1720"
        },
        "estimands": [
          {
            "contrast": "modeled bounded input perturbation",
            "description": "reachable-set width and event-state sensitivity",
            "estimand_id": "est-dcr-perturbation",
            "outcome": "reachable-set width and event-state sensitivity",
            "population": "Declared modeled systems only"
          }
        ],
        "governance": {
          "animal_approval_required": false,
          "consent": "No participants are in scope for the current modeled protocol.",
          "ethics": "Validator-owned participant_scope=none; no human or animal data are permitted.",
          "human_approval_required": false,
          "license": "Manufactured fixture is repository-licensed; measured-data rights are unavailable.",
          "privacy": "No participant data are present; a data-minimization and access plan is required before collection.",
          "private_data_approval_required": false
        },
        "hypotheses": [
          {
            "direction": "two-sided",
            "falsifier": "The locked manufactured adverse or null case is promoted as support.",
            "hypothesis_id": "hyp-dcr-perturbation",
            "null_handling": "Retain and report negative, null, and unavailable outcomes.",
            "statement": "The declared analysis can distinguish reachable-set width and event-state sensitivity from its manufactured null case."
          }
        ],
        "intervention_exposure": {
          "comparator": "Locked declared baseline",
          "description": "modeled bounded input perturbation",
          "type": "modeled-perturbation"
        },
        "measurements": [
          {
            "calibration_id": "cal-dcr-perturbation",
            "frame": "declared model coordinates",
            "name": "projected acceleration and event state",
            "quantity_class": "analytical",
            "unit": "declared SI units"
          }
        ],
        "population": {
          "authority": "No population authority; no participant sample is present.",
          "exclusion": [
            "Undeclared frame, unit, calibration, or provenance"
          ],
          "inclusion": [
            "Matches the declared model contract"
          ],
          "sampling_frame": "Unavailable; manufactured dry run only",
          "target_population": "Declared analytical and simulated systems"
        },
        "question": "When does a declared DCR fail to predict bounded event-time reachability?"
      },
      "state": "simulation-ready",
      "title": "DCR and Finite-Horizon Reachability",
      "unavailable_boundaries": [
        "Measured participant and external-site evidence",
        "Qualified instrumentation, ethics, consent, privacy, and data licenses",
        "Independent #4042 validation and publication release"
      ]
    },
    {
      "authority_boundary": "Exploratory manufactured protocol evidence only; no coaching, clinical, design, causal, population, collection, or claim-promotion authority.",
      "companion_issue": 4040,
      "evidence": [
        {
          "availability": "public",
          "evidence_id": "evidence-equipment-response-review",
          "evidence_origin": "manufactured-synthetic",
          "kind": "evidence-review",
          "path": "models/equipment-individual-response.qmd",
          "reviewed_by": "AffineDrift issue #4040 protected review",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-equipment-response-001",
          "sha256": "1aad7321c3420b7d8cc5b192f75d9978cb2aa2d1ccf7dd3bdc7fb9878df825de",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-equipment-response-schema",
          "evidence_origin": "manufactured-synthetic",
          "kind": "schema-validation",
          "path": "schemas/research-protocol-readiness-v1.schema.json",
          "reviewed_by": "AffineDrift issue #4041 executable contract",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-equipment-response-001",
          "sha256": "8462a0c2d2811a72a78e6cb114af5748c58498a18c45986b3ed78abba80581d9",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-equipment-response-dry-run",
          "evidence_origin": "manufactured-synthetic",
          "kind": "synthetic-dry-run",
          "path": "data/research_protocols/manufactured_dry_runs.json",
          "reviewed_by": "AffineDrift issue #4041 deterministic dry run",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-equipment-response-001",
          "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa",
          "status": "verified"
        }
      ],
      "evidence_origin": "manufactured-synthetic",
      "history": [
        {
          "evidence_ids": [
            "evidence-equipment-response-review"
          ],
          "from": "concept",
          "on": "2026-08-29",
          "rationale": "Exact reviewed route evidence and authority boundaries are joined.",
          "to": "evidence-reviewed"
        },
        {
          "evidence_ids": [
            "evidence-equipment-response-schema",
            "evidence-equipment-response-dry-run"
          ],
          "from": "evidence-reviewed",
          "on": "2026-08-29",
          "rationale": "The strict schema and adverse manufactured dry run validate mechanics only.",
          "to": "simulation-ready"
        }
      ],
      "links": {
        "calculation_artifacts": [
          {
            "path": "src/affine_control/equipment_response_fixtures.py",
            "role": "calculation",
            "route_audit_id": "ad-route-610504f8ac44",
            "sha256": "2ebbb2bea3018ba0224ab56a7aee151755348d807ad1c0cae6c31a52b216d1b7",
            "source_revision": "2ab784c58b5d58e40ed40bd04ed3c0284fd901cc"
          }
        ],
        "claim_ids": [],
        "claim_link_next_gate": "Register only bounded claims through the canonical claim authority.",
        "claim_link_status": "unavailable",
        "critique_ids": [],
        "critique_link_next_gate": "Register critiques through the canonical adjudication ledger.",
        "critique_link_status": "unavailable",
        "datasets": [
          {
            "availability": "public",
            "evidence_origin": "manufactured-synthetic",
            "path": "data/research_protocols/manufactured_dry_runs.json",
            "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa"
          }
        ],
        "route_audits": [
          {
            "audit_id": "ad-route-610504f8ac44",
            "route": "/models/equipment-individual-response.html"
          }
        ],
        "validation_release": {
          "next_gate": "Obtain an immutable verified #4042 release reference.",
          "status": "unavailable"
        },
        "workflow_artifacts": [
          {
            "path": "src/affine_control/equipment_response_analysis.py",
            "role": "workflow",
            "route_audit_id": "ad-route-610504f8ac44",
            "sha256": "b0303a954deae7ec7d26fdbc1e571adbb83d761c6a1482d9981f1e261af7a524",
            "source_revision": "2ab784c58b5d58e40ed40bd04ed3c0284fd901cc"
          }
        ]
      },
      "owner": "AffineDrift issue #4041 readiness library",
      "participant_scope": "human",
      "promotion_attempts": [
        {
          "attempt_id": "attempt-equipment-response-pilot",
          "evidence_ids": [],
          "on": "2026-08-29",
          "outcome": "rejected",
          "rationale": "Qualified measurement, calibration, risk, power, and governance evidence are unavailable.",
          "target": "pilot-ready"
        }
      ],
      "protocol_id": "ad-protocol-equipment-response-001",
      "protocol_revision": "b38d8b21d0fb23d7ae7db2d3bebee1c56e8765616bc937d892b9f23c29d72872",
      "record_revision": "1a390325a480eb9872bd54c340226f149fc0a001c85143cab8d03e5524728e71",
      "specification": {
        "analysis": {
          "deviation_policy": "Append deviations before analysis and create a new revision after a locked change.",
          "exclusion_rules": [
            "Reject undeclared frames, units, calibration, or provenance",
            "Do not remove adverse or null outcomes post hoc"
          ],
          "falsifiers": [
            "A manufactured negative or null case is reported as confirmation",
            "A required gate is satisfied by modeled evidence outside its allowed scope"
          ],
          "null_result_policy": "Retain negative, null, and unavailable outcomes in every generated view.",
          "power_plan": "Unavailable until a pilot supplies a justified variance or precision basis.",
          "promotion_criteria": [
            "Meet every target-state gate",
            "Obtain independent #4042 release evidence before publication",
            "Preserve claim, critique, and route-audit joins"
          ],
          "uncertainty_plan": "Propagate declared model, parameter, measurement, event-time, and sampling uncertainty; unavailable components remain unavailable.",
          "workflow_path": "src/affine_control/equipment_response_analysis.py"
        },
        "calibrations": [
          {
            "calibration_id": "cal-equipment-response",
            "plan": "Freeze traceability, range, resolution, synchronization, drift, and acceptance limits before pilot use.",
            "status": "planned"
          }
        ],
        "data_dictionary": {
          "path": "data/research_protocols/data_dictionary.json",
          "sha256": "a39b4ee56f9ecee321f2d2fe1612b351c201e1c813aaf258f99d6e087d4a1720"
        },
        "estimands": [
          {
            "contrast": "planned randomized equipment condition",
            "description": "individual contrast, interval, repeatability, and sensitivity",
            "estimand_id": "est-equipment-response",
            "outcome": "individual contrast, interval, repeatability, and sensitivity",
            "population": "Future eligible participants under approval"
          }
        ],
        "governance": {
          "animal_approval_required": false,
          "consent": "Not applicable to manufactured data; human consent remains unavailable.",
          "ethics": "Human review is required before pilot or collection.",
          "human_approval_required": true,
          "license": "Manufactured fixture is repository-licensed; measured-data rights are unavailable.",
          "privacy": "No participant data are present; a data-minimization and access plan is required before collection.",
          "private_data_approval_required": false
        },
        "hypotheses": [
          {
            "direction": "two-sided",
            "falsifier": "The locked manufactured adverse or null case is promoted as support.",
            "hypothesis_id": "hyp-equipment-response",
            "null_handling": "Retain and report negative, null, and unavailable outcomes.",
            "statement": "The declared analysis can distinguish individual contrast, interval, repeatability, and sensitivity from its manufactured null case."
          }
        ],
        "intervention_exposure": {
          "comparator": "Locked declared baseline",
          "description": "planned randomized equipment condition",
          "type": "modeled-perturbation"
        },
        "measurements": [
          {
            "calibration_id": "cal-equipment-response",
            "frame": "declared equipment and laboratory frames",
            "name": "equipment state, shaft response, and impact outcome",
            "quantity_class": "manufactured-synthetic",
            "unit": "declared SI and launch-monitor units"
          }
        ],
        "population": {
          "authority": "No population authority; no participant sample is present.",
          "exclusion": [
            "Undeclared frame, unit, calibration, or provenance"
          ],
          "inclusion": [
            "Meets a future protocol-specific eligibility contract"
          ],
          "sampling_frame": "Unavailable; manufactured dry run only",
          "target_population": "Future consenting adult golfers under separate approval"
        },
        "question": "Which equipment-response differences are identifiable within custody, calibration, repeated-measures, and multiplicity limits?"
      },
      "state": "simulation-ready",
      "title": "Equipment Individual-Response Validation",
      "unavailable_boundaries": [
        "Measured participant and external-site evidence",
        "Qualified instrumentation, ethics, consent, privacy, and data licenses",
        "Independent #4042 validation and publication release"
      ]
    },
    {
      "authority_boundary": "Exploratory manufactured protocol evidence only; no coaching, clinical, design, causal, population, collection, or claim-promotion authority.",
      "companion_issue": 4038,
      "evidence": [
        {
          "availability": "public",
          "evidence_id": "evidence-hybrid-impact-review",
          "evidence_origin": "modeled",
          "kind": "evidence-review",
          "path": "models/hybrid-impact-contact.qmd",
          "reviewed_by": "AffineDrift issue #4038 protected review",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-hybrid-impact-001",
          "sha256": "3098a1ee234cd447a718093218c6abca248cb42520c7b305b97a10d9782c802c",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-hybrid-impact-schema",
          "evidence_origin": "manufactured-synthetic",
          "kind": "schema-validation",
          "path": "schemas/research-protocol-readiness-v1.schema.json",
          "reviewed_by": "AffineDrift issue #4041 executable contract",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-hybrid-impact-001",
          "sha256": "8462a0c2d2811a72a78e6cb114af5748c58498a18c45986b3ed78abba80581d9",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-hybrid-impact-dry-run",
          "evidence_origin": "manufactured-synthetic",
          "kind": "synthetic-dry-run",
          "path": "data/research_protocols/manufactured_dry_runs.json",
          "reviewed_by": "AffineDrift issue #4041 deterministic dry run",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-hybrid-impact-001",
          "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa",
          "status": "verified"
        }
      ],
      "evidence_origin": "modeled",
      "history": [
        {
          "evidence_ids": [
            "evidence-hybrid-impact-review"
          ],
          "from": "concept",
          "on": "2026-08-29",
          "rationale": "Exact reviewed route evidence and authority boundaries are joined.",
          "to": "evidence-reviewed"
        },
        {
          "evidence_ids": [
            "evidence-hybrid-impact-schema",
            "evidence-hybrid-impact-dry-run"
          ],
          "from": "evidence-reviewed",
          "on": "2026-08-29",
          "rationale": "The strict schema and adverse manufactured dry run validate mechanics only.",
          "to": "simulation-ready"
        }
      ],
      "links": {
        "calculation_artifacts": [
          {
            "path": "src/affine_control/impact_contact_fixtures.py",
            "role": "calculation",
            "route_audit_id": "ad-route-cd5e133fe28e",
            "sha256": "f34775f7602830fae095d97f7dd8f9666f319304a8d5ceb5011b5d9bd95e4cc4",
            "source_revision": "8a56cebb13488106fa4d071b31b0f7d05b1d5ca8"
          }
        ],
        "claim_ids": [],
        "claim_link_next_gate": "Register only bounded claims through the canonical claim authority.",
        "claim_link_status": "unavailable",
        "critique_ids": [],
        "critique_link_next_gate": "Register critiques through the canonical adjudication ledger.",
        "critique_link_status": "unavailable",
        "datasets": [
          {
            "availability": "public",
            "evidence_origin": "manufactured-synthetic",
            "path": "data/research_protocols/manufactured_dry_runs.json",
            "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa"
          }
        ],
        "route_audits": [
          {
            "audit_id": "ad-route-cd5e133fe28e",
            "route": "/models/hybrid-impact-contact.html"
          }
        ],
        "validation_release": {
          "next_gate": "Obtain an immutable verified #4042 release reference.",
          "status": "unavailable"
        },
        "workflow_artifacts": [
          {
            "path": "src/affine_control/impact_contact_models.py",
            "role": "workflow",
            "route_audit_id": "ad-route-cd5e133fe28e",
            "sha256": "25e7fac9e33f9e6d95880daeb259c07f960bebe579a3552e606ec531391f666e",
            "source_revision": "8a56cebb13488106fa4d071b31b0f7d05b1d5ca8"
          }
        ]
      },
      "owner": "AffineDrift issue #4041 readiness library",
      "participant_scope": "none",
      "promotion_attempts": [
        {
          "attempt_id": "attempt-hybrid-impact-pilot",
          "evidence_ids": [],
          "on": "2026-08-29",
          "outcome": "rejected",
          "rationale": "Qualified measurement, calibration, risk, power, and governance evidence are unavailable.",
          "target": "pilot-ready"
        }
      ],
      "protocol_id": "ad-protocol-hybrid-impact-001",
      "protocol_revision": "446ce0af9264ae5a46052d32a1022636580ea997001a222570a6ccada257771e",
      "record_revision": "5bd087c00fb0b3f1a99d3e4834051ac244057792ea90d744c3d333180426f3e4",
      "specification": {
        "analysis": {
          "deviation_policy": "Append deviations before analysis and create a new revision after a locked change.",
          "exclusion_rules": [
            "Reject undeclared frames, units, calibration, or provenance",
            "Do not remove adverse or null outcomes post hoc"
          ],
          "falsifiers": [
            "A manufactured negative or null case is reported as confirmation",
            "A required gate is satisfied by modeled evidence outside its allowed scope"
          ],
          "null_result_policy": "Retain negative, null, and unavailable outcomes in every generated view.",
          "power_plan": "Unavailable until a pilot supplies a justified variance or precision basis.",
          "promotion_criteria": [
            "Meet every target-state gate",
            "Obtain independent #4042 release evidence before publication",
            "Preserve claim, critique, and route-audit joins"
          ],
          "uncertainty_plan": "Propagate declared model, parameter, measurement, event-time, and sampling uncertainty; unavailable components remain unavailable.",
          "workflow_path": "src/affine_control/impact_contact_models.py"
        },
        "calibrations": [
          {
            "calibration_id": "cal-hybrid-impact",
            "plan": "Freeze traceability, range, resolution, synchronization, drift, and acceptance limits before pilot use.",
            "status": "planned"
          }
        ],
        "data_dictionary": {
          "path": "data/research_protocols/data_dictionary.json",
          "sha256": "a39b4ee56f9ecee321f2d2fe1612b351c201e1c813aaf258f99d6e087d4a1720"
        },
        "estimands": [
          {
            "contrast": "modeled contact and timing perturbation",
            "description": "impulse, event-time, and post-impact sensitivity",
            "estimand_id": "est-hybrid-impact",
            "outcome": "impulse, event-time, and post-impact sensitivity",
            "population": "Declared modeled systems only"
          }
        ],
        "governance": {
          "animal_approval_required": false,
          "consent": "No participants are in scope for the current modeled protocol.",
          "ethics": "Validator-owned participant_scope=none; no human or animal data are permitted.",
          "human_approval_required": false,
          "license": "Manufactured fixture is repository-licensed; measured-data rights are unavailable.",
          "privacy": "No participant data are present; a data-minimization and access plan is required before collection.",
          "private_data_approval_required": false
        },
        "hypotheses": [
          {
            "direction": "two-sided",
            "falsifier": "The locked manufactured adverse or null case is promoted as support.",
            "hypothesis_id": "hyp-hybrid-impact",
            "null_handling": "Retain and report negative, null, and unavailable outcomes.",
            "statement": "The declared analysis can distinguish impulse, event-time, and post-impact sensitivity from its manufactured null case."
          }
        ],
        "intervention_exposure": {
          "comparator": "Locked declared baseline",
          "description": "modeled contact and timing perturbation",
          "type": "modeled-perturbation"
        },
        "measurements": [
          {
            "calibration_id": "cal-hybrid-impact",
            "frame": "declared club-ball contact frame",
            "name": "contact state, impulse, and event time",
            "quantity_class": "modeled",
            "unit": "m, m/s, N s, and s"
          }
        ],
        "population": {
          "authority": "No population authority; no participant sample is present.",
          "exclusion": [
            "Undeclared frame, unit, calibration, or provenance"
          ],
          "inclusion": [
            "Matches the declared model contract"
          ],
          "sampling_frame": "Unavailable; manufactured dry run only",
          "target_population": "Declared analytical and simulated systems"
        },
        "question": "How do contact-model and event-time choices affect declared impact outcomes?"
      },
      "state": "simulation-ready",
      "title": "Hybrid Impact and Event-Time Uncertainty",
      "unavailable_boundaries": [
        "Measured participant and external-site evidence",
        "Qualified instrumentation, ethics, consent, privacy, and data licenses",
        "Independent #4042 validation and publication release"
      ]
    },
    {
      "authority_boundary": "Exploratory manufactured protocol evidence only; no coaching, clinical, design, causal, population, collection, or claim-promotion authority.",
      "companion_issue": 4034,
      "evidence": [
        {
          "availability": "public",
          "evidence_id": "evidence-model-ladder-review",
          "evidence_origin": "modeled",
          "kind": "evidence-review",
          "path": "models/model-ladder.qmd",
          "reviewed_by": "AffineDrift issue #4034 protected review",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-model-ladder-001",
          "sha256": "b0ad50d2e7f2101702cb266e24a7d2216522f3d47946188e1a8234b911c5e904",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-model-ladder-schema",
          "evidence_origin": "manufactured-synthetic",
          "kind": "schema-validation",
          "path": "schemas/research-protocol-readiness-v1.schema.json",
          "reviewed_by": "AffineDrift issue #4041 executable contract",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-model-ladder-001",
          "sha256": "8462a0c2d2811a72a78e6cb114af5748c58498a18c45986b3ed78abba80581d9",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-model-ladder-dry-run",
          "evidence_origin": "manufactured-synthetic",
          "kind": "synthetic-dry-run",
          "path": "data/research_protocols/manufactured_dry_runs.json",
          "reviewed_by": "AffineDrift issue #4041 deterministic dry run",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-model-ladder-001",
          "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa",
          "status": "verified"
        }
      ],
      "evidence_origin": "modeled",
      "history": [
        {
          "evidence_ids": [
            "evidence-model-ladder-review"
          ],
          "from": "concept",
          "on": "2026-08-29",
          "rationale": "Exact reviewed route evidence and authority boundaries are joined.",
          "to": "evidence-reviewed"
        },
        {
          "evidence_ids": [
            "evidence-model-ladder-schema",
            "evidence-model-ladder-dry-run"
          ],
          "from": "evidence-reviewed",
          "on": "2026-08-29",
          "rationale": "The strict schema and adverse manufactured dry run validate mechanics only.",
          "to": "simulation-ready"
        }
      ],
      "links": {
        "calculation_artifacts": [
          {
            "path": "src/affine_control/model_ladder_fixtures.py",
            "role": "calculation",
            "route_audit_id": "ad-route-25575b069ccb",
            "sha256": "0b700e4d9e32e3ccf19c4ab4d3ff50d1e40f8b0fdc9c4495953350d4ca4a5e9d",
            "source_revision": "303bb507e795092a9e83e8f607bf5eaae394ddd6"
          }
        ],
        "claim_ids": [],
        "claim_link_next_gate": "Register only bounded claims through the canonical claim authority.",
        "claim_link_status": "unavailable",
        "critique_ids": [],
        "critique_link_next_gate": "Register critiques through the canonical adjudication ledger.",
        "critique_link_status": "unavailable",
        "datasets": [
          {
            "availability": "public",
            "evidence_origin": "manufactured-synthetic",
            "path": "data/research_protocols/manufactured_dry_runs.json",
            "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa"
          }
        ],
        "route_audits": [
          {
            "audit_id": "ad-route-25575b069ccb",
            "route": "/models/model-ladder.html"
          }
        ],
        "validation_release": {
          "next_gate": "Obtain an immutable verified #4042 release reference.",
          "status": "unavailable"
        },
        "workflow_artifacts": [
          {
            "path": "src/affine_control/model_ladder_protocol.py",
            "role": "workflow",
            "route_audit_id": "ad-route-25575b069ccb",
            "sha256": "d8c43e02d81a5a45016340a5e7d42db17ac204b60c6191dad10663ffcb650167",
            "source_revision": "303bb507e795092a9e83e8f607bf5eaae394ddd6"
          }
        ]
      },
      "owner": "AffineDrift issue #4041 readiness library",
      "participant_scope": "none",
      "promotion_attempts": [
        {
          "attempt_id": "attempt-model-ladder-pilot",
          "evidence_ids": [],
          "on": "2026-08-29",
          "outcome": "rejected",
          "rationale": "Qualified measurement, calibration, risk, power, and governance evidence are unavailable.",
          "target": "pilot-ready"
        }
      ],
      "protocol_id": "ad-protocol-model-ladder-001",
      "protocol_revision": "297d8c14a2bd50b4cb9418a25f9f78c01b7a127c66852a0732f2bd9e8c1eab38",
      "record_revision": "2759ac0c1c606a1e3f964a2fa05bfe716084ae9f4c5202c5bfa50cf2f6a64c88",
      "specification": {
        "analysis": {
          "deviation_policy": "Append deviations before analysis and create a new revision after a locked change.",
          "exclusion_rules": [
            "Reject undeclared frames, units, calibration, or provenance",
            "Do not remove adverse or null outcomes post hoc"
          ],
          "falsifiers": [
            "A manufactured negative or null case is reported as confirmation",
            "A required gate is satisfied by modeled evidence outside its allowed scope"
          ],
          "null_result_policy": "Retain negative, null, and unavailable outcomes in every generated view.",
          "power_plan": "Unavailable until a pilot supplies a justified variance or precision basis.",
          "promotion_criteria": [
            "Meet every target-state gate",
            "Obtain independent #4042 release evidence before publication",
            "Preserve claim, critique, and route-audit joins"
          ],
          "uncertainty_plan": "Propagate declared model, parameter, measurement, event-time, and sampling uncertainty; unavailable components remain unavailable.",
          "workflow_path": "src/affine_control/model_ladder_protocol.py"
        },
        "calibrations": [
          {
            "calibration_id": "cal-model-ladder",
            "plan": "Freeze traceability, range, resolution, synchronization, drift, and acceptance limits before pilot use.",
            "status": "planned"
          }
        ],
        "data_dictionary": {
          "path": "data/research_protocols/data_dictionary.json",
          "sha256": "a39b4ee56f9ecee321f2d2fe1612b351c201e1c813aaf258f99d6e087d4a1720"
        },
        "estimands": [
          {
            "contrast": "modeled rung promotion",
            "description": "cross-rung discrepancy and promotion decision",
            "estimand_id": "est-model-ladder",
            "outcome": "cross-rung discrepancy and promotion decision",
            "population": "Declared modeled systems only"
          }
        ],
        "governance": {
          "animal_approval_required": false,
          "consent": "No participants are in scope for the current modeled protocol.",
          "ethics": "Validator-owned participant_scope=none; no human or animal data are permitted.",
          "human_approval_required": false,
          "license": "Manufactured fixture is repository-licensed; measured-data rights are unavailable.",
          "privacy": "No participant data are present; a data-minimization and access plan is required before collection.",
          "private_data_approval_required": false
        },
        "hypotheses": [
          {
            "direction": "two-sided",
            "falsifier": "The locked manufactured adverse or null case is promoted as support.",
            "hypothesis_id": "hyp-model-ladder",
            "null_handling": "Retain and report negative, null, and unavailable outcomes.",
            "statement": "The declared analysis can distinguish cross-rung discrepancy and promotion decision from its manufactured null case."
          }
        ],
        "intervention_exposure": {
          "comparator": "Locked declared baseline",
          "description": "modeled rung promotion",
          "type": "modeled-perturbation"
        },
        "measurements": [
          {
            "calibration_id": "cal-model-ladder",
            "frame": "rung-specific declared frames",
            "name": "state, constraint, and shaft-response discrepancy",
            "quantity_class": "modeled",
            "unit": "declared SI units"
          }
        ],
        "population": {
          "authority": "No population authority; no participant sample is present.",
          "exclusion": [
            "Undeclared frame, unit, calibration, or provenance"
          ],
          "inclusion": [
            "Matches the declared model contract"
          ],
          "sampling_frame": "Unavailable; manufactured dry run only",
          "target_population": "Declared analytical and simulated systems"
        },
        "question": "Which declared conclusions change across planar, spatial, closed-chain, and flexible-shaft models?"
      },
      "state": "simulation-ready",
      "title": "Planar-to-Flexible-Shaft Model Ladder",
      "unavailable_boundaries": [
        "Measured participant and external-site evidence",
        "Qualified instrumentation, ethics, consent, privacy, and data licenses",
        "Independent #4042 validation and publication release"
      ]
    },
    {
      "authority_boundary": "Exploratory manufactured protocol evidence only; no coaching, clinical, design, causal, population, collection, or claim-promotion authority.",
      "companion_issue": 4037,
      "evidence": [
        {
          "availability": "public",
          "evidence_id": "evidence-neural-timing-review",
          "evidence_origin": "manufactured-synthetic",
          "kind": "evidence-review",
          "path": "models/neural-timing-feedback.qmd",
          "reviewed_by": "AffineDrift issue #4037 protected review",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-neural-timing-001",
          "sha256": "d3777a5e1ac7502a560acaeb0f0f1317068cf0a52978ee21781b8dd7730bb2c3",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-neural-timing-schema",
          "evidence_origin": "manufactured-synthetic",
          "kind": "schema-validation",
          "path": "schemas/research-protocol-readiness-v1.schema.json",
          "reviewed_by": "AffineDrift issue #4041 executable contract",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-neural-timing-001",
          "sha256": "8462a0c2d2811a72a78e6cb114af5748c58498a18c45986b3ed78abba80581d9",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-neural-timing-dry-run",
          "evidence_origin": "manufactured-synthetic",
          "kind": "synthetic-dry-run",
          "path": "data/research_protocols/manufactured_dry_runs.json",
          "reviewed_by": "AffineDrift issue #4041 deterministic dry run",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-neural-timing-001",
          "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa",
          "status": "verified"
        }
      ],
      "evidence_origin": "manufactured-synthetic",
      "history": [
        {
          "evidence_ids": [
            "evidence-neural-timing-review"
          ],
          "from": "concept",
          "on": "2026-08-29",
          "rationale": "Exact reviewed route evidence and authority boundaries are joined.",
          "to": "evidence-reviewed"
        },
        {
          "evidence_ids": [
            "evidence-neural-timing-schema",
            "evidence-neural-timing-dry-run"
          ],
          "from": "evidence-reviewed",
          "on": "2026-08-29",
          "rationale": "The strict schema and adverse manufactured dry run validate mechanics only.",
          "to": "simulation-ready"
        }
      ],
      "links": {
        "calculation_artifacts": [
          {
            "path": "src/affine_control/neural_timing_fixtures.py",
            "role": "calculation",
            "route_audit_id": "ad-route-8debf6763c2e",
            "sha256": "e4dd94e8288fd8cc4d51c30676831452810a6317a3ce0de99557982c9ee84df6",
            "source_revision": "dff3650fb1b41e721ee90a4fe060277d02cc836b"
          }
        ],
        "claim_ids": [],
        "claim_link_next_gate": "Register only bounded claims through the canonical claim authority.",
        "claim_link_status": "unavailable",
        "critique_ids": [],
        "critique_link_next_gate": "Register critiques through the canonical adjudication ledger.",
        "critique_link_status": "unavailable",
        "datasets": [
          {
            "availability": "public",
            "evidence_origin": "manufactured-synthetic",
            "path": "data/research_protocols/manufactured_dry_runs.json",
            "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa"
          }
        ],
        "route_audits": [
          {
            "audit_id": "ad-route-8debf6763c2e",
            "route": "/models/neural-timing-feedback.html"
          }
        ],
        "validation_release": {
          "next_gate": "Obtain an immutable verified #4042 release reference.",
          "status": "unavailable"
        },
        "workflow_artifacts": [
          {
            "path": "src/affine_control/neural_timing_analysis.py",
            "role": "workflow",
            "route_audit_id": "ad-route-8debf6763c2e",
            "sha256": "3efa4477aef2974b1e8d57deb26be44242f54f05ab30388131cbf217a06fe123",
            "source_revision": "dff3650fb1b41e721ee90a4fe060277d02cc836b"
          }
        ]
      },
      "owner": "AffineDrift issue #4041 readiness library",
      "participant_scope": "human",
      "promotion_attempts": [
        {
          "attempt_id": "attempt-neural-timing-pilot",
          "evidence_ids": [],
          "on": "2026-08-29",
          "outcome": "rejected",
          "rationale": "Qualified measurement, calibration, risk, power, and governance evidence are unavailable.",
          "target": "pilot-ready"
        }
      ],
      "protocol_id": "ad-protocol-neural-timing-001",
      "protocol_revision": "58d112830f3718ff837ffe52d423eee025394fcfc7aa068a92dcb38465d96dc0",
      "record_revision": "be84d5bc3e8c52a590e67b50d0cc299bceca82e68bc95c206ed23cdc1480338e",
      "specification": {
        "analysis": {
          "deviation_policy": "Append deviations before analysis and create a new revision after a locked change.",
          "exclusion_rules": [
            "Reject undeclared frames, units, calibration, or provenance",
            "Do not remove adverse or null outcomes post hoc"
          ],
          "falsifiers": [
            "A manufactured negative or null case is reported as confirmation",
            "A required gate is satisfied by modeled evidence outside its allowed scope"
          ],
          "null_result_policy": "Retain negative, null, and unavailable outcomes in every generated view.",
          "power_plan": "Unavailable until a pilot supplies a justified variance or precision basis.",
          "promotion_criteria": [
            "Meet every target-state gate",
            "Obtain independent #4042 release evidence before publication",
            "Preserve claim, critique, and route-audit joins"
          ],
          "uncertainty_plan": "Propagate declared model, parameter, measurement, event-time, and sampling uncertainty; unavailable components remain unavailable.",
          "workflow_path": "src/affine_control/neural_timing_analysis.py"
        },
        "calibrations": [
          {
            "calibration_id": "cal-neural-timing",
            "plan": "Freeze traceability, range, resolution, synchronization, drift, and acceptance limits before pilot use.",
            "status": "planned"
          }
        ],
        "data_dictionary": {
          "path": "data/research_protocols/data_dictionary.json",
          "sha256": "a39b4ee56f9ecee321f2d2fe1612b351c201e1c813aaf258f99d6e087d4a1720"
        },
        "estimands": [
          {
            "contrast": "planned sensory or mechanical perturbation",
            "description": "latency-window and response-contrast estimates",
            "estimand_id": "est-neural-timing",
            "outcome": "latency-window and response-contrast estimates",
            "population": "Future eligible participants under approval"
          }
        ],
        "governance": {
          "animal_approval_required": false,
          "consent": "Not applicable to manufactured data; human consent remains unavailable.",
          "ethics": "Human review is required before pilot or collection.",
          "human_approval_required": true,
          "license": "Manufactured fixture is repository-licensed; measured-data rights are unavailable.",
          "privacy": "No participant data are present; a data-minimization and access plan is required before collection.",
          "private_data_approval_required": false
        },
        "hypotheses": [
          {
            "direction": "two-sided",
            "falsifier": "The locked manufactured adverse or null case is promoted as support.",
            "hypothesis_id": "hyp-neural-timing",
            "null_handling": "Retain and report negative, null, and unavailable outcomes.",
            "statement": "The declared analysis can distinguish latency-window and response-contrast estimates from its manufactured null case."
          }
        ],
        "intervention_exposure": {
          "comparator": "Locked declared baseline",
          "description": "planned sensory or mechanical perturbation",
          "type": "modeled-perturbation"
        },
        "measurements": [
          {
            "calibration_id": "cal-neural-timing",
            "frame": "declared event-aligned frames",
            "name": "event time, kinematics, and activation",
            "quantity_class": "manufactured-synthetic",
            "unit": "s, rad, and normalized activation"
          }
        ],
        "population": {
          "authority": "No population authority; no participant sample is present.",
          "exclusion": [
            "Undeclared frame, unit, calibration, or provenance"
          ],
          "inclusion": [
            "Meets a future protocol-specific eligibility contract"
          ],
          "sampling_frame": "Unavailable; manufactured dry run only",
          "target_population": "Future consenting adult golfers under separate approval"
        },
        "question": "Which timing hypotheses remain distinguishable under declared sensory and mechanical perturbations?"
      },
      "state": "simulation-ready",
      "title": "Neural Timing and Feedback Perturbation",
      "unavailable_boundaries": [
        "Measured participant and external-site evidence",
        "Qualified instrumentation, ethics, consent, privacy, and data licenses",
        "Independent #4042 validation and publication release"
      ]
    },
    {
      "authority_boundary": "Exploratory manufactured protocol evidence only; no coaching, clinical, design, causal, population, collection, or claim-promotion authority.",
      "companion_issue": 4039,
      "evidence": [
        {
          "availability": "public",
          "evidence_id": "evidence-population-generalization-review",
          "evidence_origin": "manufactured-synthetic",
          "kind": "evidence-review",
          "path": "models/population-generalization.qmd",
          "reviewed_by": "AffineDrift issue #4039 protected review",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-population-generalization-001",
          "sha256": "7c1cd5e2ab1d1a9db4d588c0421822c172ebcce67a81bb560fe28bc041ce2f54",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-population-generalization-schema",
          "evidence_origin": "manufactured-synthetic",
          "kind": "schema-validation",
          "path": "schemas/research-protocol-readiness-v1.schema.json",
          "reviewed_by": "AffineDrift issue #4041 executable contract",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-population-generalization-001",
          "sha256": "8462a0c2d2811a72a78e6cb114af5748c58498a18c45986b3ed78abba80581d9",
          "status": "verified"
        },
        {
          "availability": "public",
          "evidence_id": "evidence-population-generalization-dry-run",
          "evidence_origin": "manufactured-synthetic",
          "kind": "synthetic-dry-run",
          "path": "data/research_protocols/manufactured_dry_runs.json",
          "reviewed_by": "AffineDrift issue #4041 deterministic dry run",
          "reviewed_on": "2026-08-29",
          "scope": "ad-protocol-population-generalization-001",
          "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa",
          "status": "verified"
        }
      ],
      "evidence_origin": "manufactured-synthetic",
      "history": [
        {
          "evidence_ids": [
            "evidence-population-generalization-review"
          ],
          "from": "concept",
          "on": "2026-08-29",
          "rationale": "Exact reviewed route evidence and authority boundaries are joined.",
          "to": "evidence-reviewed"
        },
        {
          "evidence_ids": [
            "evidence-population-generalization-schema",
            "evidence-population-generalization-dry-run"
          ],
          "from": "evidence-reviewed",
          "on": "2026-08-29",
          "rationale": "The strict schema and adverse manufactured dry run validate mechanics only.",
          "to": "simulation-ready"
        }
      ],
      "links": {
        "calculation_artifacts": [
          {
            "path": "src/affine_control/population_generalization_fixtures.py",
            "role": "calculation",
            "route_audit_id": "ad-route-b7d4c6ec440c",
            "sha256": "3f48af6b362bc6b6f21a60c897849792ed7b02d2ee9405569cde20155dc22d40",
            "source_revision": "0fb7a0ded1f75c955e2cc34632c6e3745674aa00"
          }
        ],
        "claim_ids": [],
        "claim_link_next_gate": "Register only bounded claims through the canonical claim authority.",
        "claim_link_status": "unavailable",
        "critique_ids": [],
        "critique_link_next_gate": "Register critiques through the canonical adjudication ledger.",
        "critique_link_status": "unavailable",
        "datasets": [
          {
            "availability": "public",
            "evidence_origin": "manufactured-synthetic",
            "path": "data/research_protocols/manufactured_dry_runs.json",
            "sha256": "3ac1d4948f85795c4502902a54badda8ef6195dbcae94bf6d6685e1f451bf4aa"
          }
        ],
        "route_audits": [
          {
            "audit_id": "ad-route-b7d4c6ec440c",
            "route": "/models/population-generalization.html"
          }
        ],
        "validation_release": {
          "next_gate": "Obtain an immutable verified #4042 release reference.",
          "status": "unavailable"
        },
        "workflow_artifacts": [
          {
            "path": "src/affine_control/population_generalization.py",
            "role": "workflow",
            "route_audit_id": "ad-route-b7d4c6ec440c",
            "sha256": "99b918a4afe09711f5dbd9ee3d2296fb71b188f8dd93551142d1f36e2cb0cd27",
            "source_revision": "0fb7a0ded1f75c955e2cc34632c6e3745674aa00"
          }
        ]
      },
      "owner": "AffineDrift issue #4041 readiness library",
      "participant_scope": "human",
      "promotion_attempts": [
        {
          "attempt_id": "attempt-population-generalization-pilot",
          "evidence_ids": [],
          "on": "2026-08-29",
          "outcome": "rejected",
          "rationale": "Qualified measurement, calibration, risk, power, and governance evidence are unavailable.",
          "target": "pilot-ready"
        }
      ],
      "protocol_id": "ad-protocol-population-generalization-001",
      "protocol_revision": "c0863f70e49c6d09b7cb2eca569fac40b1a15bf3e7f6b3d8573ef3c151d9f74d",
      "record_revision": "18410861508317989f505806031c0b84b5515d026606207e3c4b315d6309d706",
      "specification": {
        "analysis": {
          "deviation_policy": "Append deviations before analysis and create a new revision after a locked change.",
          "exclusion_rules": [
            "Reject undeclared frames, units, calibration, or provenance",
            "Do not remove adverse or null outcomes post hoc"
          ],
          "falsifiers": [
            "A manufactured negative or null case is reported as confirmation",
            "A required gate is satisfied by modeled evidence outside its allowed scope"
          ],
          "null_result_policy": "Retain negative, null, and unavailable outcomes in every generated view.",
          "power_plan": "Unavailable until a pilot supplies a justified variance or precision basis.",
          "promotion_criteria": [
            "Meet every target-state gate",
            "Obtain independent #4042 release evidence before publication",
            "Preserve claim, critique, and route-audit joins"
          ],
          "uncertainty_plan": "Propagate declared model, parameter, measurement, event-time, and sampling uncertainty; unavailable components remain unavailable.",
          "workflow_path": "src/affine_control/population_generalization.py"
        },
        "calibrations": [
          {
            "calibration_id": "cal-population-generalization",
            "plan": "Freeze traceability, range, resolution, synchronization, drift, and acceptance limits before pilot use.",
            "status": "planned"
          }
        ],
        "data_dictionary": {
          "path": "data/research_protocols/data_dictionary.json",
          "sha256": "a39b4ee56f9ecee321f2d2fe1612b351c201e1c813aaf258f99d6e087d4a1720"
        },
        "estimands": [
          {
            "contrast": "planned group-held-out evaluation",
            "description": "held-out error, calibration, subgroup, and transportability metrics",
            "estimand_id": "est-population-generalization",
            "outcome": "held-out error, calibration, subgroup, and transportability metrics",
            "population": "Future eligible participants under approval"
          }
        ],
        "governance": {
          "animal_approval_required": false,
          "consent": "Not applicable to manufactured data; human consent remains unavailable.",
          "ethics": "Human review is required before pilot or collection.",
          "human_approval_required": true,
          "license": "Manufactured fixture is repository-licensed; measured-data rights are unavailable.",
          "privacy": "No participant data are present; a data-minimization and access plan is required before collection.",
          "private_data_approval_required": false
        },
        "hypotheses": [
          {
            "direction": "two-sided",
            "falsifier": "The locked manufactured adverse or null case is promoted as support.",
            "hypothesis_id": "hyp-population-generalization",
            "null_handling": "Retain and report negative, null, and unavailable outcomes.",
            "statement": "The declared analysis can distinguish held-out error, calibration, subgroup, and transportability metrics from its manufactured null case."
          }
        ],
        "intervention_exposure": {
          "comparator": "Locked declared baseline",
          "description": "planned group-held-out evaluation",
          "type": "modeled-perturbation"
        },
        "measurements": [
          {
            "calibration_id": "cal-population-generalization",
            "frame": "declared measurement frames",
            "name": "predictions, outcomes, group IDs, and calibration",
            "quantity_class": "manufactured-synthetic",
            "unit": "declared outcome units"
          }
        ],
        "population": {
          "authority": "No population authority; no participant sample is present.",
          "exclusion": [
            "Undeclared frame, unit, calibration, or provenance"
          ],
          "inclusion": [
            "Meets a future protocol-specific eligibility contract"
          ],
          "sampling_frame": "Unavailable; manufactured dry run only",
          "target_population": "Future consenting adult golfers under separate approval"
        },
        "question": "What evidence would support transport beyond a development sample without participant, session, site, or equipment leakage?"
      },
      "state": "simulation-ready",
      "title": "Population Generalization and Held-Out Validation",
      "unavailable_boundaries": [
        "Measured participant and external-site evidence",
        "Qualified instrumentation, ethics, consent, privacy, and data licenses",
        "Independent #4042 validation and publication release"
      ]
    }
  ],
  "schema_version": "affinedrift.research-protocol-readiness/v1"
}
