{
  "schema": "semiagora.pvd-metric-contract.v1",
  "version": "2026-08-29-pvd-v1",
  "experimentId": "SA-PROC-DEP-PVD-012",
  "stateContractVersion": "2026-08-29-pvd-v1",
  "executionMode": "original_dimensionless_precomputed_replay_only",
  "coefficientOrigin": "All coefficients and thresholds are original SemiAgora teaching choices. None are copied, fitted, calibrated, reverse engineered, or inferred from a source publication, vendor page, named tool, customer run, chamber, geometry, measurement, or physical recipe.",
  "sourceNumericUse": "none",
  "roundDigits": 9,
  "numericClosureTolerance": 1e-8,
  "sweep": {
    "rows": 6912,
    "physicalRows": 3456,
    "evidencePairs": 3456,
    "axes": {
      "application_family": 4,
      "transport_scattering_state": 3,
      "angular_flux_state": 3,
      "target_erosion_state": 3,
      "resputter_state": 2,
      "wafer_motion_state": 2,
      "ordered_state": 8,
      "evidence_posture": 2
    },
    "rowOrder": [
      "application_family",
      "transport_scattering_state",
      "angular_flux_state",
      "target_erosion_state",
      "resputter_state",
      "wafer_motion_state",
      "ordered_state",
      "evidence_posture"
    ],
    "fastestChangingAxis": "evidence_posture",
    "sampling": "Complete Cartesian product. Evidence rows are adjacent pairs and every field except evidence posture and evidence requirement must be byte-identical."
  },
  "axisCoefficients": {
    "applicationFamilies": [
      {
        "id": "blanket_metallization_like",
        "featureBurden": 0.18,
        "uniformitySensitivity": 0.9,
        "overhangSensitivity": 0.22,
        "stressSensitivity": 0.72
      },
      {
        "id": "barrier_seed_like",
        "featureBurden": 0.7,
        "uniformitySensitivity": 0.78,
        "overhangSensitivity": 0.82,
        "stressSensitivity": 0.7
      },
      {
        "id": "feature_liner_like",
        "featureBurden": 0.9,
        "uniformitySensitivity": 0.66,
        "overhangSensitivity": 0.95,
        "stressSensitivity": 0.76
      },
      {
        "id": "package_ubm_like",
        "featureBurden": 0.36,
        "uniformitySensitivity": 0.88,
        "overhangSensitivity": 0.38,
        "stressSensitivity": 0.84
      }
    ],
    "transportScatteringStates": [
      {
        "id": "line_of_sight_like",
        "scale": 0.18
      },
      {
        "id": "transitional_like",
        "scale": 0.5
      },
      {
        "id": "scattered_like",
        "scale": 0.82
      }
    ],
    "angularFluxStates": [
      {
        "id": "directional_like",
        "scale": 0.86
      },
      {
        "id": "mixed_like",
        "scale": 0.58
      },
      {
        "id": "broad_like",
        "scale": 0.3
      }
    ],
    "targetErosionStates": [
      {
        "id": "fresh_like",
        "scale": 0.18
      },
      {
        "id": "evolved_like",
        "scale": 0.48
      },
      {
        "id": "localized_like",
        "scale": 0.82
      }
    ],
    "resputterStates": [
      {
        "id": "lower_like",
        "scale": 0.24
      },
      {
        "id": "higher_like",
        "scale": 0.72
      }
    ],
    "waferMotionStates": [
      {
        "id": "static_like",
        "scale": 0.22
      },
      {
        "id": "averaging_like",
        "scale": 0.82
      }
    ],
    "orderedStates": [
      "P00",
      "P01",
      "P02",
      "P03",
      "P04",
      "P05",
      "P06",
      "P07"
    ],
    "evidencePostures": [
      "teaching_assumption",
      "replacement_slot"
    ]
  },
  "proxyEquations": {
    "ordered_state_norm": "round9(stateIndex / 7)",
    "scattering_burden_proxy": "round9(clamp(scattering.scale * (0.82 + 0.18 * ordered_state_norm), 0, 1))",
    "arrival_directionality_proxy": "round9(clamp(angular.scale * (1 - 0.52 * scattering_burden_proxy) * (0.96 - 0.10 * ordered_state_norm), 0, 1))",
    "erosion_localization_proxy": "round9(clamp(erosion.scale * (0.78 + 0.22 * ordered_state_norm) * (0.92 + 0.08 * family.uniformitySensitivity), 0, 1))",
    "source_flux_stability_proxy": "round9(clamp(1 - 0.62 * erosion_localization_proxy - 0.12 * ordered_state_norm + 0.12 * motion.scale, 0, 1))",
    "wafer_averaging_proxy": "round9(clamp(motion.scale * (0.92 + 0.08 * ordered_state_norm), 0, 1))",
    "incident_flux_proxy": "round9(clamp((0.32 + 0.58 * arrival_directionality_proxy) * (0.74 + 0.26 * source_flux_stability_proxy) * (1 - 0.22 * scattering_burden_proxy), 0, 1))",
    "sidewall_access_proxy": "round9(clamp((0.18 + 0.62 * (1 - arrival_directionality_proxy) + 0.22 * scattering_burden_proxy) * (1 - 0.32 * family.featureBurden) * (1 - 0.15 * ordered_state_norm), 0, 1))",
    "bottom_access_proxy": "round9(clamp((0.22 + 0.68 * arrival_directionality_proxy) * (1 - 0.52 * family.featureBurden) * (1 - 0.20 * scattering_burden_proxy) * (1 - 0.12 * ordered_state_norm), 0, 1))",
    "overhang_burden_proxy": "round9(clamp(family.overhangSensitivity * (0.48 * arrival_directionality_proxy + 0.35 * (1 - sidewall_access_proxy) + 0.17 * ordered_state_norm) * (1 - 0.20 * resputter.scale), 0, 1))",
    "resputter_burden_proxy": "round9(clamp(resputter.scale * (0.58 + 0.24 * incident_flux_proxy + 0.18 * arrival_directionality_proxy) * (0.88 + 0.12 * ordered_state_norm), 0, 1))",
    "redeposition_burden_proxy": "round9(clamp(0.38 * scattering_burden_proxy + 0.34 * resputter_burden_proxy + 0.18 * erosion_localization_proxy + 0.10 * (1 - source_flux_stability_proxy), 0, 1))",
    "center_edge_uniformity_proxy": "round9(clamp(1 - 0.52 * erosion_localization_proxy - 0.28 * (1 - wafer_averaging_proxy) - 0.18 * scattering_burden_proxy + 0.22 * source_flux_stability_proxy, 0, 1))",
    "azimuthal_uniformity_proxy": "round9(clamp(1 - 0.46 * erosion_localization_proxy - 0.42 * (1 - wafer_averaging_proxy) - 0.12 * ordered_state_norm + 0.16 * source_flux_stability_proxy, 0, 1))",
    "step_coverage_proxy": "round9(clamp(0.52 * bottom_access_proxy + 0.48 * sidewall_access_proxy - 0.25 * overhang_burden_proxy + 0.12 * resputter_burden_proxy, 0, 1))",
    "continuity_margin_proxy": "round9(clamp(0.48 * step_coverage_proxy + 0.28 * bottom_access_proxy + 0.24 * incident_flux_proxy - 0.22 * overhang_burden_proxy - 0.12 * redeposition_burden_proxy, 0, 1))",
    "compressive_stress_burden_proxy": "round9(clamp(family.stressSensitivity * (0.46 * resputter_burden_proxy + 0.30 * incident_flux_proxy + 0.24 * arrival_directionality_proxy) * (0.82 + 0.18 * ordered_state_norm), 0, 1))",
    "tensile_stress_burden_proxy": "round9(clamp(family.stressSensitivity * (0.42 * scattering_burden_proxy + 0.32 * (1 - incident_flux_proxy) + 0.26 * (1 - sidewall_access_proxy)) * (0.82 + 0.18 * ordered_state_norm), 0, 1))",
    "stress_balance_proxy": "round9(clamp(1 - abs(compressive_stress_burden_proxy - tensile_stress_burden_proxy), 0, 1))",
    "film_stability_proxy": "round9(clamp(0.22 * source_flux_stability_proxy + 0.18 * center_edge_uniformity_proxy + 0.16 * azimuthal_uniformity_proxy + 0.18 * continuity_margin_proxy + 0.14 * stress_balance_proxy + 0.12 * (1 - redeposition_burden_proxy), 0, 1))"
  },
  "integerLedgerEquations": {
    "source_total_tokens": "round(900 + 260 * (1 - erosion.scale) + 180 * (1 - ordered_state_norm))",
    "source_direct_tokens": "round(source_total_tokens * clamp(0.12 + 0.68 * arrival_directionality_proxy, 0, 0.84))",
    "source_scattered_tokens": "round((source_total_tokens - source_direct_tokens) * clamp(0.18 + 0.62 * scattering_burden_proxy, 0, 0.78))",
    "source_unavailable_tokens": "source_total_tokens - source_direct_tokens - source_scattered_tokens",
    "source_ledger_residual": "source_total_tokens - source_direct_tokens - source_scattered_tokens - source_unavailable_tokens",
    "surface_total_tokens": "round(760 + 280 * incident_flux_proxy + 120 * ordered_state_norm)",
    "surface_retained_tokens": "round(surface_total_tokens * clamp(0.18 + 0.62 * (1 - resputter_burden_proxy) * incident_flux_proxy, 0, 0.82))",
    "surface_resputtered_tokens": "round((surface_total_tokens - surface_retained_tokens) * clamp(0.12 + 0.66 * resputter_burden_proxy, 0, 0.76))",
    "surface_redistributed_tokens": "round((surface_total_tokens - surface_retained_tokens - surface_resputtered_tokens) * clamp(0.12 + 0.58 * redeposition_burden_proxy, 0, 0.68))",
    "surface_unassigned_tokens": "surface_total_tokens - surface_retained_tokens - surface_resputtered_tokens - surface_redistributed_tokens",
    "surface_ledger_residual": "surface_total_tokens - surface_retained_tokens - surface_resputtered_tokens - surface_redistributed_tokens - surface_unassigned_tokens",
    "wafer_total_tokens": "round(620 + 360 * incident_flux_proxy)",
    "wafer_center_tokens": "round(wafer_total_tokens * clamp(0.28 + 0.48 * center_edge_uniformity_proxy, 0, 0.78))",
    "wafer_edge_tokens": "round((wafer_total_tokens - wafer_center_tokens) * clamp(0.20 + 0.50 * azimuthal_uniformity_proxy, 0, 0.72))",
    "wafer_shadowed_tokens": "wafer_total_tokens - wafer_center_tokens - wafer_edge_tokens",
    "wafer_ledger_residual": "wafer_total_tokens - wafer_center_tokens - wafer_edge_tokens - wafer_shadowed_tokens"
  },
  "depositionRegimePrecedence": [
    "transport-scattered when scattering_burden_proxy > 0.68 and arrival_directionality_proxy < 0.38",
    "directionality-limited when bottom_access_proxy < 0.28 and sidewall_access_proxy < 0.42",
    "erosion-localized when erosion_localization_proxy > 0.62 and the lower uniformity proxy is below 0.55",
    "pinch-off-risk when overhang_burden_proxy > 0.42 and continuity_margin_proxy < 0.52",
    "resputter-dominant when resputter_burden_proxy > 0.57 and compressive_stress_burden_proxy > 0.48",
    "stress-imbalanced when stress_balance_proxy < 0.78 and the larger stress burden exceeds 0.44",
    "coverage-limited when step_coverage_proxy < 0.42 or continuity_margin_proxy < 0.40",
    "bounded-deposition otherwise"
  ],
  "decisionThresholds": {
    "measurement_traceability_gate": "replacement-evidence-required for every row",
    "upstream_vac_evidence_gate": "replacement-evidence-required for every row; categorical labels never import pressure, flow, inventory, chamber geometry, or a vacuum state",
    "upstream_plasma_evidence_gate": "replacement-evidence-required for every row; categorical labels never import power, bias, plasma density, energy, or equipment state",
    "upstream_pmc_evidence_gate": "replacement-evidence-required for every row; categorical labels never import particles, trajectories, surface coefficients, or geometry",
    "downstream_film_evidence_gate": "replacement-evidence-required for every row",
    "teaching_deposition_handoff_gate": "teaching-deposition-handoff-ready when step coverage >= 0.48, continuity >= 0.48, both uniformity proxies >= 0.50, stress balance >= 0.68, and overhang <= 0.50; otherwise deposition-handoff-blocked",
    "operator_gate": "review-target-erosion above 0.56; else review-wafer-averaging when lower uniformity < 0.56; else review-resputter above 0.60; else bounded-trace-ready",
    "process_engineer_gate": "review-transport for transport-scattered or directionality-limited regimes or incident flux below 0.36; else review-stress when stress balance < 0.72 and the larger stress burden exceeds 0.48; else review-step-coverage below 0.48; else review-film-stability below 0.58; else bounded-comparison-ready",
    "integration_gate": "deposition-handoff-blocked when the teaching handoff is blocked; otherwise teaching-deposition-handoff-ready",
    "yield_gate": "review-uniformity when lower uniformity < 0.48; else review-overhang above 0.44; else review-stress below 0.72 stress balance; else review-continuity below 0.50; else bounded-film-monitor"
  },
  "bandRules": {
    "upstream_vac_transport_band": "direct-like at directionality >= 0.58 and scattering < 0.50; scattered-like at scattering >= 0.65; otherwise collision-mixed-like",
    "upstream_vac_scattering_band": "lower-like below 0.35; intermediate-like below 0.65; otherwise higher-like",
    "upstream_plasma_source_band": "stable-like at source stability >= 0.65; transitional-like at or above 0.45; otherwise erosion-sensitive-like",
    "upstream_plasma_resputter_band": "lower-like below 0.35; transitional-like below 0.52; otherwise higher-like",
    "upstream_pmc_incidence_band": "directional-like at directionality >= 0.55; mixed-like at or above 0.35; otherwise broad-like",
    "upstream_pmc_surface_fate_band": "resputter-weighted above 0.56 resputter; else redeposition-weighted above 0.50 redeposition; else retained-like when incident flux > 0.55 and continuity > 0.50; otherwise mixed-like",
    "downstream_thickness_uniformity_band": "bounded-like when the lower uniformity >= 0.68; transitional-like at or above 0.50; otherwise nonuniform-like",
    "downstream_step_coverage_band": "covered-like when step coverage >= 0.50 and continuity >= 0.48; transitional-like when step coverage >= 0.42; otherwise limited-like",
    "downstream_stress_priority_band": "compressive-like when compressive minus tensile burden > 0.15; tensile-like for the inverse; otherwise balanced-like",
    "downstream_metrology_priority_band": "uniformity-map when lower uniformity < 0.48; else cross-section when step coverage < 0.45 or overhang > 0.44; else stress-curvature when stress balance < 0.75; otherwise thickness-and-continuity"
  },
  "roleGatePrecedence": {
    "operator": [
      "review-target-erosion",
      "review-wafer-averaging",
      "review-resputter",
      "bounded-trace-ready"
    ],
    "processEngineer": [
      "review-transport",
      "review-stress",
      "review-step-coverage",
      "review-film-stability",
      "bounded-comparison-ready"
    ],
    "integration": [
      "deposition-handoff-blocked",
      "teaching-deposition-handoff-ready"
    ],
    "yield": [
      "review-uniformity",
      "review-overhang",
      "review-stress",
      "review-continuity",
      "bounded-film-monitor"
    ]
  },
  "serialization": {
    "csv": "UTF-8 with LF line endings, fixed column order, finite numbers rounded to nine decimal places, and RFC-4180-compatible quoting.",
    "json": "UTF-8 pretty-printed JSON with metadata, contracts, source spine, fixed columns, and all rows.",
    "evidencePairIdentity": "All fields except evidence_posture and evidence_requirement 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 deposition regimes and role gates independently replay",
    "all bridge bands independently replay",
    "three exact integer ledgers close at zero",
    "evidence-pair identity outside evidence metadata",
    "CSV and JSON row identity",
    "every prohibited field exists and remains numeric zero",
    "all required application families and phenomena remain represented",
    "no physical unit, source numeric value, recipe, equipment action, or named-tool output enters the packet",
    "compact manifest, artifact hashes, source reachability, public-v109 hold, and text hygiene pass"
  ]
}
