{
  "x-comment": [
    "The roles Flashy ID declares, and the minimal form of its AAO charter.",
    "",
    "Three of the four are trust roles, which is correct and not padding: this",
    "repository issues authority, and every rule in CLAUDE.md that must never bend",
    "is a property of how that authority is issued. Attenuation, enforcement and",
    "assertion are the three, declared separately because they fail separately.",
    "",
    "Families deliberately empty: product, inbound, conversion, retention,",
    "finance. Identity is consumed by other organisations in the estate; it sells",
    "nothing of its own. An empty family is honest.",
    "",
    "Names follow the AAO naming standard. See https://flashyos.com/standard."
  ],
  "aao": "0.1",
  "name": "Flashy ID",
  "slug": "flashyid",
  "description": "The identity layer for inter-organizational agent coordination: one account, verified once, recognised by every organization that accepts it.",
  "accountableTo": "michael@gda.capital",
  "escalation": "attenuation",
  "repositories": [
    {
      "name": "flashyid",
      "url": "github.com/FlashyLabs/flashyid",
      "default": true,
      "holds": [
        "oidc-provider",
        "grant-kernel",
        "sdk",
        "clients"
      ]
    }
  ],
  "roles": [
    {
      "name": "attenuation",
      "family": "risk",
      "purpose": "Guarantees a grant only ever carries a subset of the granter's scopes. If a change could let a child hold authority its parent lacks, this role rejects it.",
      "measure": "Grants issued whose scopes are a strict subset of the granter's, as a share issued — the target is every one",
      "capabilities": [
        "issue",
        "attenuate",
        "reject"
      ],
      "humanApprovalAtOrAbove": "HIGH",
      "worksIn": [
        "flashyid"
      ]
    },
    {
      "name": "enforcement",
      "family": "risk",
      "purpose": "Holds the ALLOW/DENY/ESCALATE gate. Nothing may mint authority ahead of the thing that enforces it; identity nothing checks is theatre.",
      "measure": "Authority-minting paths with an enforcing gate in front of them, as a share of such paths",
      "capabilities": [
        "gate",
        "allow",
        "deny",
        "escalate"
      ],
      "humanApprovalAtOrAbove": "HIGH",
      "worksIn": [
        "flashyid"
      ]
    },
    {
      "name": "assertion",
      "family": "risk",
      "purpose": "Binds subject to holder and verifies the chain rather than the signature alone. A valid signature over the wrong subject is a forgery that validates.",
      "measure": "Assertions verified chain-deep, as a share of assertions accepted",
      "capabilities": [
        "verify",
        "bind",
        "revoke"
      ],
      "humanApprovalAtOrAbove": "HIGH",
      "worksIn": [
        "flashyid"
      ]
    },
    {
      "name": "release",
      "family": "engineering",
      "purpose": "Ships the provider and the SDK together. A provider ahead of its SDK leaves integrators holding a contract nothing implements.",
      "measure": "Releases where provider and SDK ship the same contract version",
      "capabilities": [
        "build",
        "publish",
        "version"
      ],
      "humanApprovalAtOrAbove": "MEDIUM",
      "worksIn": [
        "flashyid"
      ]
    }
  ]
}
