Compiled Policy / DAG schema
The output of the DAG Compiler: every reconciled manifest touching a scope, composed into one versioned, immutable scope → capability graph.
{
"scope": "kb-search-agent",
"version": 1,
"tools": [
{"ref": "mcp://kb.internal/search", "data_classes": ["kb.public", "kb.internal"], "privileged": false}
],
"data_classes": {"reads": ["kb.public", "kb.internal"], "writes": []},
"downstream_agents": ["agent://ledger-agent"],
"paths": [
{"path": ["kb-search-agent", "ledger-agent"], "effective_hop_budget": 2}
],
"hop_budget": 4
}
ScopeCatalog (served by GET /v1/scopes/{scope}/catalog) omits paths; the full
CompiledPolicyRead — used internally by the PDP — includes it. effective_hop_budget on each
path is the minimum budget along that delegation path, not any single manifest's own value —
a downstream agent can only ever narrow a chain's remaining budget, never widen it.