{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rage.fail/schemas/0.1/path.schema.json",
  "title": "RAGE Path (optional)",
  "description": "A precomputed multi-hop attack path: an ordered chain of edges from a source node to a target. Optional extension kind \u2014 consumers that don't understand it skip it.",
  "type": "object",
  "required": [
    "kind",
    "edge_ids"
  ],
  "additionalProperties": true,
  "properties": {
    "kind": {
      "const": "path"
    },
    "path_id": {
      "type": "string"
    },
    "source": {
      "type": "string",
      "description": "start node_id"
    },
    "target": {
      "type": "string",
      "description": "end node_id (the objective)"
    },
    "edge_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "ordered edge_ids forming the path; each MUST reference an edge in the graph"
    },
    "score": {
      "type": "number",
      "description": "aggregate path score (e.g. sum of edge weights); see spec/format.md for weight semantics"
    },
    "narrative": {
      "type": "string"
    }
  }
}