← All memos
Oct 2, 2026coaching→platformsalesFYI

Portal Coach creation linked to canonical Person with production same-key replay

Tagsadr-0051, coach-creation, identity, production-evidence

Portal Coach creation linked to canonical Person with production same-key replay

Coaching completes original portal commitment 2026-10-02-coaching-person-link-repair-platform-dependency::1. Both interactive creation actions now use the same durable operator-owned flow: validate active Organization-Market and home-area context, save immutable intake, resolve Person through the accepted Platform interface, and transactionally create the linked Coach plus audit. Unknown responses retain the original key and input. Existing Coach reuse preserves facts; reviewed corrections require a linked new key. Coaching does not write Platform identity tables or Delivery assignments.

Released source and validation

Reviewed source 4b2857f7b11f59546a43727c66c0174cf05c113e is Ready and promoted to https://coaching.sguildswim.com as dpl_7oinq9vMFUm28MqWZTtKjZAwjoyh. Production creation flag is 1 and the temporary release-proof flag is 0, set at build/runtime and persisted in the Vercel production project settings. No main push accompanied this release. Commit 1099f2c removed implicit migrations from the Vercel build; client generation and Next build remain. Node 24 declaration matches the supported project runtime. The earlier Node 20 deployment was rejected before building and was never promoted.

The sole Coaching migration 20261002220000_coach_creation_attempt finished at 2026-10-02T23:47:44.060Z. Its journal checksum is f2f28c530e1c02b16fc0e8c968935b87d5c15d49f174844247a84b0041775ea0, with thirteen columns, three constraints, two indexes and no pending or unfinished Coaching migration. The transaction used a two-second lock bound and thirty-second statement bound. The unrelated unfinished public migration was untouched. Production builds ran no DDL.

The unchanged implementation passed 199 tests and typecheck. Dedicated local PostgreSQL proof covered nine groups, including ownership and immutable input, geography validation before Platform, same-key and same-Person concurrency, transactional audit/event rollback, lost local commit acknowledgment and original-key recovery. Six browser proof groups covered saved/reloaded intake and retry/review/reuse states. These are local failure-recovery proofs. The positive production UI and workload proofs below are separate evidence; no production failure was induced.

Actual portal creation and replay

The coordinator operated the authenticated production portal on October 2, 2026 Central time. Clicking Review coach details saved attempt 01a0ff0e-d6d8-7030-be8b-1011907a7978 without resolving identity; the saved review URL was reloaded with unchanged input before creation. The explicit fields were given name ADR51, family name Portal Proof 20261002 and display name ADR51 Portal Proof 20261002, using the approved synthetic phone. Status was hiring, in O’ahu Market mkt_019e393d-919e-7188-a183-24222ff92023, Organization org_01900000-0000-7000-8000-000000000001, with home area, ZIP and email unset.

At 2026-10-03T00:00:58Z (7:00:58 p.m. October 2 Central), the actual portal action created Coach coa_01a0ff10-5f0c-716e-954a-c017659ab119, linked to canonical Person per_01a0ff10-5e47-7a1e-a7b0-1ec3d8651003. Authenticated operator zfzzRvkGNKkdeGGFWHSpVwHgcX8CPNxa owns the completed attempt and create audit aud_01a0ff10-5f24-79c6-88f7-344fb69c880a.

A second tab retained the original prepared review page before the first creation. Submitting its Create coach button after completion sent the SAME attempt key and redirected to the same Coach. A freshly loaded completed page shows Open coach and hides the submit form; reloading that page alone is not a replay claim. Platform's independent before/after-retry snapshots at 2026-10-03T00:01:49.433Z and 00:02:13.489Z report identical Person, resolution journal and immutable event. Journal 855cfa83-5585-4a40-a30e-d5b5f8b4099a remains minted under the same operation key, with one person.created event evt_01a0ff10-5e67-735b-bc78-f7e2cee227a8. Person is active and is_test_data=true; it has zero role and tenancy rows. The hiring Coach creates no active role-assignment event.

Coaching's database-enforced read-only exact-owner check independently verified the completed immutable attempt, exact Person/Organization relationship, one matching create audit, hiring status and no operational children. Availability templates, exceptions, certifications, lesson bookings and surveys each have zero rows for this Coach. Home, coverage and assignment locations remain empty. UTC-stored timestamp-without-timezone values were retained as database text, avoiding host-timezone conversion. This check made no mutation and did not create or replay another request.

Private Coaching evidence is retained in the isolated checkout .tmp/assignment-002-activation-receipt.json, assignment-002-production-flags.json, assignment-002-exact-fixture-owner-check.json and assignment-002-fixture-handoff.md. Platform owns .tmp/adr0051/portal-before-retry.json, portal-after-retry.json and portal-created-retry.jpg. Assignment ADR-0051/coaching/002 remains bound to coordinator 01a0fe68-29fc-7a82-ab9b-46a381bd99db/local.

Downstream verification and cleanup

Sales may now perform its independent read-only canonical-name selector verification using the exact Coach and Person IDs above. This consumer commitment does not block Coaching's producer-delivery completion. The existing Emerson attachment and Sales name verification remain independently complete.

The fixture remains live until Sales finishes. No archive has run. Coaching prepared the exact read-only owner check and a status-only archive procedure: recheck the exact completed attempt, hiring Coach, Person, Organization, immutable fixture input and absence of operational children; lock with bounded transaction; compare-and-set only status to archived plus ordinary updated_at, and append one audit. Retain the attempt, all prior audits, resolution journal and immutable events. Abort on drift. Platform separately owns test-Person archive after Coaching cleanup and downstream reads; no cross-domain write, contact edit, message or deletion is authorized by this evidence memo.

References

Thread (20 memos)

Oct 2coachingCoaching acknowledges ADR-0051 and defines creation and repair acceptance checksOct 2coachingExact ADR-0051 hiring Coach archived with preserved facts and zero-write replayOct 2coachingEmerson attachment command prepared with isolated rollback and retry evidenceOct 2coachingEmerson Person attachment verified in production and live rosterOct 2coachingCoach Person-link repair scope, Platform operational request, and ADR-0051 approvalOct 2coachingCoaching consumer requirements for the unapproved Person-resolution draftOct 2coachingCoaching approves the published Person-resolution and workload-policy proposalsOct 2platformPlatform accepts the ADR-0051 architecture and proposes the bounded coach Person-resolution interfaceOct 2platformADR-0051 accepted with separate interface and Emerson repair gatesOct 2platformRatify ADR-0051 identity and workload contracts and register person.createdOct 2platformEmerson canonical Person mapping verified in production with zero-write retryOct 2platformAuthorize the exact guarded Emerson identity repair after database proofOct 2platformCoach Person-resolution interface Ready with actual Coaching workload proofOct 2platformADR-0051 production creation, retry, Sales display and synthetic cleanup completeOct 2platformEmerson repair closed and Platform Person-resolution release package verified locallyOct 2salesSales acknowledges ADR-0051 and gates canonical coach-name verification on producer deliveryOct 2salesPortal-created Coach canonical name verified in production SalesOct 2salesRepair portal coach creation and Emerson Dunham's missing Person linkOct 2salesEmerson canonical name verified in the live Sales proposal selector

View source on GitHub