Resume Prompt — Property #1 Launch Implementation
Paste the block below into a fresh Claude Code session whose working directory is C:\CLProjects\HMP.
The prompt picks up after the 2026-05-06 session, which closed 56 P0 audit items, merged everything to master, pushed all 15 repos to remote, and cleaned up 52 stale remote branches. 17 P0s remain open plus 8 product/business decisions and 5 ops actions.
Paste this:
I'm resuming a property-1 launch readiness implementation. Read these four files to ground yourself in the prior session's work:
1. hmp-docs/docs/platform-registry/property-1-launch-review-2026-05-06.md (audit verdict — 13 flow reviews, RED/AMBER/GREEN, 73 P0 findings)
2. hmp-docs/docs/platform-registry/property-1-launch-roadmap-2026-05-06.md (5-wave 8-week plan)
3. hmp-docs/docs/platform-registry/property-1-implementation-progress-2026-05-06.md (56 items shipped + 17 still pending — THIS is the authoritative punch list)
4. hmp-docs/docs/platform-registry/xprisma-migration-plan-2026-05-06.md (W3.E.1 multi-quarter cleanup deliverable)
DO NOT re-do anything those files say is already done. Trust them.
NOTE: The companion file `session-state-2026-05-06.md` describes git state that is NOW STALE. As of session-end on 2026-05-06, every audit fix was merged to master and pushed. All audit/* and feature/* branches associated with this audit have been deleted from origin. Local master in all 15 touched repos is in sync with origin/master at the HEADs listed below — read this file for historical context only, not for what to push.
# Starting state (already done — do NOT redo)
ALL 15 repos are clean: local master == origin/master. Confirmed remote HEADs:
hmp-frontdesk-service f91cb8d
hmp-reservation-service 4b1c222
hmp-housekeeping-service f00ca84
hmp-payment-service 8d546f0
hmp-pos-service ee9f324
hmp-guest-service 5f0eceb
hmp-auth-service 700d16c
hmp-analytics-service 89f3908
hmp-channel-service 124a835
hmp-property-service 656ca2d
hmp-api-gateway 0a7ad92
hmp-shared-packages 51df5ff
hmp-infrastructure 025edf1
hmp-web-dashboard 5c81d42
hmp-docs 81c3558
Two unrelated WIP feature branches exist on remote (NOT touched by audit, kept intentionally — owner's decision):
• hmp-shared-packages: feat/ezee-mapper-phase-1 (19 commits ahead of master)
• hmp-booking-engine: feature/be-goat-phase-8 (7 commits ahead of master)
# Remaining work — 17 P0s grouped by type
GROUP 1 — Schema-shipped, service-completion needed (~8 eng-days; prioritise — schemas already migrated):
• W1.A.1 completion: write a concurrency regression test that runs N parallel createBooking for the last room of the last night and asserts exactly 1 succeeds. RoomInventoryLock table is already in hmp-reservation-service/prisma/schema.prisma.
• W3.E.7 completion: implement POST /auth/verify-email endpoint and gate login on User.emailVerified=true. Schema columns in hmp-auth-service/prisma/schema.prisma; service logic is the gap.
• W3.E.8 completion: implement TenantStatus state-machine transition methods in TenantsService (transitionToActive/Suspended/Cancelled with audit + Kafka events). Schema enum already in place.
• W2.A.2 completion: admin UI for MenuItem.hsnCode/gstRate + seed migration to populate existing rows.
• W2.D.6 completion: implement MenuService.closeOutletBusinessDay (endpoint + audit decorator shipped; service body is the gap), then update night-audit validatePreAudit to consult it.
• W1.A.8 completion: notification-service dispatcher consumer for `folio.settled` event with SendGrid attachment plumbing.
• Cron registration: register GuestIdVerificationRetentionCron in FrontdeskAppModule.providers and MvTotalRoomsSeedCron in BackfillModule.providers.
GROUP 2 — Frontend hero / multi-day UI work (~14 eng-days):
• W2.C.1-6 Tape Chart wiring (8d) — wire BarContextMenu + CellContextMenu from v1 tree into v2 shell; restore virtualization; replace 'coming in Phase 2' placeholder toasts; add 20-spec Playwright suite.
• W2.A.3 Refund modal in dashboard (1.5d) — backend endpoint exists; frontend modal + form needed.
• W3.D.1 Reports v2 saved-views frontend completeness (2d).
• W3.C.6 Mobile housekeeping <PhotoUpload taskId> (1d, RN code).
• W1.B.1 ID photo S3 presigned upload (2d) — replace data: URL flow in dashboard check-in page with S3 presigned PUT pattern (storage.service.ts already has SSE + the helper method).
GROUP 3 — Multi-day infrastructure (~6 eng-days):
• W2.D.5 Outbox pattern for night-audit events (2d) — new NightAuditOutbox table + relay worker.
• W2.D.10 Reports timezone fix (UTC → property TZ) across 5+ files in hmp-analytics-service/src/reporting/reports/shared/period-helpers.ts and consumers.
• W2.D.13 MvRoomTypeRevenue MV + folio consumer write path.
GROUP 4 — Compliance / regulatory (~4 eng-days):
• W1.B.5 Police-register PII feed (2d) — decrypt formCDataEncrypted and populate the existing police-register feed endpoint that currently returns null PII.
• W1.B.4 Express check-in real implementation (1d) OR keep disabled until launch + document.
• W3.B.2 retention cron module registration (covered above) + verify the S3 lifecycle policy in infrastructure/terraform.
GROUP 5 — xPrisma Phase 1 implementation (~5 eng-days; deliverable plan already shipped, code migrations are the gap):
Read xprisma-migration-plan-2026-05-06.md §3 first. The 10-site Phase 1 list is the work. Each site = 0.5 day = service-client call + unit test + integration test asserting cross-tenant rejection.
• W3.E.1 Phase 1: migrate the 10 highest-risk xPrisma cast sites listed in the plan's §3 table. Plan doc is shipped (counts as the W3.E.1 deliverable); 10-site code migration is what remains.
• W3.C.4 — site #3 of 10: hmp-reservation-service/src/reservations/reservations.service.ts lines 1339, 1399, 1438, 1665, 2286 — replace `xPrisma.guest.findUnique`/`include: { guest: true }` with `GuestServiceClient.getGuest(...)`. Risk = stale guest contact info shown on dashboard. Touches 5+ call sites in one file — do NOT one-shot it; one PR per call site with the matching test.
• Sites 1, 2, 4-10 in the same plan §3 table are listed by file:method and risk; pick whichever is currently blocking a launch test scenario first.
# Pre-deploy gate (still applies — schema migrations on QA/Prod)
10 schema migrations were committed to master this session but have NOT been run on QA/Prod yet. Before any `prisma migrate deploy` against a populated environment, run the duplicate-detection SQL in property-1-implementation-progress-2026-05-06.md §4 — the unique constraints WILL fail if duplicates exist. Specifically:
SELECT propertyId, auditDate, COUNT(*) FROM night_audit_logs GROUP BY 1,2 HAVING COUNT(*)>1;
SELECT provider, parsedBookingId, status, COUNT(*) FROM webhook_events GROUP BY 1,2,3 HAVING COUNT(*)>1;
-- plus connection-level idempotencyKey, RoomInventoryLock per-night, TenantStatus enum cast, MenuItem hsnCode backfill
Also: removing `|| true` from build scripts (W1.E.1) may surface previously-hidden TS errors when CI builds run. Spot-check the build output of analytics, channel, frontdesk before declaring deploy-ready.
# Branch / commit conventions for new work
- Per-fix branch: audit/AP-TXX-NNN-<slug> (or audit/<W-id>-<slug> for roadmap items)
- Commit format: audit(AP-TXX-NNN): <message> or audit(W*): <message>
- Tests must accompany each fix per gold-standard charter at hmp-docs/docs/platform-registry/property-1-gold-standard-fix-plan-2026-04-28.md
- Do not introduce new xPrisma casts; see xprisma-migration-plan-2026-05-06.md
- Schema changes need pre-flight duplicate-detection SQL + migration doc
# What I want from you
- Start by reading the four files above. Acknowledge them.
- Then move into Group 1 first — schemas are already shipped, these are the closest to "actually shippable."
- Update property-1-implementation-progress-2026-05-06.md as items close.
- When 5 more items are done, pause and let me review.
Begin.
Notes for the operator
-
Pre-flight before any deploy: run the duplicate-detection SQL from
property-1-implementation-progress-2026-05-06.md§4 before anyprisma migrate deployis run on a shared environment. The unique-constraint migrations will fail if duplicates exist. -
session-state-2026-05-06.mdis historical only. Its "Git state" section described 11 unpushed local commits + 4 uncommitted repos — that work is all done and pushed. The remote-HEAD list above is the current truth. -
Resume prompt is self-contained. It re-anchors any new Claude session in the prior work via four reference files. No additional context loading needed.