{
  "host": "https://schemas.billylives.com",
  "generated_at": "2026-05-25T21:43:46.811Z",
  "count": 21,
  "schemas": [
    {
      "path": "benchmarks/schema/fixture-manifest.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/fixture-manifest.schema.json",
      "$id": "https://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": 1242,
      "sha256": "d11848f1d4b11c6017db6ce045fb28796b6720ec808222749bdfea28035cf884"
    },
    {
      "path": "benchmarks/schema/mission-fixture.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/mission-fixture.schema.json",
      "$id": "https://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": 4066,
      "sha256": "e1db187004ad7f1c5687bbd1a810cd89f67876bd2ca5ae3b93ab5c24c573d2f6"
    },
    {
      "path": "benchmarks/schema/recall-corpus.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/recall-corpus.schema.json",
      "$id": "https://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": 1527,
      "sha256": "fb097afb536b1122028dd353f247c619b03f8cb498078249596e370035306fbe"
    },
    {
      "path": "benchmarks/schema/result.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/result.schema.json",
      "$id": "https://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": 3262,
      "sha256": "dc402c6e722a91a14705479cec58f1909bd24b27a9e845e51c31459bc5b45baa"
    },
    {
      "path": "benchmarks/schema/routing-corpus.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/routing-corpus.schema.json",
      "$id": "https://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": 1757,
      "sha256": "b45200c2e5e3ffebcf58b35f241259106311ddbd2b622a1d6d092171e6f47355"
    },
    {
      "path": "benchmarks/schema/rubric.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/rubric.schema.json",
      "$id": "https://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": 1145,
      "sha256": "b1d6fa2d3d9f2519de92fd8f536ae30b026adc155677e42bd6904b69c920755f"
    },
    {
      "path": "benchmarks/schema/scenario.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/scenario.schema.json",
      "$id": "https://billylives.com/benchmarks/schema/scenario.schema.json",
      "title": "BenchScenario",
      "description": "Declarative scenario spec. Loaded per suite at harness startup.",
      "bytes": 2190,
      "sha256": "3c12a30a604ddede683870303e80819eeb613d9fa876d51f3b99995c654efd36"
    },
    {
      "path": "benchmarks/schema/signal-timeline.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/signal-timeline.schema.json",
      "$id": "https://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": 2917,
      "sha256": "48f18a5ddcc92c06a0e071a8fb89bdcd64854bc3901111b333b929db214884a4"
    },
    {
      "path": "benchmarks/schema/tool-use-corpus.schema.json",
      "url": "https://schemas.billylives.com/benchmarks/schema/tool-use-corpus.schema.json",
      "$id": "https://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": 2323,
      "sha256": "42fb51cc25eadae604e98388cb00bb4daa271e4bf95222870f20499f274bbe0e"
    },
    {
      "path": "contracts/domain/substrate/substrate_state.schema.json",
      "url": "https://schemas.billylives.com/contracts/domain/substrate/substrate_state.schema.json",
      "$id": "https://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": 10256,
      "sha256": "32ec95586c5f68b71a22124016e0f57384c1692319d741463ea24434c10cd5d7"
    },
    {
      "path": "contracts/observe/telemetry/log_envelope.schema.json",
      "url": "https://schemas.billylives.com/contracts/observe/telemetry/log_envelope.schema.json",
      "$id": "https://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": 2585,
      "sha256": "a03aa2959d40791d7a0b4724cedefc7c0df80eefe24efa7a87a57d256a4730ce"
    },
    {
      "path": "contracts/observe/user/events.schema.json",
      "url": "https://schemas.billylives.com/contracts/observe/user/events.schema.json",
      "$id": "https://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": 10688,
      "sha256": "85f065e891ae58f14ea87f21b4cedef22ed6ef6c8b34d1109650cdb7563412e1"
    },
    {
      "path": "contracts/trust/vendors/vendors.schema.json",
      "url": "https://schemas.billylives.com/contracts/trust/vendors/vendors.schema.json",
      "$id": "https://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": 13132,
      "sha256": "c886bcafcdca3d87602bcab69185f59ee5922792656403c2b0b77f4e84e90cd6"
    },
    {
      "path": "contracts/wire/network/budget.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/budget.schema.json",
      "$id": "https://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": 3401,
      "sha256": "643d909c24de94225cc012619ebf0e01cd9a4970adc6beb9be20aafbd4955390"
    },
    {
      "path": "contracts/wire/network/dns.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/dns.schema.json",
      "$id": "https://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": 3295,
      "sha256": "99c346f07806df94be437a173259dec08858d874fb40371a4ce7302ccca1ca6e"
    },
    {
      "path": "contracts/wire/network/firewall.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/firewall.schema.json",
      "$id": "https://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": 4129,
      "sha256": "4d43d4dbecd38ce37c6aea6aa7679b059b1b84619c04bd5084500f8d0ab6d22d"
    },
    {
      "path": "contracts/wire/network/socket.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/socket.schema.json",
      "$id": "https://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": 6048,
      "sha256": "340c32d4ca969c9509e83d4dadd9d56f84ea6229a94a484cb5bffc2a8078812b"
    },
    {
      "path": "contracts/wire/network/tls.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/tls.schema.json",
      "$id": "https://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": 9334,
      "sha256": "6ac271cb790d1c30fc01a20a44bb8205833d048777cce40b55620bea45b7972c"
    },
    {
      "path": "contracts/wire/network/wire.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/network/wire.schema.json",
      "$id": "https://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": 5396,
      "sha256": "1776ffc1a1759acd0d3f8cd51c776251af2e67087d026ee2dcb4bf689af9a98c"
    },
    {
      "path": "contracts/wire/rest/schemas/api.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/rest/schemas/api.schema.json",
      "$id": "https://billylives.com/contracts/wire/rest/schemas/api.schema.json",
      "title": "Billy API wire types",
      "description": null,
      "bytes": 106079,
      "sha256": "b0f975b5d1dbe0a201d31906304e80df62a07a7014b70e1e4aacb25e2103061a"
    },
    {
      "path": "contracts/wire/stream/sse/stream_events.schema.json",
      "url": "https://schemas.billylives.com/contracts/wire/stream/sse/stream_events.schema.json",
      "$id": "https://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": 17134,
      "sha256": "6cf2afb6cc70375eb81806ef83ac9fb5be5652606bfa269eb8dd202a355e87d6"
    }
  ]
}
