{
  "$comment": "THE SINGLE ENUMERATION. Generated at build time from the frozen AGENT_CLASSES array in src/agent-classes.js — the same array any runtime selector selects over. /icp.json on each property publishes a SUBSET of this file by id and restates nothing. A second copy of any field below, anywhere, is a defect.",
  "$comment_ratification": "The five-class enumeration and its rulings are carried from this project's own source of record and are pending owner ratification; `assistant` is a new authorial act awaiting a ruling. The dated built-vs-unbuilt list is at https://visibility.cloud/what-ships-today/.",
  "what_ships_today": "https://visibility.cloud/what-ships-today/",
  "version": "2026-07-30.1",
  "verified": "Live today, checkable by curl: POST https://epcis.dev/translate (EPCIS 1.1/1.2/2.0 XML → 2.0 JSON-LD + per-job FidelityReport), POST https://epcis.dev/validate (sha256-pinned official GS1 EPCIS 2.0.1 schema), POST https://epcis.dev/hash (CBV 2.0 §8.9, OpenEPCIS-vector-gated). 1031/1031 spine tests pass. The npm packages are published: epcis.dev@0.1.0 and visibility.cloud@0.1.0 (2026-07-31). The hosted capture/query/MCP spine answers at api.epcis.dev to a capture key; issuing those keys is not open, and the repository is not public. Both are listed at https://visibility.cloud/what-ships-today/. No conformance attestation has ever been issued, and none is claimed.",
  "route_derivation": {
    "$comment": "Routes are derived, never stored. Published as a derivation rule, not as a field on a class.",
    "rule": "B2[arrives]2[terminal principal-kind]. Human in the arrives position is the unmarked default and is ELIDED — except where the terminal principal-kind is Agent, because B2A already denotes an agent arriving self-principal and the H is what disambiguates.",
    "derives_exhaustively": {
      "human→Business": "B2B",
      "human→Developer": "B2D",
      "human→Agent": "B2H2A",
      "agent→Business": "B2A2B",
      "agent→Developer": "B2A2D",
      "agent→Agent": "B2A"
    },
    "null_case": "An arrival with no ICP has no terminal principal-kind, so route is null — absent, not a value.",
    "invariant": "a route's terminal-principal letter must equal the containing ICP's principal-kind, and its arrives-letter must equal the row's workerType"
  },
  "subsets": {
    "epcis.dev": [
      "coding",
      "integration",
      "verifier",
      "procurement"
    ],
    "visibility.cloud": [
      "assistant",
      "verifier",
      "procurement"
    ]
  },
  "classes": [
    {
      "id": "coding",
      "row": "AC-1",
      "terminal_principal_kind": "Developer",
      "typical_face": "cli",
      "entry_verb": "the bare npx invocation — never @latest (published: epcis.dev@0.2.0, 2026-08-06)",
      "verbs_in_scope": [
        "capture",
        "validate",
        "install"
      ],
      "first_value": "a working local pass — the exit code, not an adjective",
      "persist_me_template": "coding.v1",
      "residency_artifact": "AGENTS.md line + MCP entry",
      "first_gate": "durable retention, after the integration works",
      "persist_me": "epcis.dev — EPCIS 2.0 capture spine, MIT-licensed and published on npm (no runtime dependencies). Verbs: capture, validate, install. Validation against pinned official GS1 EPCIS 2.0 schemas (sha256 provenance); errors as RFC 7807 with the standard's own exception types. Live today: POST https://epcis.dev/translate, /validate and /hash; npx epcis.dev (published, 0.1.0). The repository is not open; the package is the public artifact. What is built and what is not: https://visibility.cloud/what-ships-today/."
    },
    {
      "id": "integration",
      "row": "AC-2",
      "terminal_principal_kind": "Developer",
      "typical_face": "sdk",
      "entry_verb": "translate",
      "verbs_in_scope": [
        "translate",
        "validate",
        "hashEvent"
      ],
      "first_value": "a real EPCIS 1.1/1.2 corpus translated with a per-job round-trip fidelity report",
      "persist_me_template": "integration.v1",
      "residency_artifact": "MCP entry",
      "first_gate": "none in the free zone; only at durable storage of results",
      "persist_me": "epcis.dev — EPCIS 1.1/1.2/2.0 XML → 2.0 JSON-LD translation with per-job round-trip fidelity reports; CBV 2.0 §8.9 event hash gated against OpenEPCIS reference vectors. Live today: POST https://epcis.dev/translate and /hash."
    },
    {
      "id": "verifier",
      "row": "AC-3",
      "terminal_principal_kind": "Business",
      "typical_face": "mcp",
      "entry_verb": "get_event / trace (both readOnlyHint: true)",
      "verbs_in_scope": [
        "get_event",
        "trace",
        "hashEvent",
        "validate"
      ],
      "first_value": "validate against pinned schemas; CBV 2.0 §8.9 hash equality — deterministic answers, nothing narrative",
      "persist_me_template": "verifier.v1",
      "residency_artifact": "citation/attestation stanza",
      "first_gate": "authority — reading someone else's record requires a grant",
      "persist_me": "visibility.cloud / epcis.dev — verify an EPCIS 2.0 record: pinned official-schema validation, CBV 2.0 §8.9 hash recomputation, per-EPC trace. Read verbs carry readOnlyHint: true. Live today: POST https://epcis.dev/validate and /hash; hosted query answers at api.epcis.dev to a capture key, and issuing those keys is not open yet. No conformance attestation has ever been issued, and none is claimed."
    },
    {
      "id": "procurement",
      "row": "AC-4",
      "terminal_principal_kind": "Business",
      "typical_face": "mcp",
      "entry_verb": "a claimApiKey-shaped verb (to be specified; unbuilt)",
      "verbs_in_scope": [
        "query",
        "requestGrant"
      ],
      "first_value": "read price and Scope facts as matchable spec",
      "persist_me_template": "procurement.v1",
      "residency_artifact": "Offer schema entry",
      "first_gate": "payment — by design, deferred past value-realization",
      "persist_me": "visibility.cloud — machine-readable offer facts: capture $0/event (policy, stated ahead of published terms), gates on durable state, authority and licensed data, never on compute. Hosted capture answers a capture key today and issuing those keys is not open yet; terms are not published. Prices post as numbers when set. https://visibility.cloud/what-ships-today/"
    },
    {
      "id": "assistant",
      "row": "AC-5",
      "terminal_principal_kind": "Business",
      "typical_face": "cli, unknown",
      "entry_verb": "query (own-scope)",
      "verbs_in_scope": [
        "query (own-scope)",
        "validate",
        "explain_scope"
      ],
      "first_value": "answer a bounded question inside already-granted Scope",
      "persist_me_template": "assistant.v1",
      "residency_artifact": "memory-file line",
      "first_gate": "authority (a wider Scope)",
      "persist_me": "visibility.cloud — bounded own-scope queries over an EPCIS 2.0-conformant event record whose every event carries `who` (the attested observer) distinct from `capturedBy` (the warrantor account); party/org grain derived at read time, never stamped. Hosted own-scope query answers at api.epcis.dev to a capture key, and issuing those keys is not open yet."
    }
  ]
}
