{
  "schemaVersion": 1,
  "tenantId": "tennis",
  "lastUpdated": "2026-08-04T21:50:47.158Z",
  "meta": {
    "source": "tenant-registry-seed",
    "rootLastUpdated": "2026-08-04T21:50:32.341Z",
    "packageCount": 6,
    "agentAuth": {
      "status": "configured",
      "artifact": "/registry/tennis/agent-auth.json",
      "envKey": "FACTORY_WAGER_TOKEN",
      "consumer": "tennis-hq-cloud-agent",
      "registryUrl": "https://registry.factory-wager.com/",
      "docs": "docs/harness/tenants/tennis-hq-registry.md"
    }
  },
  "packages": {
    "@tennis-hq/ssot": {
      "versions": [
        "1.5.0",
        "1.4.0"
      ],
      "dist-tags": {
        "latest": "1.5.0"
      },
      "releases": {
        "1.4.0": {
          "id": "@tennis-hq/ssot@1.4.0",
          "name": "@tennis-hq/ssot",
          "version": "1.4.0",
          "type": "library",
          "description": "Tennis HQ governance SSOT (npm: @tennis-hq/ssot) — color registry + glossary color wire",
          "author": {
            "name": "FactoryWager Team",
            "email": "team@factory-wager.com",
            "url": "https://factory-wager.com"
          },
          "tags": [],
          "readme": "# `@tennis-hq/ssot`\n\n**Publish-only** package for Tennis HQ governance artifacts (MIT).\n\nThe root app (`tennis-hq`) stays **`private: true`** and is never published.\n\n| Export | Contents |\n|--------|----------|\n| `@tennis-hq/ssot` | `SSOT_VERSION`, `COLOR_KEYS`, loaders |\n| `@tennis-hq/ssot/color-system.json` | Kernel color registry |\n| `@tennis-hq/ssot/glossary-colors.json` | Glossary color wire |\n\n## From monorepo root\n\n```bash\nbun run colors:build\nbun run ssot:build\nbun run ssot:check\nbun run ssot:pack          # artifacts/publish/*.tgz — no auth\nbun run ssot:publish       # needs NPM_TOKEN or npm login\n```\n\n## Version\n\n```bash\nbun pm version patch --no-git-tag-version   # root\nbun run ssot:build                          # sync + artifacts\n```\n\n## Config\n\n- `publishConfig.access`: **public** (free scoped package)\n- `private`: false\n- `files`: dist, registry, README, LICENSE\n",
          "publishedAt": "2026-07-31T15:01:23.230Z",
          "publisher": "tennis-hq",
          "storage": {
            "r2Key": "@tennis-hq/ssot/1.4.0.tgz",
            "size": 5228,
            "checksum": "fb0d0ba575de786182a45827a184d3f195f9cfe21cf8c74b76b7e569a370d19c",
            "contentType": "application/gzip"
          }
        },
        "1.5.0": {
          "id": "@tennis-hq/ssot@1.5.0",
          "name": "@tennis-hq/ssot",
          "version": "1.5.0",
          "type": "library",
          "description": "Tennis HQ governance SSOT — versioned domain contracts, color registry, and glossary color wire",
          "author": "FactoryWager Team",
          "tags": [],
          "readme": "# `@tennis-hq/ssot`\n\n**Publish-only** package for Tennis HQ governance artifacts and transport-safe domain contracts (MIT).\n\nThe root app (`tennis-hq`) stays **`private: true`** and is never published.\n\n| Export                                       | Contents                              |\n| -------------------------------------------- | ------------------------------------- |\n| `@tennis-hq/ssot`                            | `SSOT_VERSION`, `COLOR_KEYS`, loaders |\n| `@tennis-hq/ssot/color-system.json`          | Kernel color registry                 |\n| `@tennis-hq/ssot/glossary-colors.json`       | Glossary color wire                   |\n| `@tennis-hq/ssot/contracts/v1/manifest.json` | Five-domain runtime contract manifest |\n| `@tennis-hq/ssot/contracts/v1/*.schema.json` | Common and domain JSON Schemas        |\n\nThe v1 runtime domains are `marketdata`, `research`, `trading`, `partners`, and\n`accounting`. Runtime routes require `PARTNER_API_TOKEN` (or the provider-side\n`OPERATOR_API_TOKEN` alias). `FACTORY_WAGER_TOKEN` remains registry/package\nauthentication and is not accepted by the runtime API.\n\n## From monorepo root\n\n```bash\nbun run colors:build\nbun run ssot:build\nbun run ssot:check\nbun run ssot:pack          # artifacts/publish/*.tgz — no auth\nbun run ssot:publish       # needs NPM_TOKEN or npm login\n```\n\n## Version\n\n```bash\nbun pm version patch --no-git-tag-version   # root\nbun run ssot:build                          # sync + artifacts\n```\n\n## Config\n\n- `publishConfig.access`: **public** (free scoped package)\n- `private`: false\n- `files`: dist, registry, README, LICENSE\n",
          "publishedAt": "2026-08-04T21:50:31.826Z",
          "publisher": "tennis-hq",
          "storage": {
            "r2Key": "@tennis-hq/ssot/1.5.0.tgz",
            "size": 11204,
            "checksum": "a6c0e9502cdb1c30d37e7579ed3d90e475cc28e6e0f46e0837394524f8cc8f55",
            "contentType": "application/gzip"
          }
        }
      }
    },
    "cascade-mover": {
      "versions": [
        "3.0.0",
        "3.1.1"
      ],
      "dist-tags": {
        "latest": "3.1.1",
        "stable": "3.0.0"
      },
      "releases": {
        "3.1.1": {
          "id": "cascade-mover@3.1.1",
          "name": "cascade-mover",
          "version": "3.1.1",
          "type": "project",
          "description": "Global Liquidity & Predictive Risk Command Center — 6-indicator confidence engine",
          "tags": [
            "risk",
            "liquidity",
            "confidence-engine"
          ],
          "publishedAt": "2026-07-21T22:00:00Z",
          "publisher": "factory-cli",
          "storage": {
            "r2Key": "projects/cascade-mover/3.1.1.tgz",
            "size": 45800,
            "checksum": "a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8",
            "contentType": "application/gzip"
          }
        },
        "3.0.0": {
          "id": "cascade-mover@3.0.0",
          "name": "cascade-mover",
          "version": "3.0.0",
          "type": "project",
          "description": "Cascade Mover v3 stable — recursive multi-market cascade detection",
          "tags": [
            "risk",
            "stable"
          ],
          "publishedAt": "2026-04-01T00:00:00Z",
          "publisher": "ci-bot",
          "storage": {
            "r2Key": "projects/cascade-mover/3.0.0.tgz",
            "size": 42100,
            "checksum": "b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9",
            "contentType": "application/gzip"
          }
        }
      }
    },
    "sports-terminal-os": {
      "versions": [
        "5.2.0"
      ],
      "dist-tags": {
        "latest": "5.2.0"
      },
      "releases": {
        "5.2.0": {
          "id": "sports-terminal-os@5.2.0",
          "name": "sports-terminal-os",
          "version": "5.2.0",
          "type": "project",
          "description": "Partner Profile OS for Sports Terminal v5.2 — TOML templates, PartnerGateway kernel",
          "tags": [
            "partner",
            "toml",
            "gateway"
          ],
          "publishedAt": "2026-07-22T18:00:00Z",
          "publisher": "factory-cli",
          "storage": {
            "r2Key": "projects/sports-terminal-os/5.2.0.tgz",
            "size": 89200,
            "checksum": "c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9d0",
            "contentType": "application/gzip"
          }
        }
      }
    },
    "bet-ticker": {
      "versions": [
        "1.0.0",
        "1.2.0"
      ],
      "dist-tags": {
        "latest": "1.2.0"
      },
      "releases": {
        "1.0.0": {
          "id": "bet-ticker@1.0.0",
          "name": "bet-ticker",
          "version": "1.0.0",
          "type": "worker",
          "description": "Cloudflare Worker for live wager broadcast via WebSocket",
          "tags": [
            "worker",
            "websocket",
            "betting"
          ],
          "publishedAt": "2026-06-01T08:00:00Z",
          "publisher": "ci-bot",
          "storage": {
            "r2Key": "@factorywager/bet-ticker/1.0.0.tgz",
            "size": 8960,
            "checksum": "d4e5f6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5",
            "contentType": "application/gzip"
          }
        },
        "1.2.0": {
          "id": "bet-ticker@1.2.0",
          "name": "bet-ticker",
          "version": "1.2.0",
          "type": "worker",
          "description": "Bet Ticker Worker v1.2 with Durable Object coordination and Zod validation",
          "tags": [
            "worker",
            "websocket",
            "durable-object",
            "zod"
          ],
          "publishedAt": "2026-07-18T16:00:00Z",
          "publisher": "ci-bot",
          "storage": {
            "r2Key": "@factorywager/bet-ticker/1.2.0.tgz",
            "size": 11240,
            "checksum": "e5f6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6",
            "contentType": "application/gzip"
          }
        }
      }
    },
    "odds-engine": {
      "versions": [
        "0.7.0"
      ],
      "dist-tags": {
        "latest": "0.7.0"
      },
      "releases": {
        "0.7.0": {
          "id": "odds-engine@0.7.0",
          "name": "odds-engine",
          "version": "0.7.0",
          "type": "library",
          "description": "Real-time odds computation with Bayesian adjustment and market normalization",
          "tags": [
            "odds",
            "bayesian",
            "trading"
          ],
          "publishedAt": "2026-05-10T12:00:00Z",
          "publisher": "factory-cli",
          "storage": {
            "r2Key": "@factorywager/odds-engine/0.7.0.tgz",
            "size": 18300,
            "checksum": "f6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7",
            "contentType": "application/gzip"
          }
        }
      }
    },
    "event-store": {
      "versions": [
        "1.0.0",
        "1.1.0",
        "2.0.0-beta"
      ],
      "dist-tags": {
        "latest": "1.1.0",
        "beta": "2.0.0-beta"
      },
      "releases": {
        "1.0.0": {
          "id": "event-store@1.0.0",
          "name": "event-store",
          "version": "1.0.0",
          "type": "library",
          "description": "Event sourcing and CQRS primitives for sports trading pipelines",
          "tags": [
            "event-sourcing",
            "cqrs",
            "trading"
          ],
          "readme": "# Event Store\n\nEvent sourcing primitives.\n\n## Usage\n\n```ts\nimport { EventStore } from '@factorywager/event-store';\n```\n\n## Configuration\n\nSet `EVENT_STORE_BACKEND` to `memory` or `r2`.",
          "publishedAt": "2026-07-15T10:30:00Z",
          "publisher": "factory-cli",
          "storage": {
            "r2Key": "@factorywager/event-store/1.0.0.tgz",
            "size": 12480,
            "checksum": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2",
            "contentType": "application/gzip"
          }
        },
        "1.1.0": {
          "id": "event-store@1.1.0",
          "name": "event-store",
          "version": "1.1.0",
          "type": "library",
          "description": "Event sourcing with snapshot support and R2 persistence",
          "tags": [
            "event-sourcing",
            "cqrs",
            "r2",
            "snapshots"
          ],
          "publishedAt": "2026-07-20T14:00:00Z",
          "publisher": "factory-cli",
          "storage": {
            "r2Key": "@factorywager/event-store/1.1.0.tgz",
            "size": 15720,
            "checksum": "b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3",
            "contentType": "application/gzip"
          }
        },
        "2.0.0-beta": {
          "id": "event-store@2.0.0-beta",
          "name": "event-store",
          "version": "2.0.0-beta",
          "type": "library",
          "description": "v2 beta: multi-tenant event stores, streaming projections, WebSocket tailing",
          "tags": [
            "event-sourcing",
            "multi-tenant",
            "streaming",
            "beta"
          ],
          "publishedAt": "2026-07-22T09:00:00Z",
          "publisher": "factory-cli",
          "storage": {
            "r2Key": "@factorywager/event-store/2.0.0-beta.tgz",
            "size": 22400,
            "checksum": "c3d4e5f6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4c5d6a7b8c9d0e1f2a3b4",
            "contentType": "application/gzip"
          }
        }
      }
    }
  }
}
