{
  "continuity_version": "1.5",
  "invariants": {
    "identity_continuity": "every grant names issuer and subject; a root must be issued by a human principal",
    "authority_continuity": "every non-root grant points at a parent, the walk terminates at a root, and no ancestor is revoked",
    "boundary_integrity": "scope is a subset of the parent's, constraints are at least as tight on every axis, onward delegations decrease",
    "intent_continuity": "purpose tags narrow; an action outside them is challenged, not assumed",
    "temporal_validity": "every ancestor is inside its window at the instant of evaluation, not at the instant of issue",
    "evidence_continuity": "every grant, revocation, evaluation and execution binding is sealed in the AILeash chain",
    "risk_acceptance": "every lineage names a person who accepts the risk of the authority existing, separately from who granted it and who holds it. A grant that lets its holder delegate onward must name its own acceptor rather than inherit one, because that risk did not exist when the acceptor above signed up to it"
  },
  "scope_grammar": "dot-separated capabilities. 'a.b.*' covers 'a.b' and anything beneath it. '*' covers everything and always challenges.",
  "constraint_grammar": {
    "max_*": "child <= parent; action value must not exceed the tightest in the lineage",
    "min_*": "child >= parent",
    "allowed_*": "child set is a subset of the parent set",
    "denied_*": "child set is a superset of the parent set",
    "may_*": "child may be true only where the parent is true",
    "unknown": "a key matching no rule, or absent from the parent, is refused rather than guessed at"
  },
  "verdicts": {
    "ALLOW": "no invariant failed and no uncertainty remained",
    "CHALLENGE": "no invariant failed but intent, breadth or an unconstrained dimension left a question a machine should not answer alone",
    "BLOCK": "an invariant failed; the response names the grant and the invariant"
  },
  "no_union": "one action derives from one lineage. Grants are never combined, because two narrow authorities that jointly exceed either is the oldest escalation there is.",
  "digest": "sha256('AILEASH-GRANT-v1:' || canonical JSON of the grant's semantic fields, keys sorted, no whitespace). Parent is inside the digest, so re-parenting is detectable.",
  "why_published": "An authority decision nobody can re-derive is an assertion. These rules are sufficient to reimplement the evaluator and disagree with us."
}