changedInput schema / properties / assertions / items / oneOf
Previous value: -[
- {
- "properties": {
- "expected": {
- "maximum": 599,
- "minimum": 100,
- "type": "integer"
- },
- "kind": {
- "const": "status",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "expected"
- ],
- "type": "object"
- },
- {
- "properties": {
- "expected": {
- "maxLength": 1024,
- "type": "string"
- },
- "key": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "header_equals",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "expected"
- ],
- "type": "object"
- },
- {
- "properties": {
- "expected": {},
- "key": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "json_equals",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "expected"
- ],
- "type": "object"
- },
- {
- "properties": {
- "expected": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "body_contains",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "expected"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "properties": {
+ "expected": {
+ "description": "Expected HTTP status code from 100 through 599.",
+ "maximum": 599,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "status",
+ "description": "Assert the HTTP response status code.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "expected"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "expected": {
+ "description": "Exact expected response header value.",
+ "maxLength": 1024,
+ "type": "string"
+ },
+ "key": {
+ "description": "Response header name to compare case-insensitively.",
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "header_equals",
+ "description": "Assert an exact response header value.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "expected"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "expected": {
+ "description": "Exact JSON value expected at the JSON Pointer."
+ },
+ "key": {
+ "description": "JSON Pointer identifying the response value to compare, for example /status.",
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "json_equals",
+ "description": "Assert an exact JSON value at a JSON Pointer.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "expected"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "expected": {
+ "description": "Literal case-sensitive substring expected in the bounded response body.",
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "body_contains",
+ "description": "Assert that the response body contains a literal substring.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "expected"
+ ],
+ "type": "object"
+ }
+]
changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "additionalProperties": false,
+ "properties": {
+ "evidence_age_seconds": {
+ "type": "number"
+ },
+ "evidence_source": {
+ "enum": [
+ "cached",
+ "fresh_execution"
+ ],
+ "type": "string"
+ },
+ "protocol": {
+ "const": "probe.check.v0",
+ "type": "string"
+ },
+ "result": {
+ "additionalProperties": false,
+ "properties": {
+ "assertion_results": {
+ "items": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "actual": {
+ "type": "number"
+ },
+ "expected": {
+ "type": "number"
+ },
+ "kind": {
+ "const": "status",
+ "type": "string"
+ },
+ "passed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "expected",
+ "actual",
+ "passed"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "actual_fingerprint": {
+ "additionalProperties": false,
+ "properties": {
+ "sha256": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "sha256"
+ ],
+ "type": "object"
+ },
+ "expected": {
+ "type": "string"
+ },
+ "key": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "header_equals",
+ "type": "string"
+ },
+ "passed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "expected",
+ "actual_fingerprint",
+ "passed"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "error_code": {
+ "type": "string"
+ },
+ "expected": {
+ "type": "string"
+ },
+ "key": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "header_equals",
+ "type": "string"
+ },
+ "passed": {
+ "const": false,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "expected",
+ "passed",
+ "error_code"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "actual_fingerprint": {
+ "additionalProperties": false,
+ "properties": {
+ "sha256": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "sha256"
+ ],
+ "type": "object"
+ },
+ "expected": {},
+ "key": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "json_equals",
+ "type": "string"
+ },
+ "passed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "expected",
+ "actual_fingerprint",
+ "passed"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "error_code": {
+ "type": "string"
+ },
+ "expected": {},
+ "key": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "json_equals",
+ "type": "string"
+ },
+ "passed": {
+ "const": false,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "expected",
+ "passed",
+ "error_code"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "contains": {
+ "type": "boolean"
+ },
+ "expected": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "body_contains",
+ "type": "string"
+ },
+ "passed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "expected",
+ "contains",
+ "passed"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "type": "array"
+ },
+ "body_sha256": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "body_truncated": {
+ "type": "boolean"
+ },
+ "bytes_observed": {
+ "type": "number"
+ },
+ "error_code": {
+ "type": "string"
+ },
+ "final_url": {
+ "type": "string"
+ },
+ "latency_ms": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "observed_at": {
+ "type": "string"
+ },
+ "probe_id": {
+ "type": "string"
+ },
+ "protocol": {
+ "const": "probe.evidence.v0",
+ "type": "string"
+ },
+ "redirect_chain": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "from_url": {
+ "type": "string"
+ },
+ "hop": {
+ "type": "number"
+ },
+ "location": {
+ "type": "string"
+ },
+ "rejection": {
+ "type": "string"
+ },
+ "resolved_url": {
+ "type": "string"
+ },
+ "status_code": {
+ "type": "number"
+ },
+ "validated": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "hop",
+ "from_url",
+ "status_code",
+ "validated"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "redirect_count": {
+ "type": "number"
+ },
+ "redirects_followed": {
+ "type": "boolean"
+ },
+ "status_code": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "target": {
+ "additionalProperties": false,
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "method": {
+ "enum": [
+ "GET",
+ "HEAD"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "host",
+ "method"
+ ],
+ "type": "object"
+ },
+ "termination": {
+ "type": "string"
+ },
+ "verdict": {
+ "enum": [
+ "PASS",
+ "FAIL",
+ "ERROR"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "protocol",
+ "probe_id",
+ "observed_at",
+ "verdict",
+ "target",
+ "status_code",
+ "latency_ms",
+ "body_sha256",
+ "bytes_observed",
+ "body_truncated",
+ "assertion_results",
+ "redirects_followed",
+ "redirect_count",
+ "final_url",
+ "redirect_chain",
+ "termination"
+ ],
+ "type": "object"
+ },
+ "summary": {
+ "additionalProperties": false,
+ "properties": {
+ "agreement": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "changed_since_previous": {
+ "type": "boolean"
+ },
+ "counts": {
+ "additionalProperties": false,
+ "properties": {
+ "ERROR": {
+ "type": "number"
+ },
+ "FAIL": {
+ "type": "number"
+ },
+ "PASS": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "PASS",
+ "FAIL",
+ "ERROR"
+ ],
+ "type": "object"
+ },
+ "dominant_verdict": {
+ "anyOf": [
+ {
+ "enum": [
+ "PASS",
+ "FAIL"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "observations": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "observations",
+ "counts",
+ "dominant_verdict",
+ "agreement",
+ "changed_since_previous"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "protocol",
+ "evidence_source",
+ "evidence_age_seconds",
+ "result",
+ "summary"
+ ],
+ "type": "object"
+}