61 lines
2.5 KiB
JSON
61 lines
2.5 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"title": "Triage Suppress Predicate v1",
|
|
"description": "Predicate schema for stella.ops/triageSuppress@v1. See docs/contracts/triage-suppress-v1.md.",
|
|
"type": "object",
|
|
"required": ["cve_id", "suppress_reason", "vex_consensus", "witness_evidence", "reachability_state", "timestamp"],
|
|
"properties": {
|
|
"cve_id": {
|
|
"type": "string",
|
|
"description": "CVE identifier (e.g., CVE-2025-0001)",
|
|
"pattern": "^CVE-\\d{4}-\\d{4,}$"
|
|
},
|
|
"suppress_reason": {
|
|
"type": "string",
|
|
"enum": ["vex_not_affected_with_unreachability_confirmation"],
|
|
"description": "Machine-readable reason for suppression"
|
|
},
|
|
"vex_consensus": {
|
|
"type": "object",
|
|
"required": ["status", "confidence_score", "consensus_digest", "computed_at"],
|
|
"properties": {
|
|
"status": { "type": "string", "enum": ["not_affected"] },
|
|
"justification": { "type": "string" },
|
|
"confidence_score": { "type": "number", "minimum": 0, "maximum": 1 },
|
|
"consensus_digest": { "type": "string", "description": "SHA-256 of the VexLens consensus record" },
|
|
"source_count": { "type": "integer", "description": "Number of VEX sources contributing" },
|
|
"computed_at": { "type": "string", "format": "date-time" }
|
|
}
|
|
},
|
|
"witness_evidence": {
|
|
"type": "object",
|
|
"required": ["witness_id", "dsse_digest", "observation_type"],
|
|
"properties": {
|
|
"witness_id": { "type": "string", "description": "Witness ID (wit:sha256:...)" },
|
|
"dsse_digest": { "type": "string", "description": "SHA-256 of the witness DSSE envelope" },
|
|
"observation_type": { "type": "string", "enum": ["RuntimeUnobserved", "ConfirmedUnreachable", "StaticallyUnreachable"] },
|
|
"predicate_type": { "type": "string", "description": "URI of the witness predicate type" }
|
|
}
|
|
},
|
|
"reachability_state": {
|
|
"type": "string",
|
|
"enum": ["ConfirmedUnreachable", "StaticallyUnreachable", "RuntimeUnobserved"],
|
|
"description": "Lattice state from the 8-state reachability model"
|
|
},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "UTC timestamp of suppression evaluation"
|
|
},
|
|
"deterministic_replay_inputs": {
|
|
"type": "object",
|
|
"description": "Inputs sufficient to replay this suppression decision",
|
|
"properties": {
|
|
"canonical_id": { "type": "string" },
|
|
"vex_consensus_digest": { "type": "string" },
|
|
"witness_id": { "type": "string" }
|
|
}
|
|
}
|
|
}
|
|
}
|