{
  "schema": "p31.contractRegistry/1.0.0",
  "version": "1.0.0",
  "generatedAt": "2026-05-01T12:36:41.085Z",
  "builder": {
    "uiPath": "/contract-builder.html",
    "shortPath": "/contracts",
    "anchor": "p31.contractBuilder/0.1.0",
    "note": "JSON rows from p31-alignment.json; EVM SMART suite from contracts/p31-smart-evm.json — npm run build:contract-registry",
    "smartSuite": "SMART",
    "smartSuiteExpanded": "Sovereign · Manifest · Access · Root · Treasury"
  },
  "count": 42,
  "contracts": [
    {
      "id": "p31-passport-anchor-pact-fingerprint",
      "path": "p31-passport-anchor-pact.json",
      "role": "Public anchor pact fingerprint stub (schema p31.anchorPactFingerprint/1.0.0); populate by running: p31 agent-hub anchor create; full signed pact at ~/.p31/anchor-pact.json",
      "schemas": [
        "p31.anchorPactFingerprint/1.0.0"
      ],
      "primarySchema": "p31.anchorPactFingerprint/1.0.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-atmosphere-ramp-json",
      "path": "docs/p31-atmosphere-ramp.json",
      "role": "p31.atmosphereRamp/1.0.0 — per-surface motion/type/starfield/sound posture vs universal canon; npm run verify:atmosphere-ramp",
      "schemas": [
        "p31.atmosphereRamp/1.0.0"
      ],
      "primarySchema": "p31.atmosphereRamp/1.0.0",
      "verifyHints": [
        "verify:atmosphere-ramp"
      ],
      "optional": false
    },
    {
      "id": "p31-atmosphere-hub-lib-json-ramp",
      "path": "andromeda/04_SOFTWARE/p31ca/public/lib/atmosphere/p31-atmosphere-ramp.json",
      "role": "Hub mirror of docs ramp JSON (verify:atmosphere-ramp drift vs design-assets)",
      "schemas": [
        "p31.atmosphereRamp/1.0.0"
      ],
      "primarySchema": "p31.atmosphereRamp/1.0.0",
      "verifyHints": [],
      "optional": true
    },
    {
      "id": "p31-atmosphere-routes-json",
      "path": "docs/p31-atmosphere-routes.json",
      "role": "p31.atmosphereRoutes/1.0.0 — surfaceId → rampId + starfieldAOD (on|off|degraded); pairs docs/p31-atmosphere-ramp.json",
      "schemas": [
        "p31.atmosphereRoutes/1.0.0"
      ],
      "primarySchema": "p31.atmosphereRoutes/1.0.0",
      "verifyHints": [
        "verify:atmosphere-ramp",
        "verify:quantum-clock"
      ],
      "optional": false
    },
    {
      "id": "bonding-atmosphere-routes-json",
      "path": "andromeda/04_SOFTWARE/bonding/public/p31-atmosphere/p31-atmosphere-routes.json",
      "role": "Bonding React cockpit fetch BASE + p31-atmosphere/*; kept in sync by npm run sync:atmosphere",
      "schemas": [
        "p31.atmosphereRoutes/1.0.0"
      ],
      "primarySchema": "p31.atmosphereRoutes/1.0.0",
      "verifyHints": [],
      "optional": true
    },
    {
      "id": "p31-atmosphere-preset-slice-json",
      "path": "design-assets/atmosphere/p31-canon-starfield-presets.json",
      "role": "Canon starfield.presets slice for browsers; regenerated by sync:atmosphere",
      "schemas": [
        "p31.canonStarfieldPresetsSlice/1.0.0"
      ],
      "primarySchema": "p31.canonStarfieldPresetsSlice/1.0.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "cars-wire-contract",
      "path": "cars-contract/p31.carsWire.json",
      "role": "p31.carsWire/0.1.0 — WebSocket message-type catalog for mock server + SoupEngine; verify:cars-wire",
      "schemas": [
        "p31.carsWire/0.1.0"
      ],
      "primarySchema": "p31.carsWire/0.1.0",
      "verifyHints": [
        "verify:cars-wire"
      ],
      "optional": false
    },
    {
      "id": "p31-chain-anchor",
      "path": "p31-chain-anchor.json",
      "role": "p31.chainAnchor/0.1.0 — EVM transparency anchor registry addresses + default manifest URLs; pairs with packages/p31-sovereign-chain; npm run verify:sovereign-chain",
      "schemas": [
        "p31.chainAnchor/0.1.0"
      ],
      "primarySchema": "p31.chainAnchor/0.1.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-constants",
      "path": "p31-constants.json",
      "role": "Operator-locked numbers, mission snippet, ground-truth version/schema pins, mesh URLs",
      "schemas": [
        "p31.cognitivePassport/1.0.0",
        "p31.integrationsBridge/1.0.0",
        "p31.ground-truth/1.0.0"
      ],
      "primarySchema": "p31.cognitivePassport/1.0.0",
      "verifyHints": [
        "verify:facts",
        "verify:edge-lab",
        "verify:shipbox",
        "verify:fleet-portal + verify:facts pathsMustExist fleet-portal.html + scripts/build-fleet-portal.mjs",
        "verify:constants",
        "verify:simplex",
        "verify:starfield",
        "implicit in bonding build; run hub build after sync when shipping",
        "p31ca prebuild: scripts/hub/verify.mjs",
        "verify:ecosystem; hub `verify-live-fleet-mesh.mjs` in p31ca matches mesh block to shipped `p31-mesh-constants.json`",
        "verify:constants (integrations schema, openCatalog https, src/public/json parity)",
        "test:triper:cert"
      ],
      "optional": false
    },
    {
      "id": "p31-contract-registry",
      "path": "contracts/p31-contract-registry.json",
      "role": "p31.contractRegistry/1.0.0 — JSON contract index derived from alignment sources; npm run build:contract-registry; verify:contract-registry; hub /contract-builder.html",
      "schemas": [
        "p31.contractRegistry/1.0.0"
      ],
      "primarySchema": "p31.contractRegistry/1.0.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-delta-language-json",
      "path": "docs/p31-delta-language.json",
      "role": "p31.deltaLanguage/1.0.0 machine registry (terms, anchors, forbidden, surface phrase packs); npm run verify:delta-language; sync → p31ca public via npm run sync:delta-language",
      "schemas": [
        "p31.deltaLanguage/1.0.0"
      ],
      "primarySchema": "p31.deltaLanguage/1.0.0",
      "verifyHints": [
        "verify:delta-language"
      ],
      "optional": false
    },
    {
      "id": "p31-delta-language-hub-json",
      "path": "andromeda/04_SOFTWARE/p31ca/public/p31-delta-language.json",
      "role": "Hub mirror of docs/p31-delta-language.json — kept in sync by npm run sync:delta-language / polish",
      "schemas": [
        "p31.deltaLanguage/1.0.0"
      ],
      "primarySchema": "p31.deltaLanguage/1.0.0",
      "verifyHints": [],
      "optional": true
    },
    {
      "id": "doc-index-manifest",
      "path": "docs/doc-index.manifest.json",
      "role": "Allowlist of markdown roots for docs/doc-library search index (p31.docIndexManifest/1.0.0)",
      "schemas": [
        "p31.docIndexManifest/1.0.0"
      ],
      "primarySchema": "p31.docIndexManifest/1.0.0",
      "verifyHints": [
        "verify:doc-index (after build:doc-index in root verify; Node uses npm minisearch, browser uses vendor UMD + worker). Browser e2e: npm run test:doc-library:e2e; also run in p31:all unless --skip-e2e",
        "verify:doc-library:p31ca-mirror (after verify:doc-index; fails if Andromeda mirror not committed). p31ca verify:ground-truth fileSnippets docLibrary.hubMirror, edgeRedirect /doc-library"
      ],
      "optional": false
    },
    {
      "id": "p31-env-manifest",
      "path": "p31-env-manifest.json",
      "role": "p31.envManifest/1.0.0 — catalog of P31_* env vars (names + semantics only); npm run verify:p31-env; npm run list:p31-env",
      "schemas": [
        "p31.envManifest/1.0.0"
      ],
      "primarySchema": "p31.envManifest/1.0.0",
      "verifyHints": [
        "verify:p31-env"
      ],
      "optional": false
    },
    {
      "id": "p31-facts",
      "path": "p31-facts.json",
      "role": "p31.facts/1.0.0 — machine-verified paths/keys; npm run verify:facts (mesh URLs, @p31/mesh, policy-file substring guard)",
      "schemas": [
        "p31.facts/1.0.0"
      ],
      "primarySchema": "p31.facts/1.0.0",
      "verifyHints": [
        "verify:facts",
        "verify:shipbox"
      ],
      "optional": false
    },
    {
      "id": "p31-fleet-entities-json",
      "path": "andromeda/04_SOFTWARE/p31ca/public/p31-fleet-entities.json",
      "role": "p31.fleetEntities/1.0.0 — merged Workers + supplemental bots/agents + probe hints; npm run build:fleet-entities in p31ca; NOT fleet-portal or live-fleet raw bundle",
      "schemas": [
        "p31.fleetEntities/1.0.0"
      ],
      "primarySchema": "p31.fleetEntities/1.0.0",
      "verifyHints": [],
      "optional": true
    },
    {
      "id": "p31-ground-truth",
      "path": "andromeda/04_SOFTWARE/p31ca/ground-truth/p31.ground-truth.json",
      "role": "p31.ground-truth/1.0.0 — edgeRedirects (+ Worker SPA 302 triple from worker-spa-launches.mjs), registry invariants, Three pins",
      "schemas": [
        "p31.ground-truth/1.0.0"
      ],
      "primarySchema": "p31.ground-truth/1.0.0",
      "verifyHints": [
        "from p31ca: npm run verify:ground-truth",
        "verify:education",
        "from p31ca: npm run verify:oqe-icosa (includes dome-cockpit OQE node check)"
      ],
      "optional": true
    },
    {
      "id": "p31-k4-agent-hub-manifest",
      "path": "p31-k4-agent-hub.json",
      "role": "p31.k4AgentHub/1.1.0 — K₄ agent worker tetrahedron canon (4 vertices, 6 edges, dock protocol, skill registry, federation, family-cage-wire); source for packages/k4-agent-hub/, agents.html, verify:k4-agent-hub",
      "schemas": [
        "p31.k4AgentHub/1.1.0"
      ],
      "primarySchema": "p31.k4AgentHub/1.1.0",
      "verifyHints": [
        "verify:k4-agent-hub (manifest + wrangler + topology.js + crypto + dispatcher + smoke + agents.html + p31ca mirror parity); npm run test:k4-agent-hub (K₄ invariant + skill registry + family triadic cover + Ed25519 sign/verify + dispatcher priority chain + federation P2P); npm run k4-agent-hub:client:test (anchor pact unit + Worker anchor route tests); npm run k4-agent-hub:smoke against a running hub (signed dock, signed call envelope, cross-edge, federation)"
      ],
      "optional": false
    },
    {
      "id": "p31ca-education-curriculum",
      "path": "andromeda/04_SOFTWARE/p31ca/public/education/curriculum.json",
      "role": "p31.labsEducationCurriculum/0.2.0 — tracks, modules, labs; verify:education",
      "schemas": [
        "p31.labsEducationCurriculum/0.2.0"
      ],
      "primarySchema": "p31.labsEducationCurriculum/0.2.0",
      "verifyHints": [
        "from p31ca: npm run verify:ground-truth",
        "verify:education"
      ],
      "optional": true
    },
    {
      "id": "p31-launch-checklist",
      "path": "p31-launch-checklist.json",
      "role": "p31.launchChecklist/0.1.0 — human-gate sign-off rows for launch; flip via npm run launch:check",
      "schemas": [
        "p31.launchChecklist/0.1.0"
      ],
      "primarySchema": "p31.launchChecklist/0.1.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-launch-lane",
      "path": "p31-launch-lane.json",
      "role": "p31.launchLane/0.1.0 derived index for governed Workers + p31ca; npm run generate:launch-lane after PRS or fleet URL edits",
      "schemas": [
        "p31.launchLane/0.1.0"
      ],
      "primarySchema": "p31.launchLane/0.1.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-launch-readiness-config",
      "path": "p31-launch-readiness-config.json",
      "role": "p31.launchReadinessConfig/0.1.0 — ten-lane market launch audit config; npm run verify:launch-readiness-config; runner npm run launch:audit / launch:gate / launch:rehearsal",
      "schemas": [
        "p31.launchReadinessConfig/0.1.0"
      ],
      "primarySchema": "p31.launchReadinessConfig/0.1.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-live-fleet",
      "path": "p31-live-fleet.json",
      "role": "Sites + mesh/payment snapshot; `sources[]` and mesh URLs must match `p31-constants.json` and worker-allowlist names",
      "schemas": [
        "p31.liveFleet/1.0.0"
      ],
      "primarySchema": "p31.liveFleet/1.0.0",
      "verifyHints": [
        "verify:production-readiness",
        "verify:launch-lane-sync",
        "verify:edge-lab",
        "verify:fleet-portal + verify:facts pathsMustExist fleet-portal.html + scripts/build-fleet-portal.mjs",
        "verify:live-fleet:p31ca-mirror (home vs hub mirror + entities) then verify:p31ca-contracts; hub prebuild verify-live-fleet-mesh locks mesh block to public/p31-mesh-constants.json",
        "verify:live-fleet:p31ca-mirror",
        "validate:full includes npm run quantum:cloud and npm run pqc:verify when p31ca is present",
        "test:triper:cert"
      ],
      "optional": false
    },
    {
      "id": "p31-mission-trio",
      "path": "andromeda/04_SOFTWARE/p31ca/src/data/p31-mission-trio.json",
      "role": "p31.missionTrio/1.0.0 — Build / Create / Connect: ephemeralization (create) + ethical monetization (connect) in hub copy and EBC; single source for sync’d footers",
      "schemas": [
        "p31.missionTrio/1.0.0"
      ],
      "primarySchema": "p31.missionTrio/1.0.0",
      "verifyHints": [
        "from p31ca: node scripts/verify-mission-trio.mjs"
      ],
      "optional": true
    },
    {
      "id": "p31-oqe-twenty-lexicon",
      "path": "andromeda/04_SOFTWARE/p31ca/public/p31-oqe-twenty.json",
      "role": "p31.oqeTwenty/1.0.0 — forensic 20-face contradiction slots; oqe-icosa.html; not Fate 20",
      "schemas": [
        "p31.oqeTwenty/1.0.0"
      ],
      "primarySchema": "p31.oqeTwenty/1.0.0",
      "verifyHints": [
        "from p31ca: npm run verify:oqe-icosa (includes dome-cockpit OQE node check)"
      ],
      "optional": true
    },
    {
      "id": "p31-production-readiness",
      "path": "p31-production-readiness.json",
      "role": "p31.productionReadiness/1.0.0 — PRS scoring for hub cards + Workers; verify:production-readiness + verify:launch-lane-sync; launchGovernance enforces governed Workers + pages floor",
      "schemas": [
        "p31.productionReadiness/1.0.0"
      ],
      "primarySchema": "p31.productionReadiness/1.0.0",
      "verifyHints": [
        "verify:production-readiness",
        "verify:launch-lane-sync"
      ],
      "optional": false
    },
    {
      "id": "p31-public-voice-guardrails-json",
      "path": "docs/p31-public-voice-guardrails.json",
      "role": "p31.publicVoiceGuardrails/1.0.0 — watched paths + regex guardrails for verify:public-voice (pairs docs/PUBLIC-VOICE.md)",
      "schemas": [
        "p31.publicVoiceGuardrails/1.0.0"
      ],
      "primarySchema": "p31.publicVoiceGuardrails/1.0.0",
      "verifyHints": [
        "verify:public-voice"
      ],
      "optional": false
    },
    {
      "id": "p31-quantum-deck-save-schema",
      "path": "packages/quantum-deck/schema/quantum-deck-save.schema.json",
      "role": "p31.quantumDeckSave/0.1.0 JSON Schema envelope (opaque state until rules engine ships)",
      "schemas": [
        "p31.quantumDeckSave/0.1.0"
      ],
      "primarySchema": "p31.quantumDeckSave/0.1.0",
      "verifyHints": [
        "verify:quantum-deck; future: Playwright smoke + verify:public-app-shell"
      ],
      "optional": false
    },
    {
      "id": "p31-reports-index",
      "path": "docs/reports/index.json",
      "role": "p31.reportsIndex/0.1.0 — committed metadata for operator reports (full bodies live in ~/.p31/reports/); rebuild via npm run reports:index; verify:reports-index",
      "schemas": [
        "p31.reportsIndex/0.1.0"
      ],
      "primarySchema": "p31.reportsIndex/0.1.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-reports-promoted-index",
      "path": "docs/reports/promoted/index.json",
      "role": "p31.reportsPromoted/0.1.0 — generated index of published reports (markdowns the operator opted in via npm run reports:promote). Build via npm run build:reports-promoted; verify:reports-promoted gates shape + every entry's .md exists.",
      "schemas": [
        "p31.reportsPromoted/0.1.0"
      ],
      "primarySchema": "p31.reportsPromoted/0.1.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-sovereign-layers",
      "path": "p31-sovereign-layers.json",
      "role": "p31.sovereignLayers/0.1.0 — full decentralized stack index (L1–L12); npm run verify:sovereign-layers; human map docs/P31-SOVEREIGN-LAYERS.md",
      "schemas": [
        "p31.sovereignLayers/0.1.0"
      ],
      "primarySchema": "p31.sovereignLayers/0.1.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-subscriptions",
      "path": "p31-subscriptions.json",
      "role": "p31.subscriptions/1.0.0 — canonical AI subscription stack (Opus + Gemini + Composer 2) + API budget; verify:subscriptions",
      "schemas": [
        "p31.subscriptions/1.0.0"
      ],
      "primarySchema": "p31.subscriptions/1.0.0",
      "verifyHints": [
        "verify:subscriptions"
      ],
      "optional": false
    },
    {
      "id": "p31-universal-canon",
      "path": "andromeda/04_SOFTWARE/design-tokens/p31-universal-canon.json",
      "role": "Colors, type scale, motion, focus — hub/org; mobileMeshFirst (touch, safe areas) in generated p31-style.css",
      "schemas": [
        "p31.universalCanon/1.0.0"
      ],
      "primarySchema": "p31.universalCanon/1.0.0",
      "verifyHints": [
        "verify:atmosphere-ramp",
        "verify:p31-style",
        "verify:quantum-material-u",
        "verify:style-alignment (about pages); visual doctrine compliance is manual.",
        "verify:style-alignment (from P31 home or p31ca/)"
      ],
      "optional": true
    },
    {
      "id": "p31-verify-pulse",
      "path": "docs/verify-pulse.json",
      "role": "p31.verifyPulse/0.1.0 — committed heartbeat of last 20 successful root verify runs (ts, git head, durationMs, stepCount). Operator records via npm run pulse or npm run verify:pulse. verify:verify-pulse gates shape; mirrored to p31ca/public/verify-pulse.json.",
      "schemas": [
        "p31.verifyPulse/0.1.0"
      ],
      "primarySchema": "p31.verifyPulse/0.1.0",
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31ca-worker-allowlist",
      "path": "andromeda/04_SOFTWARE/p31ca/security/worker-allowlist.json",
      "role": "p31.workerAllowlist/1.0.0 — named Workers + paths; inventory compares to all `wrangler.toml` under andromeda/04_SOFTWARE",
      "schemas": [
        "p31.workerAllowlist/1.0.0"
      ],
      "primarySchema": "p31.workerAllowlist/1.0.0",
      "verifyHints": [
        "from p31ca: npm run security:workers (also in npm run security:check after hub build in release paths)"
      ],
      "optional": true
    },
    {
      "id": "p31-k4-agent-hub-client-package",
      "path": "packages/k4-agent-hub-client/package.json",
      "role": "@p31/k4-agent-hub-client — operator-side client (Ed25519 keypair, signed dock + per-call envelope, dock/call/cross/topology/federation methods); pairs with packages/k4-agent-hub/",
      "schemas": [],
      "primarySchema": null,
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-k4-agent-hub-package",
      "path": "packages/k4-agent-hub/package.json",
      "role": "@p31/k4-agent-hub — Cloudflare Worker hosting four agent hub Durable Objects (FORGE/COUNSEL/SCHOLAR/SCRIBE); verify:k4-agent-hub + test:k4-agent-hub",
      "schemas": [],
      "primarySchema": null,
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-mesh-sdk",
      "path": "packages/p31-mesh/package.json",
      "role": "@p31/mesh — mesh fleet probe (personal+cage+hubs), agent client, `src/browser.mjs` (no fs); `scripts/verify-mesh-live.mjs`, `p31-mesh` / `p31 mesh` CLI",
      "schemas": [],
      "primarySchema": null,
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "p31-quantum-deck-package",
      "path": "packages/quantum-deck/package.json",
      "role": "@p31/quantum-deck — standard deck, Web Crypto shuffle, saved-game schema stub; verify:quantum-deck",
      "schemas": [],
      "primarySchema": null,
      "verifyHints": [
        "verify:quantum-deck; future: Playwright smoke + verify:public-app-shell"
      ],
      "optional": false
    },
    {
      "id": "p31-fleet-ten-local-ollama",
      "path": "scripts/p31-fleet-ten/models.json",
      "role": "Ten Ollama personas (merged prompts + setup.sh/verify.sh/benchmark.sh); static gate npm run verify:fleet-ten",
      "schemas": [],
      "primarySchema": null,
      "verifyHints": [
        "verify:fleet-ten",
        "verify:fleet-llm-bridge",
        "verify:ollama-mcp",
        "verify:ollama-tunnel-config"
      ],
      "optional": false
    },
    {
      "id": "simplex-email-worker",
      "path": "simplex-email/package.json",
      "role": "Inbound Email Worker (HERALD/tomograph ingest); npm run verify:simplex-email; see simplex-email/README.md and simplex-v7/DEPLOY.md §9",
      "schemas": [],
      "primarySchema": null,
      "verifyHints": [],
      "optional": false
    },
    {
      "id": "simplex-v7-worker",
      "path": "simplex-v7/package.json",
      "role": "SIMPLEX v7 Cloudflare Worker — D1 crew + SENTINEL; verify via npm run verify:simplex; deploy: simplex-v7/DEPLOY.md",
      "schemas": [],
      "primarySchema": null,
      "verifyHints": [
        "verify:passport; npm run verify:cognitive-passport-schema; npm run verify:cognitive-passport-profiles; npm run verify:simplex; npm run verify:simplex-email; npm run verify:simplex-bootstrap when SENTINEL / Context / HERALD email or simplex bootstrap / wrangler scaffold contract changes"
      ],
      "optional": false
    }
  ],
  "evm": {
    "schema": "p31.evmContractSuite/0.1.0",
    "suite": "SMART",
    "suiteExpanded": "Sovereign · Manifest · Access · Root · Treasury",
    "solidity": "0.8.24",
    "package": "packages/p31-sovereign-chain",
    "verifyScript": "verify:sovereign-chain",
    "generatedAt": "2026-05-01T12:36:41.054Z",
    "contracts": [
      {
        "letter": "S",
        "name": "P31TransparencyAnchor",
        "source": "packages/p31-sovereign-chain/src/P31TransparencyAnchor.sol",
        "role": "Sovereign — append-only digest + URI commitments.",
        "abi": [
          {
            "anonymous": false,
            "inputs": [
              {
                "indexed": true,
                "internalType": "uint256",
                "name": "id",
                "type": "uint256"
              },
              {
                "indexed": true,
                "internalType": "bytes32",
                "name": "digest",
                "type": "bytes32"
              },
              {
                "indexed": false,
                "internalType": "string",
                "name": "uri",
                "type": "string"
              },
              {
                "indexed": true,
                "internalType": "address",
                "name": "sender",
                "type": "address"
              },
              {
                "indexed": false,
                "internalType": "uint256",
                "name": "blockNumber",
                "type": "uint256"
              },
              {
                "indexed": false,
                "internalType": "uint256",
                "name": "timestamp",
                "type": "uint256"
              }
            ],
            "name": "Anchored",
            "type": "event"
          },
          {
            "inputs": [
              {
                "internalType": "bytes32",
                "name": "digest",
                "type": "bytes32"
              },
              {
                "internalType": "string",
                "name": "uri",
                "type": "string"
              }
            ],
            "name": "anchor",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "id",
                "type": "uint256"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "anchorCount",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "id",
                "type": "uint256"
              }
            ],
            "name": "getAnchor",
            "outputs": [
              {
                "components": [
                  {
                    "internalType": "bytes32",
                    "name": "digest",
                    "type": "bytes32"
                  },
                  {
                    "internalType": "string",
                    "name": "uri",
                    "type": "string"
                  },
                  {
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                  },
                  {
                    "internalType": "uint64",
                    "name": "blockNumber",
                    "type": "uint64"
                  },
                  {
                    "internalType": "uint64",
                    "name": "timestamp",
                    "type": "uint64"
                  }
                ],
                "internalType": "struct P31TransparencyAnchor.Anchor",
                "name": "",
                "type": "tuple"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          }
        ]
      },
      {
        "letter": "M",
        "name": "P31ManifestRegistry",
        "source": "packages/p31-sovereign-chain/src/P31ManifestRegistry.sol",
        "role": "Manifest — stable manifest id → latest digest + URI head.",
        "abi": [
          {
            "anonymous": false,
            "inputs": [
              {
                "indexed": true,
                "internalType": "bytes32",
                "name": "manifestId",
                "type": "bytes32"
              },
              {
                "indexed": false,
                "internalType": "bytes32",
                "name": "digest",
                "type": "bytes32"
              },
              {
                "indexed": false,
                "internalType": "string",
                "name": "uri",
                "type": "string"
              },
              {
                "indexed": true,
                "internalType": "address",
                "name": "publisher",
                "type": "address"
              },
              {
                "indexed": false,
                "internalType": "uint256",
                "name": "timestamp",
                "type": "uint256"
              }
            ],
            "name": "ManifestPublished",
            "type": "event"
          },
          {
            "inputs": [
              {
                "internalType": "bytes32",
                "name": "manifestId",
                "type": "bytes32"
              }
            ],
            "name": "head",
            "outputs": [
              {
                "components": [
                  {
                    "internalType": "bytes32",
                    "name": "digest",
                    "type": "bytes32"
                  },
                  {
                    "internalType": "string",
                    "name": "uri",
                    "type": "string"
                  },
                  {
                    "internalType": "address",
                    "name": "publisher",
                    "type": "address"
                  },
                  {
                    "internalType": "uint64",
                    "name": "updatedAt",
                    "type": "uint64"
                  }
                ],
                "internalType": "struct P31ManifestRegistry.Head",
                "name": "",
                "type": "tuple"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "bytes32",
                "name": "manifestId",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "digest",
                "type": "bytes32"
              },
              {
                "internalType": "string",
                "name": "uri",
                "type": "string"
              }
            ],
            "name": "publish",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
          }
        ]
      },
      {
        "letter": "A",
        "name": "P31AccessAllowlist",
        "source": "packages/p31-sovereign-chain/src/P31AccessAllowlist.sol",
        "role": "Access — owner-managed capability allowlist per address.",
        "abi": [
          {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
          },
          {
            "anonymous": false,
            "inputs": [
              {
                "indexed": true,
                "internalType": "bytes32",
                "name": "capability",
                "type": "bytes32"
              },
              {
                "indexed": true,
                "internalType": "address",
                "name": "who",
                "type": "address"
              },
              {
                "indexed": false,
                "internalType": "bool",
                "name": "allowed",
                "type": "bool"
              }
            ],
            "name": "AllowanceSet",
            "type": "event"
          },
          {
            "anonymous": false,
            "inputs": [
              {
                "indexed": true,
                "internalType": "address",
                "name": "previousOwner",
                "type": "address"
              },
              {
                "indexed": true,
                "internalType": "address",
                "name": "newOwner",
                "type": "address"
              }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
          },
          {
            "inputs": [
              {
                "internalType": "bytes32",
                "name": "capability",
                "type": "bytes32"
              },
              {
                "internalType": "address",
                "name": "who",
                "type": "address"
              }
            ],
            "name": "isAllowed",
            "outputs": [
              {
                "internalType": "bool",
                "name": "",
                "type": "bool"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "owner",
            "outputs": [
              {
                "internalType": "address",
                "name": "",
                "type": "address"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "bytes32",
                "name": "capability",
                "type": "bytes32"
              },
              {
                "internalType": "address",
                "name": "who",
                "type": "address"
              },
              {
                "internalType": "bool",
                "name": "allowed",
                "type": "bool"
              }
            ],
            "name": "setAllowed",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "next",
                "type": "address"
              }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
          }
        ]
      },
      {
        "letter": "R",
        "name": "P31ContentRoot",
        "source": "packages/p31-sovereign-chain/src/P31ContentRoot.sol",
        "role": "Root — owner-managed key → content CID (IPFS / Arweave).",
        "abi": [
          {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
          },
          {
            "anonymous": false,
            "inputs": [
              {
                "indexed": true,
                "internalType": "address",
                "name": "previousOwner",
                "type": "address"
              },
              {
                "indexed": true,
                "internalType": "address",
                "name": "newOwner",
                "type": "address"
              }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
          },
          {
            "anonymous": false,
            "inputs": [
              {
                "indexed": true,
                "internalType": "bytes32",
                "name": "key",
                "type": "bytes32"
              },
              {
                "indexed": false,
                "internalType": "string",
                "name": "cid",
                "type": "string"
              },
              {
                "indexed": true,
                "internalType": "address",
                "name": "sender",
                "type": "address"
              }
            ],
            "name": "RootSet",
            "type": "event"
          },
          {
            "inputs": [
              {
                "internalType": "bytes32",
                "name": "key",
                "type": "bytes32"
              }
            ],
            "name": "cidOf",
            "outputs": [
              {
                "internalType": "string",
                "name": "",
                "type": "string"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "owner",
            "outputs": [
              {
                "internalType": "address",
                "name": "",
                "type": "address"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "bytes32",
                "name": "key",
                "type": "bytes32"
              },
              {
                "internalType": "string",
                "name": "cid",
                "type": "string"
              }
            ],
            "name": "setRoot",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "next",
                "type": "address"
              }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
          }
        ]
      },
      {
        "letter": "T",
        "name": "P31TreasuryConfig",
        "source": "packages/p31-sovereign-chain/src/P31TreasuryConfig.sol",
        "role": "Treasury — Safe + USDC + home chain id; lockable.",
        "abi": [
          {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
          },
          {
            "anonymous": false,
            "inputs": [],
            "name": "Locked",
            "type": "event"
          },
          {
            "anonymous": false,
            "inputs": [
              {
                "indexed": true,
                "internalType": "address",
                "name": "previousOwner",
                "type": "address"
              },
              {
                "indexed": true,
                "internalType": "address",
                "name": "newOwner",
                "type": "address"
              }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
          },
          {
            "anonymous": false,
            "inputs": [
              {
                "indexed": true,
                "internalType": "address",
                "name": "safe",
                "type": "address"
              },
              {
                "indexed": true,
                "internalType": "address",
                "name": "usdc",
                "type": "address"
              },
              {
                "indexed": false,
                "internalType": "uint256",
                "name": "homeChainId",
                "type": "uint256"
              }
            ],
            "name": "TreasuryConfigured",
            "type": "event"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "safe_",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "usdc_",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "chainId_",
                "type": "uint256"
              }
            ],
            "name": "configure",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "homeChainId",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "lock",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "locked",
            "outputs": [
              {
                "internalType": "bool",
                "name": "",
                "type": "bool"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "owner",
            "outputs": [
              {
                "internalType": "address",
                "name": "",
                "type": "address"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "safe",
            "outputs": [
              {
                "internalType": "address",
                "name": "",
                "type": "address"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "next",
                "type": "address"
              }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "usdc",
            "outputs": [
              {
                "internalType": "address",
                "name": "",
                "type": "address"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          }
        ]
      }
    ]
  },
  "evmContractCount": 5
}
