{
  "schema": "semiagora.rie-metric-contract.v1",
  "version": "2026-08-28-rie-v1",
  "experimentId": "SA-PROC-ETCH-RIE-010",
  "stateContractVersion": "2026-08-28-rie-v1",
  "executionMode": "original_dimensionless_precomputed_replay_only",
  "coefficientOrigin": "All coefficients and thresholds are original SemiAgora teaching choices. None are copied, fitted, calibrated, or inferred from a source publication, vendor page, named tool, customer run, or physical recipe.",
  "sourceNumericUse": "none",
  "roundDigits": 9,
  "numericClosureTolerance": 1e-8,
  "sweep": {
    "rows": 6912,
    "physicalRows": 3456,
    "evidencePairs": 3456,
    "axes": {
      "surface_family": 2,
      "ion_drive": 3,
      "neutral_reactivity": 3,
      "passivation_state": 3,
      "angular_spread": 2,
      "mask_resilience": 2,
      "feature_access": 2,
      "ordered_state": 8,
      "evidence_posture": 2
    },
    "rowOrder": ["surface_family", "ion_drive", "neutral_reactivity", "passivation_state", "angular_spread", "mask_resilience", "feature_access", "ordered_state", "evidence_posture"],
    "fastestChangingAxis": "evidence_posture",
    "sampling": "Complete Cartesian product. Evidence rows are adjacent pairs and every non-evidence field must be byte-identical."
  },
  "axisCoefficients": {
    "surfaceFamilies": [
      {
        "id": "dielectric_like",
        "chemicalAffinity": 0.58,
        "physicalSensitivity": 0.52,
        "synergyAffinity": 0.76,
        "passivationAffinity": 0.74,
        "damageSensitivity": 0.55
      },
      {
        "id": "conductor_like",
        "chemicalAffinity": 0.68,
        "physicalSensitivity": 0.63,
        "synergyAffinity": 0.66,
        "passivationAffinity": 0.56,
        "damageSensitivity": 0.70
      }
    ],
    "ionDriveStates": [
      {"id": "low", "scale": 0.30},
      {"id": "mid", "scale": 0.58},
      {"id": "high", "scale": 0.86}
    ],
    "neutralReactivityStates": [
      {"id": "low", "scale": 0.32},
      {"id": "mid", "scale": 0.61},
      {"id": "high", "scale": 0.90}
    ],
    "passivationStates": [
      {"id": "lean", "scale": 0.22},
      {"id": "balanced", "scale": 0.50},
      {"id": "rich", "scale": 0.78}
    ],
    "angularSpreadStates": [
      {"id": "focused_like", "focus": 0.84},
      {"id": "broad_like", "focus": 0.48}
    ],
    "maskResilienceStates": [
      {"id": "fragile_like", "scale": 0.40},
      {"id": "resilient_like", "scale": 0.82}
    ],
    "featureAccessStates": [
      {"id": "open_like", "scale": 0.88},
      {"id": "transport_limited_like", "scale": 0.52}
    ],
    "orderedStates": ["R00", "R01", "R02", "R03", "R04", "R05", "R06", "R07"],
    "evidencePostures": ["teaching_assumption", "replacement_slot"]
  },
  "proxyEquations": {
    "ordered_state_norm": "stateIndex / 7",
    "reactive_surface_availability_proxy": "clamp(neutral.scale * (1 - 0.55 * passivation.scale * material.passivationAffinity) * (0.72 + 0.28 * ordered_state_norm), 0, 1)",
    "ion_access_proxy": "clamp(ion.scale * angular.focus * feature.scale * (0.78 + 0.22 * ordered_state_norm), 0, 1)",
    "chemical_removal_component": "clamp(material.chemicalAffinity * reactive_surface_availability_proxy * (0.70 + 0.30 * feature.scale), 0, 1)",
    "physical_removal_component": "clamp(material.physicalSensitivity * ion_access_proxy * (0.80 + 0.20 * (1 - passivation.scale)), 0, 1)",
    "ion_neutral_synergy_component": "clamp(material.synergyAffinity * sqrt(reactive_surface_availability_proxy * ion_access_proxy) * (1 - 0.35 * passivation.scale), 0, 1)",
    "passivation_retention_proxy": "clamp(passivation.scale * material.passivationAffinity * (1 - 0.45 * ion_access_proxy) * (0.85 + 0.15 * (1 - ordered_state_norm)), 0, 1)",
    "net_removal_proxy": "clamp(0.34 * chemical_removal_component + 0.24 * physical_removal_component + 0.42 * ion_neutral_synergy_component - 0.18 * passivation_retention_proxy, 0, 1)",
    "anisotropy_proxy": "clamp(0.58 * ion_access_proxy + 0.28 * angular.focus + 0.14 * passivation_retention_proxy - 0.20 * chemical_removal_component * (1 - angular.focus), 0, 1)",
    "lateral_loss_proxy": "clamp(0.62 * chemical_removal_component * (1 - angular.focus) + 0.20 * (1 - passivation_retention_proxy) + 0.18 * (1 - feature.scale), 0, 1)",
    "mask_erosion_proxy": "clamp((0.50 * physical_removal_component + 0.30 * ion_neutral_synergy_component + 0.20 * ion_access_proxy) * (1 - mask.scale), 0, 1)",
    "selectivity_margin_proxy": "clamp(net_removal_proxy * (0.65 + 0.35 * mask.scale) - 0.55 * mask_erosion_proxy, 0, 1)",
    "damage_burden_proxy": "clamp(material.damageSensitivity * (0.55 * ion.scale + 0.30 * ion_access_proxy + 0.15 * physical_removal_component) * (0.80 + 0.20 * ordered_state_norm), 0, 1)",
    "transport_burden_proxy": "clamp((1 - feature.scale) * (0.55 + 0.25 * neutral.scale + 0.20 * (1 - angular.focus)), 0, 1)",
    "profile_control_proxy": "clamp(0.42 * anisotropy_proxy + 0.25 * (1 - lateral_loss_proxy) + 0.20 * passivation_retention_proxy + 0.13 * (1 - transport_burden_proxy), 0, 1)",
    "stability_proxy": "clamp(1 - 0.32 * abs(ion.scale - neutral.scale) - 0.23 * abs(passivation.scale - ion_neutral_synergy_component) - 0.20 * damage_burden_proxy - 0.15 * mask_erosion_proxy - 0.10 * transport_burden_proxy, 0, 1)"
  },
  "integerLedgerEquations": {
    "ion_total_tokens": "round(600 + 700 * ion.scale + 140 * ordered_state_norm)",
    "ion_direct_share": "clamp(0.30 + 0.40 * physical_removal_component + 0.15 * (1 - passivation.scale), 0, 0.75)",
    "ion_direct_impact_tokens": "round(ion_total_tokens * ion_direct_share)",
    "ion_activation_share": "clamp(0.20 + 0.55 * ion_neutral_synergy_component, 0, 0.75)",
    "ion_activation_tokens": "round((ion_total_tokens - ion_direct_impact_tokens) * ion_activation_share)",
    "ion_unassigned_tokens": "ion_total_tokens - ion_direct_impact_tokens - ion_activation_tokens",
    "ion_ledger_residual": "ion_total_tokens - ion_direct_impact_tokens - ion_activation_tokens - ion_unassigned_tokens",
    "neutral_total_tokens": "round(700 + 750 * neutral.scale + 180 * ordered_state_norm)",
    "neutral_chemical_share": "clamp(0.22 + 0.42 * chemical_removal_component, 0, 0.70)",
    "neutral_chemical_tokens": "round(neutral_total_tokens * neutral_chemical_share)",
    "neutral_synergy_share": "clamp(0.16 + 0.46 * ion_neutral_synergy_component, 0, 0.70)",
    "neutral_synergy_tokens": "round((neutral_total_tokens - neutral_chemical_tokens) * neutral_synergy_share)",
    "neutral_passivation_share": "clamp(0.10 + 0.52 * passivation_retention_proxy, 0, 0.65)",
    "neutral_passivation_tokens": "round((neutral_total_tokens - neutral_chemical_tokens - neutral_synergy_tokens) * neutral_passivation_share)",
    "neutral_unreacted_tokens": "neutral_total_tokens - neutral_chemical_tokens - neutral_synergy_tokens - neutral_passivation_tokens",
    "neutral_ledger_residual": "neutral_total_tokens - neutral_chemical_tokens - neutral_synergy_tokens - neutral_passivation_tokens - neutral_unreacted_tokens",
    "mask_start_tokens": "round(800 + 500 * mask.scale)",
    "mask_eroded_tokens": "min(mask_start_tokens, round(mask_start_tokens * 0.45 * mask_erosion_proxy * (0.65 + 0.35 * ordered_state_norm)))",
    "mask_remaining_tokens": "mask_start_tokens - mask_eroded_tokens",
    "mask_ledger_residual": "mask_start_tokens - mask_eroded_tokens - mask_remaining_tokens"
  },
  "mechanismRegimePrecedence": [
    "passivation-limited when passivation_retention_proxy > 0.52 and net_removal_proxy < 0.35",
    "ion-limited when ion_access_proxy < 0.25",
    "neutral-limited when reactive_surface_availability_proxy < 0.28",
    "synergy-dominant when ion_neutral_synergy_component >= chemical_removal_component and ion_neutral_synergy_component >= physical_removal_component",
    "chemical-weighted when chemical_removal_component >= physical_removal_component",
    "physical-weighted otherwise"
  ],
  "decisionThresholds": {
    "measurement_traceability_gate": "replacement-evidence-required for every row",
    "upstream_bridge_evidence_gate": "replacement-evidence-required for every row; categorical labels never import an upstream physical state",
    "feature_profile_handoff_gate": "teaching-feature-handoff-ready when profile_control_proxy >= 0.48, damage_burden_proxy <= 0.42, selectivity_margin_proxy >= 0.15, and transport_burden_proxy <= 0.38; otherwise feature-handoff-blocked",
    "operator_gate": "review-damage-burden above 0.38; else review-mask-retention below 0.94 remaining fraction; else bounded-state-ready",
    "process_engineer_gate": "review-passivation-limit for passivation-limited; else review-ion-neutral-balance when abs(ion.scale-neutral.scale) > 0.36; else review-profile-control below 0.48; else bounded-comparison-ready",
    "integration_gate": "feature-handoff-blocked when downstream gate is blocked; otherwise teaching-feature-handoff-ready",
    "yield_gate": "review-selectivity-margin below 0.10; else review-lateral-loss above 0.32; else bounded-risk-monitor"
  },
  "bandRules": {
    "upstream_vacuum_state_band": "constrained-like when transport_burden_proxy > 0.55, transitional-like above 0.30, otherwise available-like",
    "upstream_plasma_drive_band": "low, mid, or high copied from the ordinal ion-drive state only",
    "upstream_plasma_species_balance": "ion-weighted when ion.scale-neutral.scale > 0.18, neutral-weighted when neutral.scale-ion.scale > 0.18, otherwise balanced-like",
    "upstream_plasma_stability_band": "stable-like at or above 0.72, transitional-like at or above 0.48, otherwise unstable-like",
    "feature_particle_mix_band": "ion-weighted, balanced-like, or neutral-weighted using the same 0.18 normalized difference rule",
    "feature_directionality_band": "focused-like at anisotropy_proxy >= 0.62, mixed-like at or above 0.42, otherwise broad-like",
    "feature_passivation_band": "retained-like at passivation_retention_proxy >= 0.52, balanced-like at or above 0.28, otherwise lean-like"
  },
  "roleGatePrecedence": {
    "operator": ["review-damage-burden", "review-mask-retention", "bounded-state-ready"],
    "processEngineer": ["review-passivation-limit", "review-ion-neutral-balance", "review-profile-control", "bounded-comparison-ready"],
    "integration": ["feature-handoff-blocked", "teaching-feature-handoff-ready"],
    "yield": ["review-selectivity-margin", "review-lateral-loss", "bounded-risk-monitor"]
  },
  "serialization": {
    "csv": "UTF-8 with LF line endings, fixed column order, booleans serialized as 0 or 1, and finite numbers rounded to nine decimal places.",
    "json": "UTF-8 pretty-printed JSON with metadata, contract hashes, source spine, fixed columns, and all rows.",
    "evidencePairIdentity": "All non-evidence fields in adjacent teaching_assumption/replacement_slot rows must be byte-identical."
  },
  "validationGates": [
    "source and scope lock passes",
    "exact Cartesian count and row order",
    "same-input byte repeatability",
    "all normalized equations independently replay",
    "all mechanism and role gates independently replay",
    "three exact integer ledgers close at zero",
    "evidence-pair physical identity",
    "CSV and JSON row identity",
    "every prohibited field exists and remains numeric zero",
    "no physical unit, source numeric value, recipe, equipment action, or named-tool output enters the packet",
    "artifact hashes, source reachability, and text hygiene pass"
  ]
}
