{
  "schema": "glasscastle.fabric.artifact-registry.v1",
  "version": "1.0.0",
  "envelope": {
    "protocol": "glasscastle.fabric.artifact-envelope.v1",
    "version": "1.0.0",
    "required_fields": [
      "protocol",
      "version",
      "artifact_id",
      "artifact_type",
      "producer",
      "created_at",
      "subject",
      "provenance",
      "confidence",
      "evidence_refs",
      "integrity",
      "authority_context",
      "payload"
    ],
    "authority_context": {
      "transferable": false,
      "inherited": false,
      "grants": []
    },
    "integrity": {
      "algorithm": "sha256",
      "covers": "payload"
    },
    "transport_semantics": [
      "Artifacts may be exported or handed off explicitly.",
      "Transport does not imply acceptance.",
      "Acceptance does not transfer authority.",
      "Consumers must preserve provenance and source confidence."
    ]
  },
  "artifact_types": [
    {
      "id": "scope-contract",
      "class": "boundary",
      "producers": [
        "scopesentinel"
      ],
      "consumers": [
        "kork",
        "shatterassay"
      ],
      "description": "Compiled authorization/scope boundary used to constrain downstream work.",
      "semantics": [
        "Scope state travels with the artifact.",
        "ALLOW is not execution authority."
      ]
    },
    {
      "id": "evidence-bundle",
      "class": "evidence",
      "producers": [
        "kork"
      ],
      "consumers": [
        "shatterassay",
        "glasswitness"
      ],
      "description": "Collected observations and pinned evidence with provenance.",
      "semantics": [
        "Observation is not finding.",
        "Missing provenance remains quality debt."
      ]
    },
    {
      "id": "investigation-topology",
      "class": "topology",
      "producers": [
        "kork"
      ],
      "consumers": [
        "blastradial",
        "investigation-console"
      ],
      "description": "Artifact/entity relationship topology for investigation and modeling.",
      "semantics": [
        "Relationship is not causality.",
        "Association is not ownership."
      ]
    },
    {
      "id": "assessment-findings",
      "class": "finding-set",
      "producers": [
        "shatterassay"
      ],
      "consumers": [
        "glasswitness",
        "blastradial",
        "investigation-console"
      ],
      "description": "Assessment observations, review items, hypotheses, and candidate findings.",
      "semantics": [
        "Review item is not validated finding.",
        "Control score is not exploitability."
      ]
    },
    {
      "id": "validation-receipt",
      "class": "receipt",
      "producers": [
        "glasswitness"
      ],
      "consumers": [
        "blastradial",
        "investigation-console"
      ],
      "description": "Deterministic validation receipt over controlled evidence.",
      "semantics": [
        "Receipt integrity is not claim truth.",
        "Claim-ready is not external acceptance."
      ]
    },
    {
      "id": "impact-model",
      "class": "model",
      "producers": [
        "blastradial"
      ],
      "consumers": [
        "investigation-console"
      ],
      "description": "Modeled propagation/consequence paths derived from supplied topology and context.",
      "semantics": [
        "Modeled reach is not observed impact.",
        "Priority path is not proven causality."
      ]
    },
    {
      "id": "audit-record",
      "class": "audit",
      "producers": [
        "sec-tp"
      ],
      "consumers": [
        "investigation-console"
      ],
      "description": "Owner-controlled operation/observation audit record.",
      "semantics": [
        "Pairing is identity, not universal capability.",
        "Receipt records an action boundary; it does not widen grants."
      ]
    },
    {
      "id": "readiness-findings",
      "class": "finding-set",
      "producers": [
        "launch-readiness"
      ],
      "consumers": [
        "glasswitness"
      ],
      "description": "Outside-in launch/readiness observations requiring validation before stronger claims.",
      "semantics": [
        "Readiness observation is not validation."
      ]
    },
    {
      "id": "intelligence-handoff",
      "class": "intelligence",
      "producers": [
        "torus-osint"
      ],
      "consumers": [
        "investigation-console"
      ],
      "description": "Manual intelligence handoff with observations, findings, chronology, and provenance.",
      "semantics": [
        "Observation is not finding.",
        "Finding is not conclusion.",
        "Score is not confidence."
      ]
    },
    {
      "id": "findings-draft",
      "class": "draft",
      "producers": [
        "wallet-investigation-kit"
      ],
      "consumers": [
        "investigation-console"
      ],
      "description": "Educational/investigation findings draft for deliberate case intake.",
      "semantics": [
        "Draft is not adjudicated finding."
      ]
    },
    {
      "id": "analyst-handoff",
      "class": "handoff",
      "producers": [
        "web3-triage-pack"
      ],
      "consumers": [
        "investigation-console"
      ],
      "description": "Structured incident triage handoff for ongoing investigation.",
      "semantics": [
        "Handoff transfers context, not authority."
      ]
    },
    {
      "id": "case-record",
      "class": "record",
      "producers": [
        "investigation-console"
      ],
      "consumers": [],
      "description": "Terminal case record containing provenance, dispositions, closure state, and advisory remediation context.",
      "semantics": [
        "Recommendation is not execution authority.",
        "Disposition is not completed remediation.",
        "Ready for human close is not automatic close."
      ]
    }
  ],
  "terminal_artifacts": [
    "case-record"
  ],
  "global_invariants": [
    "Artifacts move; authority does not.",
    "Every artifact preserves producer identity and provenance.",
    "Unknown is not false.",
    "Transport is not acceptance.",
    "Acceptance is not execution authority.",
    "No artifact envelope may carry transferable authority."
  ]
}
