{
  "host": "https://schemas.billylives.com",
  "generated_at": "2026-05-24T08:39:54.599Z",
  "count": 21,
  "schemas": [
    {
      "path": "benchmarks/schema/fixture-manifest.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/fixture-manifest.schema.json",
      "$id": "https://schemas.billylives.com/benchmarks/schema/fixture-manifest.schema.json",
      "title": "BenchFixtureManifest",
      "description": "SHA-pinned manifest for third-party benchmark corpora. Fetched into benchmarks/.cache/<suite>/<name>/ on first run; never refetched once sha256 matches.",
      "bytes": 1250,
      "sha256": "024f53acf79d57e4349018207cb01f804f5ae2caba561958dcef48038ecc138b"
    },
    {
      "path": "benchmarks/schema/mission-fixture.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/mission-fixture.schema.json",
      "$id": "https://schemas.billylives.com/benchmarks/schema/mission-fixture.schema.json",
      "title": "MissionFixture",
      "description": "Hermetic mission scenario for benchmarks/suites/mission-completion/. Specifies the objective, scripted per-phase LLM outputs (for replanner + counterpoint stubs), mocked tool responses keyed by tool+arg-hash, expected phase-graph edges, keyword recall targets, expected counterpoint triggers, and per-fixture budgets.",
      "bytes": 4074,
      "sha256": "e81215e3387df98612149f9219fab600c9322e209c8481b585a3c559f05db31c"
    },
    {
      "path": "benchmarks/schema/recall-corpus.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/recall-corpus.schema.json",
      "$id": "https://schemas.billylives.com/benchmarks/schema/recall-corpus.schema.json",
      "title": "RecallCorpus",
      "description": "Hermetic JSONL pair for benchmarks/suites/multi-agent-memory/ `recall-at-k`. One `corpus.jsonl` of `{id, text}` docs + one `queries.jsonl` of `{id, query, gold: [doc_id, ...]}` retrieval cases. Kept deliberately minimal so a SciFact / HotpotQA subset can drop in later without touching the scorer.",
      "bytes": 1535,
      "sha256": "00e96ef59a5ae89f18381645bd6b1d78e92c91189d214ac7473bc25366a23d36"
    },
    {
      "path": "benchmarks/schema/result.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/result.schema.json",
      "$id": "https://schemas.billylives.com/benchmarks/schema/result.schema.json",
      "title": "BenchResult",
      "description": "Canonical per-run benchmark result. Emitted by harness/reporter, consumed by the admin backend and the /admin/bench/metrics.prom exporter.",
      "bytes": 3270,
      "sha256": "97db9d813917c7677ca664f0659f24ec11c5bd2802182fed866aad35f1f7642d"
    },
    {
      "path": "benchmarks/schema/routing-corpus.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/routing-corpus.schema.json",
      "$id": "https://schemas.billylives.com/benchmarks/schema/routing-corpus.schema.json",
      "title": "RoutingCorpus",
      "description": "Hermetic JSONL corpus for benchmarks/suites/department-routing/. Each line is one routing case: a user utterance + the fixture-expected specialist agent (and optionally the tool it should invoke first). Read line-by-line so corpora can grow without touching the schema loader.",
      "bytes": 1765,
      "sha256": "1b88748a4dd7159003d2cc31b0d2d0cfb27bfa13a67e64fd6c30ea17be9bff54"
    },
    {
      "path": "benchmarks/schema/rubric.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/rubric.schema.json",
      "$id": "https://schemas.billylives.com/benchmarks/schema/rubric.schema.json",
      "title": "BenchRubric",
      "description": "F-class rubric definition. Each item scored 0..5 with an evidence link. Reviewer fills the blanks; harness uploads the result.",
      "bytes": 1153,
      "sha256": "be3706c337965955b6e9306872e921ab719e89e71c4125c50d20461510098449"
    },
    {
      "path": "benchmarks/schema/scenario.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/scenario.schema.json",
      "$id": "https://schemas.billylives.com/benchmarks/schema/scenario.schema.json",
      "title": "BenchScenario",
      "description": "Declarative scenario spec. Loaded per suite at harness startup.",
      "bytes": 2198,
      "sha256": "3074eef5927dba19b91797f9058034de55eddd613b69de358e779273fde06889"
    },
    {
      "path": "benchmarks/schema/signal-timeline.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/signal-timeline.schema.json",
      "$id": "https://schemas.billylives.com/benchmarks/schema/signal-timeline.schema.json",
      "title": "SignalTimeline",
      "description": "Hermetic signal timeline for benchmarks/suites/proactive-foresight/. Replays a sequence of foresight Signal events against a mocked clock and records the adapter's outreach decisions; fixtures declare the expected outreach moments + content keywords for the scorer.",
      "bytes": 2925,
      "sha256": "43eadd18603442f887b0a86dd13fd33219958e034e4175a2ecfd24b8776756c7"
    },
    {
      "path": "benchmarks/schema/tool-use-corpus.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/tool-use-corpus.schema.json",
      "$id": "https://schemas.billylives.com/benchmarks/schema/tool-use-corpus.schema.json",
      "title": "ToolUseCorpus",
      "description": "Hermetic JSONL corpus for benchmarks/suites/agent-orchestration/ `tool-use-accuracy`. Each line is one function-calling case: a user query, the available tool schemas the agent should pick from, and the gold call sequence. Shape deliberately BFCL-compatible so we can graft a 20-task BFCL subset in later without touching the scorer.",
      "bytes": 2331,
      "sha256": "0fbc0ee848e1e1c5cdf242254ba266b7873034ffb1a5832eee8428b1f6199f0d"
    },
    {
      "path": "contracts/domain/substrate/substrate_state.schema.json",
      "url": "https://schemas.billylives.com/contracts/domain/substrate/substrate_state.schema.json",
      "$id": "https://schemas.billylives.com/contracts/domain/substrate/substrate_state.schema.json",
      "title": "SubstrateStateEnvelope",
      "description": "Full persistence envelope written by the AI substrate controller and served via GET /api/v1/substrate/state.",
      "bytes": 10264,
      "sha256": "84a029121875c72bd2d0673b57d325dab5232e98b5c75f568ccc962794bd96bb"
    },
    {
      "path": "contracts/observe/telemetry/log_envelope.schema.json",
      "url": "https://schemas.billylives.com/contracts/observe/telemetry/log_envelope.schema.json",
      "$id": "https://schemas.billylives.com/contracts/observe/telemetry/log_envelope.schema.json",
      "title": "Billy Log Envelope",
      "description": "Canonical JSON shape every Billy log emitter must produce (ADR-159).",
      "bytes": 2593,
      "sha256": "1917f9826a4735b5f7f3d8e6fcd9b785e953a1f5ce3afc9ab1cc24caa0a3356d"
    },
    {
      "path": "contracts/observe/user/events.schema.json",
      "url": "https://schemas.billylives.com/contracts/observe/user/events.schema.json",
      "$id": "https://schemas.billylives.com/contracts/observe/user/events.schema.json",
      "title": "Billy User Telemetry Contract",
      "description": "Source-of-truth JSON Schema for client-emitted user events, client-session context, and typed user preferences. Generates contracts/observe/user/events.generated.ts (zod) via scripts/codegen/forward/workspace/zod/user.mjs; Go structs at services/backend/api/internal/handler/telemetry/events.go must keep field tags in sync.",
      "bytes": 10696,
      "sha256": "00c3183cb827a0f931c1e9635f9996789e0ae2d3eeb84555e5649e13dff99958"
    },
    {
      "path": "contracts/trust/vendors/vendors.schema.json",
      "url": "https://schemas.billylives.com/contracts/trust/vendors/vendors.schema.json",
      "$id": "https://schemas.billylives.com/contracts/trust/vendors/vendors.schema.json",
      "title": "Vendor / Data-Processor Registry (vendors.toml)",
      "description": "Tier-0 contract for every external destination Billy dials. One source, six projections — same shape as the network DSL.\n\nProjections:\n  • services/backend/shared/netcfg/vendors_gen.go    — Go runtime (LookupVendor, MODEL_COSTS, ModelCost)\n  • services/ai/core/foundation/io/net/_vendors_gen.py             — Python runtime (lookup_vendor, MODEL_COSTS, model_cost)\n  • services/backend/api/internal/handler/connect/admin/compliancerpc/vendors.gen.json — admin embed JSON\n  • infra/network/vendors.json                       — manifest for the network DSL validators\n  • policy/cedar/schema.cedarschema (Billy::Vendor)  — entity attribute mirror (cross-checked by check_vendors_cedar_parity)\n  • core.llm.costs.MODEL_COSTS                       — derived alias-expanded lookup table\n\nCross-checks:\n  • infra/network/checks/vendors.py — vendors.toml ↔ perimeter.firewall coverage + BAA inventory\n  • scripts/codegen/forward/trust/vendors/lint.py — every Cedar Vendor attribute is producible from every vendor row\n  • scripts/codegen/forward/trust/vendors/compile.py --check — byte-parity drift gate against committed projections\n\nCost catalogue: each LLM-class vendor MAY declare a `cost` table mapping model id → cents-per-million-tokens rates. The vendor-cost-poll Forgejo workflow (.forgejo/workflows/vendor-costs.yml) refreshes these rates from `pricing_url` and opens a PR when drift is detected.",
      "bytes": 13148,
      "sha256": "5fa79554ddcd47e77c5772fc5aef3cba0982201f943841c5b94a3a69475b4fb0"
    },
    {
      "path": "contracts/wire/network/budget.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/budget.schema.json",
      "$id": "https://schemas.billylives.com/contracts/wire/network/budget.schema.json",
      "title": "Per-LLM Cost Governance (spend.budget)",
      "description": "Per-route, per-tier, and per-tenant cost ceilings consumed by services/backend/shared/spend (Go) + services/ai/core/spend (Python). The runtime gate consults these maps before every LLM dial — see ADR-088.",
      "bytes": 3409,
      "sha256": "4c7993d8b5559c011f49e80861108a230fb26d5518af000392dbc93d7d9e7409"
    },
    {
      "path": "contracts/wire/network/dns.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/dns.schema.json",
      "$id": "https://schemas.billylives.com/contracts/wire/network/dns.schema.json",
      "title": "DNS Security Policy (records.dns)",
      "description": "Domain CAA records (which CAs may issue for our domain) plus per-subdomain ingress topology. Per-service hostname egress lives in perimeter.firewall — never re-introduce a `resolution_policy:` block here.",
      "bytes": 3303,
      "sha256": "eab617a7a2d4d371ed8569e5487ea73d1c3d6bfe23798077d1c4d7dfdfd87426"
    },
    {
      "path": "contracts/wire/network/firewall.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/firewall.schema.json",
      "$id": "https://schemas.billylives.com/contracts/wire/network/firewall.schema.json",
      "title": "Perimeter Firewall (perimeter.firewall)",
      "description": "Per-service ingress posture + egress allowlist. The single source of truth that gen_netcfg.py compiles into AllowedEgress (Go), ALLOWED_EGRESS (Python), and netcfg.json for the Terraform perimeter module.",
      "bytes": 4137,
      "sha256": "1911e5fc9512f1ef02aaf9857ba833e04b4c37b12f0ff5a0afffea62a42c8c00"
    },
    {
      "path": "contracts/wire/network/socket.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/socket.schema.json",
      "$id": "https://schemas.billylives.com/contracts/wire/network/socket.schema.json",
      "title": "Socket-Type Affinity (topology.socket)",
      "description": "Per-pair socket selection (UDS / TCP localhost / HTTPS) plus the env-var + default-address wiring every consumer needs to dial each destination.",
      "bytes": 6056,
      "sha256": "0cafd658683793c90383d2ece4fe3f710762adf766b10d3b32840826b3061381"
    },
    {
      "path": "contracts/wire/network/tls.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/tls.schema.json",
      "$id": "https://schemas.billylives.com/contracts/wire/network/tls.schema.json",
      "title": "TLS Posture (*.tls)",
      "description": "Either edge TLS policy (scope: edge — public-facing protocol/HSTS/CSP) or internal transport security (scope: internal — sidecar channels, NATS/Redis posture). Discriminated by `scope`.",
      "bytes": 9342,
      "sha256": "813bbe5656adb63d100ec3d06c86ba7a6b2d0a5ceaa4e6e4827336c4ab027cf8"
    },
    {
      "path": "contracts/wire/network/wire.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/wire.schema.json",
      "$id": "https://schemas.billylives.com/contracts/wire/network/wire.schema.json",
      "title": "Wire-Format Budgets (budget.wire)",
      "description": "Per-channel timeouts, payload caps, pool sizes, and keepalive cadences. The codegen (gen_netcfg.py) flattens these into typed Go/Python/TS/Swift constants — no consumer is allowed to carry a literal that lives here.",
      "bytes": 5404,
      "sha256": "c52e42f02217d133342db451036a0a8e03d77a3c944c7bea666a945949368b8f"
    },
    {
      "path": "contracts/wire/rest/schemas/api.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/rest/schemas/api.schema.json",
      "$id": "https://schemas.billylives.com/contracts/wire/rest/schemas/api.schema.json",
      "title": "Billy API wire types",
      "description": null,
      "bytes": 106087,
      "sha256": "100ed2a5ec6db05256e94906a5108194378428faafb49b47d97a834b52775231"
    },
    {
      "path": "contracts/wire/stream/sse/stream_events.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/stream/sse/stream_events.schema.json",
      "$id": "https://schemas.billylives.com/contracts/wire/stream/sse/stream_events.schema.json",
      "title": "SSE Stream Event",
      "description": "Discriminated union of all SSE events emitted by the AI service and bridged to the frontend. Keyed on the `type` field.",
      "bytes": 17142,
      "sha256": "2f09d408da0bd8267f38c96796b33065324d953fbf8544721db119060bc836b0"
    }
  ]
}
