{
  "capability_id": "math.geometry.coordinate",
  "tool_id": "coordinate-geometry",
  "engine": "coordinate-geometry",
  "calculation_version": "1.5.0",
  "generated_at": "2026-09-21T16:00:36.128Z",
  "engine_build": "2026-09-21",
  "test_count": 21,
  "passed": 21,
  "failed": 0,
  "tests_summary": {
    "golden": {
      "total": 8,
      "passed": 8
    },
    "boundary": {
      "total": 3,
      "passed": 3
    },
    "property": {
      "total": 10,
      "passed": 10
    }
  },
  "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/math/coordinate-geometry",
  "api": "https://www.calculatorx.com/api/v1/calc/coordinate-geometry",
  "schema_input": "https://www.calculatorx.com/schemas/math.geometry.coordinate.input.json",
  "schema_output": "https://www.calculatorx.com/schemas/math.geometry.coordinate.output.json",
  "assumptions": [
    "Euclidean plane",
    "Not 3-D / spherical"
  ],
  "limitations": [
    "Not the Pythagorean-only calculator — distance of (0,0) to (3,4) is the same 5 as 3-4-5, but this page is coordinates",
    "Vertical line → slope null, vertical true",
    "Share URLs use slope as output, not query key m",
    "Two-point line is mode=line; coincident points → INVALID_INPUT",
    "Point-line distance is mode=point_line; requires x0, y0; coincident line points → INVALID_INPUT",
    "Line intersection is mode=intersect; requires x3, y3, x4, y4; parallel distinct → empty; coincident → coincident; degenerate points → INVALID_INPUT",
    "Angle between two lines is mode=angle; requires x3, y3, x4, y4; principal angle [0°, 90°]; parallel → 0°; coincident → 0°; degenerate points → INVALID_INPUT"
  ],
  "boundary_conditions": [
    "missing coordinates → MISSING_REQUIRED_INPUT",
    "unknown mode → INVALID_MODE"
  ],
  "sources": [
    "ISO 80000-2:2019 Quantities and units — Mathematics"
  ],
  "methods": [],
  "fingerprint": "sha256:bf0bdeec4b0f52e0ff0a18c02f725e129958d490367c3acb50736782c684ac2e",
  "tests": [
    {
      "id": "golden-345-distance",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "distance",
        "x1": 0,
        "y1": 0,
        "x2": 3,
        "y2": 4
      },
      "expect": {
        "distance": 5
      },
      "expectWarning": null,
      "actual": {
        "mode": "distance",
        "x1": 0,
        "y1": 0,
        "x2": 3,
        "y2": 4,
        "dx": 3,
        "dy": 4,
        "distance": 5,
        "formula": "d = √((x₂−x₁)²+(y₂−y₁)²)"
      },
      "tol": null
    },
    {
      "id": "golden-midpoint",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "midpoint",
        "x1": 0,
        "y1": 0,
        "x2": 4,
        "y2": 6
      },
      "expect": {
        "mx": 2,
        "my": 3
      },
      "expectWarning": null,
      "actual": {
        "mode": "midpoint",
        "x1": 0,
        "y1": 0,
        "x2": 4,
        "y2": 6,
        "mx": 2,
        "my": 3,
        "formula": "M = ((x₁+x₂)/2, (y₁+y₂)/2)"
      },
      "tol": null
    },
    {
      "id": "golden-slope",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "slope",
        "x1": 0,
        "y1": 1,
        "x2": 2,
        "y2": 5
      },
      "expect": {
        "slope": 2,
        "intercept": 1
      },
      "expectWarning": null,
      "actual": {
        "mode": "slope",
        "x1": 0,
        "y1": 1,
        "x2": 2,
        "y2": 5,
        "dx": 2,
        "dy": 4,
        "slope": 2,
        "vertical": false,
        "intercept": 1,
        "formula": "slope = (y₂−y₁)/(x₂−x₁)"
      },
      "tol": null
    },
    {
      "id": "golden-vertical",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "slope",
        "x1": 2,
        "y1": 0,
        "x2": 2,
        "y2": 5
      },
      "expect": {
        "vertical": true,
        "slope": null
      },
      "expectWarning": null,
      "actual": {
        "mode": "slope",
        "x1": 2,
        "y1": 0,
        "x2": 2,
        "y2": 5,
        "dx": 0,
        "dy": 5,
        "slope": null,
        "vertical": true,
        "intercept": null,
        "formula": "x₂ = x₁ → vertical (undefined slope)"
      },
      "tol": null
    },
    {
      "id": "golden-angle-45",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "angle",
        "x1": 0,
        "y1": 0,
        "x2": 2,
        "y2": 2,
        "x3": 0,
        "y3": 0,
        "x4": 2,
        "y4": 0
      },
      "expect": {
        "angle_deg": 45,
        "status": "oblique",
        "supplement_deg": 135
      },
      "expectWarning": null,
      "actual": {
        "mode": "angle",
        "x1": 0,
        "y1": 0,
        "x2": 2,
        "y2": 2,
        "x3": 0,
        "y3": 0,
        "x4": 2,
        "y4": 0,
        "A1": 1,
        "B1": -1,
        "C1": 0,
        "A2": 0,
        "B2": 1,
        "C2": 0,
        "standard1": "x − y = 0",
        "standard2": "y = 0",
        "status": "oblique",
        "angle_deg": 45,
        "angle_rad": 0.785398163397,
        "supplement_deg": 135,
        "formula": "θ = arccos(|A₁A₂ + B₁B₂| / (√(A₁²+B₁²) √(A₂²+B₂²)))"
      },
      "tol": null
    },
    {
      "id": "golden-angle-parallel",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "angle",
        "x1": 0,
        "y1": 0,
        "x2": 2,
        "y2": 0,
        "x3": 0,
        "y3": 1,
        "x4": 2,
        "y4": 1
      },
      "expect": {
        "angle_deg": 0,
        "status": "parallel",
        "supplement_deg": 180
      },
      "expectWarning": null,
      "actual": {
        "mode": "angle",
        "x1": 0,
        "y1": 0,
        "x2": 2,
        "y2": 0,
        "x3": 0,
        "y3": 1,
        "x4": 2,
        "y4": 1,
        "A1": 0,
        "B1": 1,
        "C1": 0,
        "A2": 0,
        "B2": 1,
        "C2": -1,
        "standard1": "y = 0",
        "standard2": "y − 1 = 0",
        "status": "parallel",
        "angle_deg": 0,
        "angle_rad": 0,
        "supplement_deg": 180,
        "formula": "θ = arccos(|A₁A₂ + B₁B₂| / (√(A₁²+B₁²) √(A₂²+B₂²)))"
      },
      "tol": null
    },
    {
      "id": "golden-angle-coincident",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "angle",
        "x1": 0,
        "y1": 0,
        "x2": 2,
        "y2": 0,
        "x3": 1,
        "y3": 0,
        "x4": 3,
        "y4": 0
      },
      "expect": {
        "angle_deg": 0,
        "status": "coincident",
        "supplement_deg": 180
      },
      "expectWarning": null,
      "actual": {
        "mode": "angle",
        "x1": 0,
        "y1": 0,
        "x2": 2,
        "y2": 0,
        "x3": 1,
        "y3": 0,
        "x4": 3,
        "y4": 0,
        "A1": 0,
        "B1": 1,
        "C1": 0,
        "A2": 0,
        "B2": 1,
        "C2": 0,
        "standard1": "y = 0",
        "standard2": "y = 0",
        "status": "coincident",
        "angle_deg": 0,
        "angle_rad": 0,
        "supplement_deg": 180,
        "formula": "θ = arccos(|A₁A₂ + B₁B₂| / (√(A₁²+B₁²) √(A₂²+B₂²)))"
      },
      "tol": null
    },
    {
      "id": "golden-angle-perpendicular",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "angle",
        "x1": 0,
        "y1": 0,
        "x2": 2,
        "y2": 0,
        "x3": 0,
        "y3": 0,
        "x4": 0,
        "y4": 2
      },
      "expect": {
        "angle_deg": 90,
        "status": "perpendicular",
        "supplement_deg": 90
      },
      "expectWarning": null,
      "actual": {
        "mode": "angle",
        "x1": 0,
        "y1": 0,
        "x2": 2,
        "y2": 0,
        "x3": 0,
        "y3": 0,
        "x4": 0,
        "y4": 2,
        "A1": 0,
        "B1": 1,
        "C1": 0,
        "A2": 1,
        "B2": 0,
        "C2": 0,
        "standard1": "y = 0",
        "standard2": "x = 0",
        "status": "perpendicular",
        "angle_deg": 90,
        "angle_rad": 1.57079632679,
        "supplement_deg": 90,
        "formula": "θ = arccos(|A₁A₂ + B₁B₂| / (√(A₁²+B₁²) √(A₂²+B₂²)))"
      },
      "tol": null
    },
    {
      "id": "boundary-coord-mode",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "pythagorean",
        "x1": 0,
        "y1": 0,
        "x2": 1,
        "y2": 0
      },
      "expectError": "INVALID_MODE",
      "code": "INVALID_MODE",
      "error": "mode must be distance, midpoint, slope, line, point_line, intersect, or angle. Not Pythagorean, not CAS."
    },
    {
      "id": "boundary-angle-degenerate-line1",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "angle",
        "x1": 1,
        "y1": 1,
        "x2": 1,
        "y2": 1,
        "x3": 0,
        "y3": 0,
        "x4": 2,
        "y4": 0
      },
      "expectError": "INVALID_INPUT",
      "code": "INVALID_INPUT",
      "error": "Two distinct points are required for a unique first line."
    },
    {
      "id": "boundary-angle-degenerate-line2",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "angle",
        "x1": 0,
        "y1": 0,
        "x2": 2,
        "y2": 0,
        "x3": 3,
        "y3": 1,
        "x4": 3,
        "y4": 1
      },
      "expectError": "INVALID_INPUT",
      "code": "INVALID_INPUT",
      "error": "Two distinct points are required for a unique second line."
    },
    {
      "id": "property-coord-345",
      "ok": true,
      "kind": "property",
      "detail": "3-4-5 distance",
      "expect": 5,
      "actual": 5
    },
    {
      "id": "property-coord-mid",
      "ok": true,
      "kind": "property",
      "detail": "midpoint",
      "expect": 2,
      "actual": 2
    },
    {
      "id": "property-coord-slope",
      "ok": true,
      "kind": "property",
      "detail": "slope 2",
      "expect": 2,
      "actual": 2
    },
    {
      "id": "property-coord-vert",
      "ok": true,
      "kind": "property",
      "detail": "vertical",
      "expect": true,
      "actual": true
    },
    {
      "id": "property-coord-hyp",
      "ok": true,
      "kind": "property",
      "detail": "shift 3-4-5",
      "expect": 5,
      "actual": 5
    },
    {
      "id": "property-angle-endpoint-reversal",
      "ok": true,
      "kind": "property",
      "detail": "endpoint reversal",
      "expect": 45,
      "actual": 45
    },
    {
      "id": "property-angle-line-order",
      "ok": true,
      "kind": "property",
      "detail": "line order",
      "expect": 45,
      "actual": 45
    },
    {
      "id": "property-angle-translation",
      "ok": true,
      "kind": "property",
      "detail": "translation",
      "expect": 45,
      "actual": 45
    },
    {
      "id": "property-angle-scale",
      "ok": true,
      "kind": "property",
      "detail": "scale",
      "expect": 45,
      "actual": 45
    },
    {
      "id": "property-angle-near-parallel",
      "ok": true,
      "kind": "property",
      "detail": "near-parallel not 0/NaN",
      "expect": true,
      "actual": 5.72957795131e-7
    }
  ],
  "tier": "engine_tested",
  "verification": {
    "tests": {
      "passed": 21,
      "total": 21,
      "golden": 8,
      "boundary": 3,
      "property": 10
    },
    "contract_checks": {
      "passed": 6,
      "total": 6
    }
  },
  "evidence_core_generated_at": "2026-09-21T15:31:57.476Z",
  "rendered_at": "2026-09-21T16:00:36.128Z",
  "release_integrity": {
    "status": "verified",
    "scope": "workspace",
    "production_attestation_required": true,
    "calculation_version": "1.5.0",
    "artifacts": {
      "engine": "1.5.0",
      "page": "1.5.0",
      "capability": "1.5.0",
      "evidence": "1.5.0",
      "input_schema": "1.5.0",
      "output_schema": "1.5.0",
      "mcp_contract": "1.5.0"
    },
    "digests": {
      "input_schema_sha256": "af75ecf9feb03e90bfbd4fcc4e8fec32781fd18e6266fa632cb68c969f668ca2",
      "output_schema_sha256": "0a6ff13ea27d1647cd8b696249fffaa30ad5706bb2d789e0e11c1452360d1440",
      "evidence_sha256": "8b09330e003ef9b4cf01138d5e36d70bbc003082f9aac13b46f29ebe7d73fd31",
      "evidence_core_sha256": "8b09330e003ef9b4cf01138d5e36d70bbc003082f9aac13b46f29ebe7d73fd31",
      "capability_sha256": "f30ffcf03d2ef076fc6204dd60d9b9d8b1282517b3ee3fa1f7cf3d41bc7653ac",
      "engine_sha256": "925bd3b9c373f747a10f30cedc6352b3f419cf91144ae6744c9c9adcd703033c",
      "mcp_contract_sha256": "2bb4bbc15ea3f9842a9a464e07efcc692dc31f3e830dee8553f3d7c4e81238d3"
    },
    "contract_checks": {
      "total": 6,
      "passed": 6,
      "failed": 0,
      "items": [
        {
          "id": "release-artifacts-aligned",
          "status": "pass",
          "detail": "1.5.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"
  }
}
