{
  "capability_id": "mechanical.statics.offset_load_midspan_deflection",
  "calculation_version": "1.0.0",
  "protocol_version": "1.0.0-proposed",
  "protocol_document_status": "proposed",
  "verification_revision": "2026-09-27.o2-o3",
  "oracle": {
    "class": "O3",
    "library": "mpmath 1.4.1",
    "mpmath_dps": 80,
    "backend": null,
    "rounding": null,
    "generator_id": "offset-load-midspan-mpmath-o3",
    "generator_version": "1.0.0",
    "generator_sha256": "3cd2f8926cd1218d53243621eaa1e2c8ce68c604efd6b223bbc1267be5b4013f",
    "table_sha256": "c25d68386eb46c71f2b5e077b02de26a9f32941ae0f780c0ea0934a78de2f987",
    "seed": "20260927.offset-load-midspan-o3",
    "independent_of_iut": true
  },
  "claim_scope": "O2: delta vs a separate-module identity (≤2 ULP). Not δ under the load, not max |δ|, and not a cantilever. ≤2 ULP vs O3 applies only to the published tabulated offset-load-midspan vectors.",
  "commands": {
    "regenerate_table": "python3 generate-offset-load-midspan-o3.py",
    "regenerate_table_repo": "python3 scripts/lib/cvp/oracles/generate-offset-load-midspan-o3.py",
    "independent_rest": "Compare POST /api/v1/calc/offset-load-midspan against /developers/cvp/reproduce/offset-load-midspan-o3-tables.json",
    "run_cvp": "npm run cvp:run -- --capability mechanical.statics.offset_load_midspan_deflection",
    "rest_example": "POST https://www.calculatorx.com/api/v1/calc/offset-load-midspan"
  },
  "public_files": {
    "table": "/developers/cvp/reproduce/offset-load-midspan-o3-tables.json",
    "table_url": "https://www.calculatorx.com/developers/cvp/reproduce/offset-load-midspan-o3-tables.json",
    "generator": "/developers/cvp/reproduce/generate-offset-load-midspan-o3.py",
    "generator_url": "https://www.calculatorx.com/developers/cvp/reproduce/generate-offset-load-midspan-o3.py",
    "checker": "/developers/cvp/reproduce/check-math-o3-rest.py",
    "checker_url": "https://www.calculatorx.com/developers/cvp/reproduce/check-math-o3-rest.py",
    "manifest": "/evidence/mechanical.statics.offset_load_midspan_deflection/1.0.0.cvp.json",
    "this_file": "/evidence/mechanical.statics.offset_load_midspan_deflection/reproduce.json"
  },
  "result_summary": {
    "passed": 8,
    "total": 8,
    "failed": 0,
    "max_error_ulp": 1,
    "threshold_ulp": 2,
    "max_threshold_ulp": 2
  },
  "vectors": [
    {
      "id": "o3-check",
      "kind": "check",
      "inputs": {
        "P": "48",
        "a": "1",
        "L": "4",
        "E": "1",
        "I": "1"
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "delta": 44,
        "c": 1,
        "P": 48,
        "a": 1,
        "L": 4,
        "E": 1,
        "I": 1
      },
      "actual": {
        "model": "offset_load_midspan_deflection",
        "P": 48,
        "a": 1,
        "c": 1,
        "L": 4,
        "E": 1,
        "I": 1,
        "delta": 44,
        "solver": "simply supported offset load at midspan",
        "convention": "Simply supported span with one concentrated load at distance a from the left support. Midspan δ = P c (3 L² − 4 c²)/(48 E I), where c is the distance from the load to the nearer support. Positive P is the positive deflection direction. I is an input. a = L/2 recovers the midspan point-load page. The value under the load is its own page."
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-SI",
      "kind": "SI",
      "inputs": {
        "P": "1000",
        "a": "1",
        "L": "4",
        "E": "200000000000",
        "I": "0.00001"
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "delta": 0.0004583333333333333,
        "c": 1,
        "P": 1000,
        "a": 1,
        "L": 4,
        "E": 200000000000,
        "I": 0.00001
      },
      "actual": {
        "model": "offset_load_midspan_deflection",
        "P": 1000,
        "a": 1,
        "c": 1,
        "L": 4,
        "E": 200000000000,
        "I": 0.00001,
        "delta": 0.00045833333333333327,
        "solver": "simply supported offset load at midspan",
        "convention": "Simply supported span with one concentrated load at distance a from the left support. Midspan δ = P c (3 L² − 4 c²)/(48 E I), where c is the distance from the load to the nearer support. Positive P is the positive deflection direction. I is an input. a = L/2 recovers the midspan point-load page. The value under the load is its own page."
      },
      "error_ulp": 1,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-alias",
      "kind": "alias",
      "inputs": {
        "load": "96",
        "span": "4",
        "modulus": "1",
        "Ix": "1",
        "a": "1"
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "delta": 88,
        "c": 1,
        "P": 96,
        "a": 1,
        "L": 4,
        "E": 1,
        "I": 1
      },
      "actual": {
        "model": "offset_load_midspan_deflection",
        "P": 96,
        "a": 1,
        "c": 1,
        "L": 4,
        "E": 1,
        "I": 1,
        "delta": 88,
        "solver": "simply supported offset load at midspan",
        "convention": "Simply supported span with one concentrated load at distance a from the left support. Midspan δ = P c (3 L² − 4 c²)/(48 E I), where c is the distance from the load to the nearer support. Positive P is the positive deflection direction. I is an input. a = L/2 recovers the midspan point-load page. The value under the load is its own page."
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-awkward",
      "kind": "awkward",
      "inputs": {
        "P": "13.7",
        "a": "1.2",
        "L": "4",
        "E": "210000",
        "I": "0.83"
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "delta": 0.00008300172117039588,
        "c": 1.2,
        "P": 13.7,
        "a": 1.2,
        "L": 4,
        "E": 210000,
        "I": 0.83
      },
      "actual": {
        "model": "offset_load_midspan_deflection",
        "P": 13.7,
        "a": 1.2,
        "c": 1.2,
        "L": 4,
        "E": 210000,
        "I": 0.83,
        "delta": 0.00008300172117039586,
        "solver": "simply supported offset load at midspan",
        "convention": "Simply supported span with one concentrated load at distance a from the left support. Midspan δ = P c (3 L² − 4 c²)/(48 E I), where c is the distance from the load to the nearer support. Positive P is the positive deflection direction. I is an input. a = L/2 recovers the midspan point-load page. The value under the load is its own page."
      },
      "error_ulp": 1,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-neg",
      "kind": "signed",
      "inputs": {
        "P": "-48",
        "a": "1",
        "L": "4",
        "E": "1",
        "I": "1"
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "delta": -44,
        "c": 1,
        "P": -48,
        "a": 1,
        "L": 4,
        "E": 1,
        "I": 1
      },
      "actual": {
        "model": "offset_load_midspan_deflection",
        "P": -48,
        "a": 1,
        "c": 1,
        "L": 4,
        "E": 1,
        "I": 1,
        "delta": -44,
        "solver": "simply supported offset load at midspan",
        "convention": "Simply supported span with one concentrated load at distance a from the left support. Midspan δ = P c (3 L² − 4 c²)/(48 E I), where c is the distance from the load to the nearer support. Positive P is the positive deflection direction. I is an input. a = L/2 recovers the midspan point-load page. The value under the load is its own page."
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-small",
      "kind": "small",
      "inputs": {
        "P": "10",
        "a": "0.5",
        "L": "4",
        "E": "1000",
        "I": "0.01"
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "delta": 0.4895833333333333,
        "c": 0.5,
        "P": 10,
        "a": 0.5,
        "L": 4,
        "E": 1000,
        "I": 0.01
      },
      "actual": {
        "model": "offset_load_midspan_deflection",
        "P": 10,
        "a": 0.5,
        "c": 0.5,
        "L": 4,
        "E": 1000,
        "I": 0.01,
        "delta": 0.4895833333333333,
        "solver": "simply supported offset load at midspan",
        "convention": "Simply supported span with one concentrated load at distance a from the left support. Midspan δ = P c (3 L² − 4 c²)/(48 E I), where c is the distance from the load to the nearer support. Positive P is the positive deflection direction. I is an input. a = L/2 recovers the midspan point-load page. The value under the load is its own page."
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-stiff",
      "kind": "stiff",
      "inputs": {
        "P": "500",
        "a": "1",
        "L": "4",
        "E": "210e9",
        "I": "2e-4"
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "delta": 0.000010912698412698412,
        "c": 1,
        "P": 500,
        "a": 1,
        "L": 4,
        "E": 210000000000,
        "I": 0.0002
      },
      "actual": {
        "model": "offset_load_midspan_deflection",
        "P": 500,
        "a": 1,
        "c": 1,
        "L": 4,
        "E": 210000000000,
        "I": 0.0002,
        "delta": 0.000010912698412698412,
        "solver": "simply supported offset load at midspan",
        "convention": "Simply supported span with one concentrated load at distance a from the left support. Midspan δ = P c (3 L² − 4 c²)/(48 E I), where c is the distance from the load to the nearer support. Positive P is the positive deflection direction. I is an input. a = L/2 recovers the midspan point-load page. The value under the load is its own page."
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-long",
      "kind": "long",
      "inputs": {
        "P": "200",
        "a": "1",
        "L": "4",
        "E": "70e9",
        "I": "5e-5"
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "delta": 0.00005238095238095238,
        "c": 1,
        "P": 200,
        "a": 1,
        "L": 4,
        "E": 70000000000,
        "I": 0.00005
      },
      "actual": {
        "model": "offset_load_midspan_deflection",
        "P": 200,
        "a": 1,
        "c": 1,
        "L": 4,
        "E": 70000000000,
        "I": 0.00005,
        "delta": 0.00005238095238095238,
        "solver": "simply supported offset load at midspan",
        "convention": "Simply supported span with one concentrated load at distance a from the left support. Midspan δ = P c (3 L² − 4 c²)/(48 E I), where c is the distance from the load to the nearer support. Positive P is the positive deflection direction. I is an input. a = L/2 recovers the midspan point-load page. The value under the load is its own page."
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    }
  ]
}
