{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.calculatorx.com/schemas/math.percent_error.agent.input.json",
  "title": "Percent error — agent input",
  "oneOf": [
    {
      "title": "p",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "solve_for": {
          "const": "p"
        },
        "abs": {
          "type": "boolean"
        },
        "observed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "true": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        }
      },
      "required": [
        "solve_for",
        "observed",
        "true"
      ]
    },
    {
      "title": "o",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "solve_for": {
          "const": "o"
        },
        "abs": {
          "type": "boolean"
        },
        "observed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "true": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        }
      },
      "required": [
        "solve_for",
        "true",
        "percent"
      ]
    },
    {
      "title": "t",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "solve_for": {
          "const": "t"
        },
        "abs": {
          "type": "boolean"
        },
        "observed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "true": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        }
      },
      "required": [
        "solve_for",
        "observed",
        "percent"
      ]
    }
  ],
  "description": "Absolute/signed percent error, complete inverse branches and per-branch diagnostics; binary64 range and resolution policy.. Mode-discriminated agent contract. Named fields are canonical; a/b are legacy share-URL aliases. (calculation_version 1.2.0)",
  "x-unit-contract": {
    "protocol": "calculatorx-field-unit-contract-v1",
    "capability_id": "math.percent_error",
    "registry_version": "0.3.0-preview.3",
    "declaration_scope": "Field/branch declarations only; inactive fields are not asserted to exist. No conversion-engine migration or new numerical certification.",
    "path_format": "Paths relative to inputs or result_detail.value; dot separates properties, * denotes array items, $ denotes a scalar result.",
    "inputs": {
      "percent": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "percent_error": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "p": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "P": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "pct": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "pctInput": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      }
    },
    "outputs": {
      "percent_error": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "signed_percent_error": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "achieved_percent_error": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "entered_percent_error": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "relative_error": {
        "unit": "1",
        "reference": {
          "unit_id": "cx:one",
          "revision": "1.0.0",
          "content_digest": "98cc3ffc58d8733c483b60c4d7e238fe8ad43a6aadcced9496b74f33a01ef599",
          "dependency_digest": "b1c9aa4d586949ee881925298442091ba11dda29f57de0867e43da1cd59e06e5",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      }
    },
    "scalar_result_policy": "value/candidates are percentages only when solving percentage error; inverse observed/accepted values and absolute_error inherit the quantity unit."
  }
}
