{
  "capability_id": "mechanical.statics.shear_moment",
  "tool_id": "shear-moment",
  "engine": "shear-moment",
  "calculation_version": "1.0.0",
  "generated_at": "2026-09-23T10:57:00.182Z",
  "engine_build": "2026-09-23",
  "test_count": 6,
  "passed": 6,
  "failed": 0,
  "tests_summary": {
    "golden": {
      "total": 2,
      "passed": 2
    },
    "boundary": {
      "total": 4,
      "passed": 4
    },
    "property": {
      "total": 0,
      "passed": 0
    }
  },
  "engine_tested": true,
  "expert_reviewed": false,
  "internally_reviewed": false,
  "review_kind": null,
  "source_checked": true,
  "reviewed_by": null,
  "reviewer_role": null,
  "last_reviewed": null,
  "expert_review": {
    "status": "optional_not_performed",
    "reviewer": null,
    "scope": [
      "formula",
      "input semantics",
      "assumptions",
      "limitations",
      "sources",
      "tests"
    ],
    "note": "Domain expert review is optional under CVP (CVP-EXP-01). Absence does not block CVP Verified. See Review policy for supplemental domain assurance."
  },
  "internal_review": {
    "status": "not_applicable",
    "reviewer": null
  },
  "page": "https://www.calculatorx.com/calc/physics/shear-moment",
  "api": "https://www.calculatorx.com/api/v1/calc/shear-moment",
  "schema_input": "https://www.calculatorx.com/schemas/mechanical.statics.shear_moment.input.json",
  "schema_output": "https://www.calculatorx.com/schemas/mechanical.statics.shear_moment.output.json",
  "assumptions": [],
  "limitations": [
    "Simply supported span",
    "Point forces and concentrated moments only",
    "Upward force and CCW moment are positive",
    "A load exactly at the cut stays on the right",
    "Not distributed load, deflection, or an indeterminate beam"
  ],
  "boundary_conditions": [
    "missing L or s → MISSING_REQUIRED_INPUT",
    "L ≤ 0 → VALUE_MUST_BE_POSITIVE",
    "s outside (0, L) → VALUE_OUT_OF_RANGE",
    "a load outside the span → INVALID_INPUT"
  ],
  "sources": [
    {
      "title": "Hibbeler, Engineering Mechanics: Statics",
      "section": "Internal loadings",
      "supports": "Shear and bending moment from equilibrium of a cut segment",
      "kind": "reference"
    }
  ],
  "methods": [],
  "fingerprint": "sha256:e349a6d8bdbd84001bd30888ddfd460511235eee1f938144b57259027f735f8d",
  "tests": [
    {
      "id": "golden-midspan-left",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "L": 4,
        "s": 1,
        "forces": "-10,2"
      },
      "expect": {
        "Ay": 5,
        "By": 5,
        "V": -5,
        "M": 5,
        "model": "shear_moment"
      },
      "expectWarning": null,
      "actual": {
        "model": "shear_moment",
        "L": 4,
        "s": 1,
        "Ay": 5,
        "By": 5,
        "V": -5,
        "M": 5,
        "solver": "math.linear_algebra solve order 2",
        "convention": "Upward force and CCW moment are positive. V and M act on the left face of the cut. A load at s stays on the right."
      },
      "tol": 1e-12
    },
    {
      "id": "golden-at-load",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "L": 4,
        "s": 2,
        "forces": "-10,2"
      },
      "expect": {
        "V": -5,
        "M": 10
      },
      "expectWarning": null,
      "actual": {
        "model": "shear_moment",
        "L": 4,
        "s": 2,
        "Ay": 5,
        "By": 5,
        "V": -5,
        "M": 10,
        "solver": "math.linear_algebra solve order 2",
        "convention": "Upward force and CCW moment are positive. V and M act on the left face of the cut. A load at s stays on the right."
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-right",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "L": 4,
        "s": 3,
        "forces": "-10,2"
      },
      "expect": {
        "V": 5,
        "M": 5
      },
      "expectWarning": null,
      "actual": {
        "model": "shear_moment",
        "L": 4,
        "s": 3,
        "Ay": 5,
        "By": 5,
        "V": 5,
        "M": 5,
        "solver": "math.linear_algebra solve order 2",
        "convention": "Upward force and CCW moment are positive. V and M act on the left face of the cut. A load at s stays on the right."
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-empty",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "forces": "-10,2"
      },
      "expectError": "MISSING_REQUIRED_INPUT",
      "code": "MISSING_REQUIRED_INPUT",
      "error": "L is required."
    },
    {
      "id": "boundary-section",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "L": 4,
        "s": 4,
        "forces": "-10,2"
      },
      "expectError": "VALUE_OUT_OF_RANGE",
      "code": "VALUE_OUT_OF_RANGE",
      "error": "Section s must lie strictly between the supports."
    },
    {
      "id": "boundary-offspan",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "L": 4,
        "s": 1,
        "forces": "-10,5"
      },
      "expectError": "INVALID_INPUT",
      "code": "INVALID_INPUT",
      "error": "forces row 1 must lie on the span."
    }
  ],
  "tier": "engine_tested",
  "verification": {
    "tests": {
      "passed": 6,
      "total": 6,
      "golden": 2,
      "boundary": 4,
      "property": 0
    },
    "contract_checks": {
      "passed": 6,
      "total": 6
    }
  },
  "evidence_core_generated_at": "2026-09-23T08:03:18.153Z",
  "rendered_at": "2026-09-23T10:57:00.182Z",
  "release_integrity": {
    "status": "verified",
    "scope": "workspace",
    "production_attestation_required": true,
    "calculation_version": "1.0.0",
    "artifacts": {
      "engine": "1.0.0",
      "page": "1.0.0",
      "capability": "1.0.0",
      "evidence": "1.0.0",
      "input_schema": "1.0.0",
      "output_schema": "1.0.0",
      "mcp_contract": "1.0.0"
    },
    "digests": {
      "input_schema_sha256": "89e577b985d3bbc116f749d3134f8f6ed7f963d885942ee33050c066b3189b5c",
      "output_schema_sha256": "fcab92dc6c909617906be23dc4edfc9ff24242fb87ee421460fb70a9a773c82b",
      "evidence_sha256": "031b1dfe839fa2bd4e199d0c2292ff34a8d5ff0b1d16edc0035e25e9f1f5075a",
      "evidence_core_sha256": "031b1dfe839fa2bd4e199d0c2292ff34a8d5ff0b1d16edc0035e25e9f1f5075a",
      "capability_sha256": "d4230ccac12e1bf332f40693eb0e98bd71c74084310528d4821a03018f100307",
      "engine_sha256": "2834c6bc0e697b4d1e17766004f95cbfb57722d30aac4f3245109e79ef19ffae",
      "mcp_contract_sha256": "7015b0a59a475803dcfdfe80a660fa9d4d216cc36bd496d9466d1918d64ff186"
    },
    "contract_checks": {
      "total": 6,
      "passed": 6,
      "failed": 0,
      "items": [
        {
          "id": "release-artifacts-aligned",
          "status": "pass",
          "detail": "1.0.0"
        },
        {
          "id": "schema-output-required-declared",
          "status": "pass"
        },
        {
          "id": "schema-valid-input-executes",
          "status": "pass"
        },
        {
          "id": "engine-success-output-validates-schema",
          "status": "pass"
        },
        {
          "id": "schema-rejects-incomplete-input",
          "status": "pass"
        },
        {
          "id": "rest-success-payload-validates-schema",
          "status": "pass"
        }
      ]
    },
    "report": "https://www.calculatorx.com/.well-known/calculatorx-release-integrity.json"
  }
}
