{
  "schema_version": 1,
  "evidence_type": "synthetic/theoretical",
  "command": "python complete_validation.py",
  "passed": true,
  "checks": [
    {
      "id": "surrogate-0.12",
      "description": "Support-compliance surrogate matches executed FEA at all three supports",
      "expected": "max error < 0.0001 mm",
      "observed": 3.734501522361516e-05,
      "passed": true,
      "method": "Least-squares fit delta = elastic term + support coefficient / stiffness"
    },
    {
      "id": "surrogate-0.15",
      "description": "Support-compliance surrogate matches executed FEA at all three supports",
      "expected": "max error < 0.0001 mm",
      "observed": 3.0998844773415246e-05,
      "passed": true,
      "method": "Least-squares fit delta = elastic term + support coefficient / stiffness"
    },
    {
      "id": "uncertainty-count",
      "description": "Two load positions each have 10000 synthetic combinations",
      "expected": "20000 rows",
      "observed": 20000,
      "passed": true,
      "method": "Deterministic seeded uniform input sweep; no claim of field probability"
    },
    {
      "id": "nominal",
      "description": "Selected nominal centered case meets deflection requirement",
      "expected": "< 0.05 mm",
      "observed": 0.044843640648126466,
      "passed": true,
      "method": "Reduced model anchored to converged FEA"
    },
    {
      "id": "envelope-rejection",
      "description": "Combined compliant/thin/high-load corner is identified",
      "expected": "at least one corner > 0.05 mm",
      "observed": [
        0.05457409060119878,
        0.05048066210205066
      ],
      "passed": true,
      "method": "Bounded monotone worst-case corner, separate from random sampling"
    },
    {
      "id": "support-requirement",
      "description": "Derived minimum support target closes translational envelope",
      "expected": "all corner values <= 0.05 mm",
      "observed": {
        "support_MN_m": 22,
        "corner_mm": [
          0.04987890423527212,
          0.045365258213778806
        ]
      },
      "passed": true,
      "method": "Analytical inversion of calibrated compliance law"
    },
    {
      "id": "selected-envelope",
      "description": "Final selected supports include translation, torsion and fit residual",
      "expected": "all <= 0.05 mm at declared worst corner",
      "observed": [
        0.04905050423098671,
        0.044237261129648486
      ],
      "passed": true,
      "method": "30 MN/m translation and 500 N m/rad rotation per support; 550 N, 66 GPa, 19.9 mm, 2 mm offset"
    },
    {
      "id": "zero-offset",
      "description": "Zero out-of-plane offset produces zero extra movement",
      "expected": "0 mm",
      "observed": 0.0,
      "passed": true,
      "method": "Torque equilibrium and Saint-Venant rectangular-section approximation"
    },
    {
      "id": "rotation-screen",
      "description": "Weak rotational mounts can invalidate the 2D-only result",
      "expected": "100 N m/rad rejected; 500 N m/rad accepted at 2 mm offset",
      "observed": {
        "weak_mm": 0.055025055389376146,
        "strong_mm": 0.04702505538937614
      },
      "passed": true,
      "method": "Two equal rotational springs plus integrated cross-section torsion compliance"
    },
    {
      "id": "synthetic-calibration",
      "description": "Regression recovers generating compliance from noisy load cycles",
      "expected": "slope error < 5%",
      "observed": 0.01832927647230953,
      "passed": true,
      "method": "Ordinary least squares with intercept; three load/unload cycles"
    },
    {
      "id": "stress-screen",
      "description": "Finite stress multipliers remain below assumed yield/2",
      "expected": "all <= 120 MPa",
      "observed": 28.592800375303327,
      "passed": true,
      "method": "Sensitivity only; factors are not resolved notch stresses"
    }
  ],
  "source_sha256": {
    "complete_validation.py": "858f048109f1d3a22ffc1e094633df6f9ca9175232e5b8e56ce1fc5f842c60b3",
    "completion_util.py": "13ea3f7914cacfa378a684a234a33778ac10ed3b4473dbff5f0e4194419ff47d",
    "completion-inputs.json": "a26ddb7ae3c4b5549b9167a448763572ee2427b92193f454fa0585d3472aeff4",
    "inputs.json": "908909166435c1deeb20cdbce6634a59a5f2ad28af17ed83042897ea19950260",
    "solver.py": "7ef0bc6f85255abbdd2836b09e685e4296a4ba54c3a4aa4f1343d5eea9d757aa",
    "outputs/load-cases.csv": "4ac9908fcd024269de43676c5ad9abebc9ccb69fa4c033c8f2c2726dfc9b5046",
    "test_completion.py": "b9d7a6b59ca82ce23cf6569bae76aef3a0a21a288c2c80608d6ccee8fab87e45",
    "completion-description.json": "016d8b4e1a924cf1374c34c2fa01457b1267e7d8769a3af07a515b5d6f12a398",
    "run.py": "0218553e47839f3c303314dbc2b5cd770b9ebf3c1370ce86306c84465e3f9b4f",
    "engineering_util.py": "70ad113d477e969fdbca2e85fd6acb629ab8dd5c650f51ca6a33be1eacf353fc"
  },
  "report": "completion/report.html",
  "limitations": [
    "The input draws are uniformly distributed scenarios, not measured manufacturing or installation statistics. Exceedance counts cannot be interpreted as the probability a real fixture will fail.",
    "The response model is calibrated to 2D FEA. Matching its source data and synthetic calibration checks verify the workflow; they do not independently validate real hardware.",
    "The torsion screen uses an approximate rectangular-section Saint-Venant constant and prescribed rotational end springs. It omits warping restraint, local load introduction, 3D contact and bolt preload.",
    "Stress multipliers are declared sensitivity factors. They do not replace a filleted 3D notch model, fatigue assessment or a load rating.",
    "The 0.05 mm target is met only inside the stated force, material, translation and rotation envelope. Mount stiffness values are requirements to be achieved, not measured fixture properties."
  ],
  "results": {
    "synthetic_combinations": 20000,
    "derived_translational_only_requirement_MN_m": 22,
    "selected_support_MN_m": 30,
    "selected_rotational_support_Nm_rad": 500,
    "selected_worst_with_fit_error_mm": 0.04905050423098671,
    "calibration_observations": 33,
    "synthetic_slope_error_fraction": 0.01832927647230953
  }
}
