{
  "capability_id": "physics.fluid.trapezoid_specific_force",
  "calculation_version": "1.0.0",
  "protocol_version": "1.0.0-proposed",
  "protocol_document_status": "proposed",
  "verification_revision": "2026-09-26.o2-o3.cov",
  "claim_scope": "O2: trapezoid M=Q²/(gA)+A ȳ with A=(b+z y)y and ȳ=y(3b+2zy)/(6(b+zy)) vs a separate-module identity (≤2 ULP). Not rectangular ȳ=y/2, not jump y2, not E, and not Q=Av. ≤2 ULP vs O3 applies only to the published tabulated trapezoid-specific-force vectors. Not rectangular E, not yc, and not yn.",
  "oracle": {
    "class": "O3",
    "library": "mpmath",
    "mpmath_dps": 80,
    "backend": null,
    "rounding": null,
    "independent_of_iut": true,
    "generator_id": "trapezoid-specific-force-mpmath-o3",
    "generator_version": "2026-09-26",
    "generator_sha256": "3942de549d6d37c02d06a24becec5cc4f6d8c5d7467ecb95f56504a078e9ad4d",
    "table_sha256": "ff3077591e8574228e66594eff90942f0673463e2c30406f4f66fe6aaf30742a"
  },
  "result_summary": {
    "passed": 8,
    "total": 8,
    "failed": 0,
    "max_error_ulp": 1,
    "threshold_ulp": 2,
    "max_threshold_ulp": 2
  },
  "public_files": {
    "manifest": "/evidence/physics.fluid.trapezoid_specific_force/1.0.0.cvp.json",
    "this_file": "/evidence/physics.fluid.trapezoid_specific_force/reproduce.json"
  },
  "vectors": [],
  "disclosure": {
    "policy": "calculatorx-public-evidence-v1",
    "full_validation": "private",
    "representation": "summary",
    "kind": "reproduce"
  }
}
