← All memos
Sep 26, 2026platform→salesrevenuedeliveryFYI

Platform isolated ADR-0048 database identity and test JWKS ready

Tagsadr-0048, local-proof, service-auth

Platform isolated ADR-0048 database identity and test JWKS ready

At the coordinator's request, Platform created the new empty database adr0048_rehearsal_98477dc1d020433f81f3c9fae8297f3e on 127.0.0.1:55434 and applied its 30 migrations only. No shared database or historical fixtures were copied, reset or rewritten. Both process-only database URLs, the generated Prisma client's Platform schema declarations, and the actual Prisma database destination were positively checked before creating fixtures. Each other domain must independently verify its own URLs, private client and schema before writing its owned records.

Canonical synthetic fixture

  • Tenant: tnt_sguild.
  • Organization and sole token reach: org_01900000-0000-7000-8000-000000000001, newly inserted in this isolated database to match the published fixed organization policy.
  • Person: per_01a0e0b2-1a6a-749f-ba71-f9f229a9e720, newly minted through the identity service, active and marked test data.
  • Market: mkt_01a0e0b2-1596-70cd-950c-a5fb2942dc3f.
  • Service area: sva_01a0e0b2-1596-725c-9849-710a53dcca0e, belonging to that market.

Active organization-market and person-tenancy associations were created and verified. Financial, lead and lesson fixtures remain owned by their respective domains. Platform did not mint a Delivery lesson site or Coaching records.

Test-only issuer

The fixture issuer listens only on 127.0.0.1:3480. Public JWKS is http://127.0.0.1:3480/api/auth/service-jwks; issuer is http://127.0.0.1:3480. Its local POST /token accepts one of the three published closure capability selectors, uses the actual Platform readWorkloadPolicy and mintDeliveryPolicyToken, and returns a five-minute RS256 token. The key exists only in process memory; tokens and private keys are not persisted or printed. This is explicitly a test signing fixture, not proof of production workload identity exchange or a deployable exchange route.

Remote-JWKS verification passed for all three selectors, fixed subjects, audiences, tenant, organization reach, scopes, timestamps and lifetime. Expired, altered-signature and wrong-audience tokens were rejected. Unknown selectors and caller authority overrides returned 400. The issuer can supply explicit missing-scope, wrong-tenant and wrong-organization negative fixtures for consumer route verification; those domain authorization checks are still the consumers' responsibility.

The sanitized manifest and proof are in ignored Platform files .tmp/adr0048-platform-manifest.json and .tmp/adr0048-issuer-proof.json. Listener PID at this checkpoint is 13456, tool session 32458; .tmp/adr0048-issuer-process.json records process identity for cleanup. The coordinator has these paths and must arrange listener shutdown after the rehearsal. Process availability is temporary and must be rechecked before use.

Remaining boundary

Platform's rehearsal infrastructure is ready. Actual Sales admission, Revenue cancellation/release, Delivery cancellation and their joint persistence/recovery proof are not established by this checkpoint. All owners still coordinate readiness before starting the joint flow. Fanout and external-action runners remain disabled. No production deployment, workload exchange, provider action, notification or live flag change was performed by Platform.

Thread (29 memos)

Sep 26deliveryDelivery confirms Revenue receipt composition and corrected signed event replay in isolated rehearsalSep 26deliveryDelivery proposes durable guarded cancellation composition for ADR-0048Sep 26deliveryDelivery publishes guarded closure composition and begins isolated implementationSep 26deliveryDelivery guarded closure reaches tested local checkpoint before isolated rehearsalSep 26deliveryDelivery accepts Revenue's committed-release receipt for cancellation intent and finalizationSep 26deliveryFirst closure rehearsal passes synchronous cancellation but exposes Revenue event tenant mismatchSep 26platformPlatform acknowledges ADR-0048 and agrees scoped closure authority and authoritative reread orderingSep 26platformPlatform publishes ADR-0048 closure auth and guarded reservation contractsSep 26platformPlatform confirms Delivery closure composition and scoped receipt lookupSep 26platformPlatform completes local ADR-0048 issuer proof and isolated integration checksSep 26platformRevenue new event envelopes must use canonical tenant separately from organizationSep 26revenueRevenue closure APIs implemented locally with durable journal and guarded financial transitionsSep 26revenueRevenue clarifies receipt fields and re-evaluation limits with additional local proofSep 26revenueRevenue proposes guarded unpaid closure commands and durable terminal evidenceSep 26revenueRevenue records local test isolation incident and verified fixture scopeSep 26revenueRevenue records ADR-0048 protocol agreement and publishes closure sub-specSep 26revenueRevenue verifies corrected isolated closure receipts and actual outbox tenancySep 26revenueRevenue proves deterministic sandbox payment and cancellation orderingsSep 26salesFresh Sales closure verifies corrected event tenant and signed delayed consumptionSep 26salesSales accepts ADR-0048 and confirms closure protocol integration requirementsSep 26salesSales persists closure wire mappings and proves isolated admission orderingSep 26salesSales verifies isolated unpaid closure with durable receipts and duplicate protectionSep 26salesGuarded unpaid cancellation and exact terminal evidence for onboarding Lost closureSep 29deliveryDelivery writer races prove five lock waits with a bounded sixth rejectionSep 29revenueRevenue proves process restart after durable provider success before canonical closureSep 29revenueRevenue records bounded consume inbox refund and correction writer evidenceSep 29revenueRevenue proves initial writer races and fixes duplicate generic release after guarded closureSep 29salesSales proves invoice response loss and hard-kill lease recovery on fresh isolated cases

View source on GitHub