{
  "capability_id": "physics.fluid.concentric_reducer",
  "tool_id": "concentric-reducer",
  "engine": "concentric-reducer",
  "calculation_version": "1.0.0",
  "generated_at": "2026-09-17T23:36:55.416Z",
  "engine_build": "2026-09-17",
  "test_count": 5,
  "passed": 5,
  "failed": 0,
  "tests_summary": {
    "golden": {
      "total": 0,
      "passed": 0
    },
    "boundary": {
      "total": 0,
      "passed": 0
    },
    "property": {
      "total": 5,
      "passed": 5
    }
  },
  "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/concentric-reducer",
  "api": "https://www.calculatorx.com/api/v1/calc/concentric-reducer",
  "schema_input": "https://www.calculatorx.com/schemas/physics.fluid.concentric_reducer.input.json",
  "schema_output": "https://www.calculatorx.com/schemas/physics.fluid.concentric_reducer.output.json",
  "assumptions": [
    "Concentric reducer: h = K v₂² / (2g); K = 0.5 (1 − A₂/A₁); K referenced to downstream speed; K is reported, not an input",
    "A₂/A₁ in (0, 1); default g=9.80665 m/s²; default ρ=1000 kg/m³; incompressible; geometry from area_ratio or A1+A2 or D1+D2",
    "Not sudden expansion (v1−v2)², not gradual contraction α, not vena-contracta C_c, not catalog minor-loss K given, not a four-way cross, not Q=Av"
  ],
  "limitations": [
    "Concentric reducer: h = K v₂² / (2g); K = 0.5 (1 − A₂/A₁); K referenced to downstream speed; K is reported, not an input",
    "A₂/A₁ in (0, 1); default g=9.80665; default ρ=1000 for Δp; incompressible; geometry from area_ratio or A1+A2 or D1+D2",
    "Not sudden expansion (v1−v2)², not gradual contraction α, not vena-contracta C_c, not catalog minor-loss K given, not a four-way cross, not Q=Av"
  ],
  "boundary_conditions": [
    "missing v_m_s, h, or area_ratio when required → MISSING_REQUIRED_INPUT",
    "v_m_s ≤ 0, h ≤ 0, or area_ratio ≤ 0 → VALUE_MUST_BE_POSITIVE",
    "area_ratio ≥ 1 or K=0 on velocity invert → VALUE_OUT_OF_RANGE",
    "mixed area_ratio with A1+A2 or D1+D2, C_c, α, v1, K given, Q, f, kind, sigma, beta → MIXED_INPUT_ENCODING",
    "unknown mode → INVALID_MODE"
  ],
  "sources": [
    {
      "title": "ISO 80000-4 — Mechanics",
      "section": "Length, speed, pressure",
      "url": "https://www.iso.org/standard/31895.html",
      "supports": "h is a head; v is a speed; Δp is a pressure",
      "kind": "standard"
    },
    {
      "title": "Idelchik — Handbook of Hydraulic Resistance",
      "section": "Concentric reducer; K referenced to the downstream section",
      "supports": "K=0.5(1−A₂/A₁) on v₂. Not vena-contracta C_c, not conical α, not catalog K",
      "kind": "reference"
    }
  ],
  "methods": [],
  "fingerprint": "sha256:a51b644431052e85cce3d588da7882736b24eda12a0e63d38647eb89ffc1d197",
  "tests": [
    {
      "id": "property-reducer-h",
      "ok": true,
      "kind": "property",
      "detail": "h=K v₂²/(2g)",
      "expect": 0.050985810648896415,
      "actual": 0.050985810648896415
    },
    {
      "id": "property-reducer-K",
      "ok": true,
      "kind": "property",
      "detail": "K=0.5(1−A₂/A₁)",
      "expect": 0.25,
      "actual": 0.25
    },
    {
      "id": "property-reducer-roundtrip-v",
      "ok": true,
      "kind": "property",
      "detail": "v invert",
      "expect": 2,
      "actual": 2
    },
    {
      "id": "property-reducer-areas",
      "ok": true,
      "kind": "property",
      "detail": "A1+A2 encoding",
      "expect": 0.25,
      "actual": 0.25
    },
    {
      "id": "property-reducer-model",
      "ok": true,
      "kind": "property",
      "detail": "area_ratio_reducer",
      "expect": true,
      "actual": "area_ratio_reducer"
    }
  ],
  "tier": "engine_tested",
  "verification": {
    "tests": {
      "passed": 5,
      "total": 5,
      "golden": 0,
      "boundary": 0,
      "property": 5
    },
    "contract_checks": {
      "passed": 1,
      "total": 1
    }
  },
  "evidence_core_generated_at": "2026-09-17T22:40:20.962Z",
  "rendered_at": "2026-09-17T23:36:55.416Z",
  "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": "4de7933ae44ef93289fdd4a502783dd2a4e17dead2f8209d7f01dd2a36de2435",
      "output_schema_sha256": "658188bba055812aea650f2c22cc7fe94e8ab6189a8b1f07f1e1b952e4f4e79a",
      "evidence_sha256": "1790e9f2a48119e0e061480f406eebd32d86f86182d7874fc6adbc6814ce12bc",
      "evidence_core_sha256": "1790e9f2a48119e0e061480f406eebd32d86f86182d7874fc6adbc6814ce12bc",
      "capability_sha256": "69d29944a1dbc9d61e6a989a6625bbdad71f24b0bae3a6bdc81881645d40c317",
      "engine_sha256": "b7c3aca91b2557e4d6100a71a568bf182a40a247b6a6255250ffed7abdd5b222",
      "mcp_contract_sha256": "ce21ef7f0cc0110d86305c8a48f9a38634c8eef898205199708cf93562a6eab3"
    },
    "contract_checks": {
      "total": 1,
      "passed": 1,
      "failed": 0,
      "items": [
        {
          "id": "release-artifacts-aligned",
          "status": "pass",
          "detail": "1.0.0"
        }
      ]
    },
    "report": "https://www.calculatorx.com/.well-known/calculatorx-release-integrity.json"
  }
}
