Command Center Build — Session Handoff Prompt
Purpose: a self-contained prompt for kicking off real implementation work on Command Center in a new project/session — one that will actually write code, unlike the architecture-advisory session this came out of.
How to use this: create the new project in the desktop app, attach the files listed below to it (plus the actual Command Center API repository, if this new session will be working directly in code), then paste the prompt in the section below as your first message.
Files to attach to the new project
From Architecture/Command Center/:
command-center-framing.md— read this first. Single source of truth for what's decided and why.command-center-database.md— the settled schema (v2.1).command-center-brd.md— endpoint shapes and business objectives.command-center-prd.md— full endpoint specs for what's already live.command-center-sad.mdcommand-center-impl-plan.md— the phased build plan.
From Architecture/ADR/:
adr-007-platform-api.md— why Command Center exists as a separate service.
From Traxs One/:
keystone-framing.md— needed for the entitlement-delegation context (§9, §4).
The prompt
You're picking up implementation work on Command Center, the Traxs Group
platform API (api.traxsgroup.com). It's a live, deployed .NET service —
today a pure pass-through contact-form handler with no database — that's
growing into the platform's subscription/entitlement/billing backbone for
three products: RoundTrip (live), Waypoint (early), and Relay (not yet
built).
Architecture planning for this phase is done and ratified by Pete Carroll
(the founder). Your job is to build against it, not re-decide it. Read
`command-center-framing.md` first, end to end — it's the single source of
truth for what's settled and why, including the reasoning, not just the
conclusions. Then `command-center-database.md` for the schema. The short
version of what's already decided:
- Command Center owns the canonical `Tenant` record, seeded from
RoundTrip's existing `TenantId` on day one — not a newly minted ID.
(framing §5/§6, ratified 2026-09-03)
- The full database schema is settled — `command-center-database.md` v2.1
has the ERD and every table's purpose. Don't redesign it. If something
in it looks wrong once you're actually in the code, flag it back rather
than silently reworking it — that discipline is what caught the original
draft's bugs (a wrong Tenant:Subscription cardinality, a redundant
Entitlement table) before any code got written against them.
- Entitlement is NOT its own table — it's a query over `Subscription.Status`.
Don't add an Entitlement table back in.
- Stripe webhook processing stays local to each product for now. RoundTrip
keeps its own existing webhook handler unchanged in mechanism — just
writing into the new `Subscription`-shaped record instead of directly
onto its `Tenant`. Command Center centralizing this is explicitly
deferred to Phase 5. Don't build central webhook processing yet, and
don't have both RoundTrip and Command Center processing the same events
"as a backup" — that was considered and rejected (double-processing /
idempotency risk with no coordination between the two).
- RoundTrip keeps a local read cache of its own `Plan`/`TrialEndsAt`,
kept correct by Command Center pushing updates into it — not a live
call on every request. This follows from the already-locked-in
graceful-degradation constraint: Command Center being slow or down must
never degrade RoundTrip's own hot paths (subscription checks run on
nearly every authenticated write).
## What to build first — the "needed now" list (framing §8)
1. The real database and core schema — stand up `Tenant`, `Product`,
`ProductTier`, `TierPrice`, `Subscription`, `PriceCommitment`,
`PriceCommitmentLine` per `command-center-database.md`.
2. A real entitlement-check endpoint (`GET /v1/entitlements`) that Keystone
can call — replacing the OpenIddict spike's hardcoded stub. Shape in
BRD §5.3.
3. The subscription endpoints (`GET/POST/PATCH /v1/subscriptions`) — BRD
§5.2.
4. The already-fully-scoped Phase 1 items from `command-center-impl-plan.md`
(CC-001 through CC-004) — support/feedback endpoints, rate limiting.
Small, no new design needed, just not yet built.
5. The suite-subscriptions endpoint (`GET /v1/suite/subscriptions`, PRD
§3.10) — feeds the product switcher and the admin app directly.
6. The ops-monitoring surface for the admin app (TRA-386).
## Conventions to follow
- Same Clean Architecture as RoundTrip: `Domain` / `UseCases` /
`Infrastructure` / `Web` projects, FastEndpoints + Cyrus Mediator. Any
RoundTrip developer should be able to navigate this codebase immediately
— that's the whole point of ADR-007.
- API versioning via the `/v1/` prefix. The existing v1 contract
(`POST /v1/contact`, `GET /health`) must not break.
- Service-to-service auth via `X-CommandCenter-ApiKey`, matching the
existing pattern.
- Deployed on Azure App Service, Central US — same region as RoundTrip.
- Guid PKs throughout, matching RoundTrip's pattern — and critically,
`Tenant.TenantId` must be the literal same Guid value as RoundTrip's own
`Tenants.TenantId` for a given tenant, never a newly generated one.
## What NOT to build right now
- Module-level entitlement (a `Modules` table) — no real requirement for
it yet. Product-level entitlement is what's needed now.
- Centralized Stripe webhook processing at Command Center — deferred to
Phase 5, revisit once Waypoint has real billing requirements to design
against.
- The unified billing hub, AI inference gateway, webhook management, or
platform analytics — all correctly sequenced later per the BRD's
long-term vision (§5.6). Don't let near-term schema choices block them,
but don't build them now either.
- Anything touching RoundTrip's own database or schema directly — Command
Center integrates with RoundTrip through its API only, never a shared
schema or cross-database query.
Start by reading `command-center-framing.md` in full, then
`command-center-database.md`, then get oriented in the actual repository
before writing anything.
Document History
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | September 2026 | Pete Carroll (with Claude) | Initial handoff prompt, written once command-center-framing.md's full cleanup checklist (§9) closed out and the "needed now" list (§8) became the actual next work. |