Skip to main content

Session Report — Distribution Module Roll-out + ResAvenue Cert Hotfix

Date: 2026-04-30 (afternoon → evening) Mode: Autonomous from "continue distribution rollout" prompt onwards Spec: 2026-04-30-distribution-ari-design.md

Outcome at a glance​

TicketScopeStatusRepos touched
AP-T11-007Cert single endpoint + IP allowlist + channel mapDONE (earlier session)channel-service, api-gateway
AP-T11-007 hotfixTrust-proxy fix (REJECTED_IP cause)DONEchannel-service, api-gateway
AP-T11-007 dual-authAccept Manish's <Authentication> block alongside ClassicDONEchannel-service
AP-T11-007 Q9bEmit <MinStay> / <MaxStay> inside <Rate>DONEchannel-service
AP-T11-009Revenue Manager — replace MOCK_* with real APIsDONE (earlier session)web-dashboard
AP-T11-010Distribution sidebar restructure + 308 redirectsDONE (earlier session)web-dashboard
AP-T11-011 foundationARI Grid GET/POST/history + AriCellHistory + RoomTypeInventoryOverrideDONE (earlier session)property-service, channel-service, api-gateway, web-dashboard, shared-packages
AP-T11-011 wire-upDistributionService → channel-service fan-out (caller-side code resolution)DONEshared-packages, property-service
AP-T11-012 backendAuto-Pilot rules engine — 3 rule types, 3 trigger surfacesDONEproperty-service
AP-T11-012 frontendDrawer UI + create-rule wizard + simulate dialogDONEweb-dashboard
AP-T11-013 backendDrip-feed ChannelAllocationPolicy + sync caps + aggregator surfaceDONEchannel-service, property-service, api-gateway, shared-packages
AP-T11-013 frontendAllocation editor in AriGrid (RATIO default per Q1)PENDING (next dispatch)web-dashboard
AP-T11-014 backendPromotions module + quote integration + xml <Promotion> extIN FLIGHTproperty-service, reservation-service, channel-service, shared-packages
AP-T11-014 frontendPromotions list + form + preview-discountPENDINGweb-dashboard
AP-T11-015Manual/Dynamic mode + singlePaxAdjustmentPENDINGproperty-service, channel-service, web-dashboard

Cert path (ResAvenue PMS Test Hotel — code 261)​

StepStatus
Trust-proxy fix shipped to QADONE @ 2026-04-30T09:45 UTC
HOTFIX-001 synthetic verification (XFF=203.109.97.241)DONE — 201 + <Success/>, 19ms
ResAvenue 15:03 reply parsed (Q2 auth, Q8 OTA channel, Q9b LOS)DONE
Dual-auth parser (Format A Classic + Format B <Authentication> block)DONE
MinStay/MaxStay emission in rate XMLDONE
Cert email v2 sent to ManishDONE (user-side, 2026-04-30 evening)
Active cert watchDEFERRED — user watches ResAvenue UI directly and triggers test booking from their side

Product decisions captured​

IDQuestionDecision
Q1Drip-feed UI default — RATIO or MANUAL?RATIO with "Switch to Manual" tooltip
Q3Promotions per-segment in v1?Defer to v2 — schema additive when added
<LengthsOfStay> cleanupDrop after Manish responds?OPEN — wait for ResAvenue reply to v2 email (c)
Multi-select chips for Auto-Pilot scopeBacklog?Yes — track as follow-up after big-bang ship
Active cert watch cadenceRun polling?No — user-driven via ResAvenue UI

Big-bang ship strategy​

Per spec: nothing deploys to prod until all of T11-{011 wire-up, 012, 013, 014, 015} land + QA smoke verifies. Single QA deploy bundles:

  • npm install on property-service (@hmp/service-clients@1.12.x)
  • npm install on reservation-service (T14 client)
  • Docker rebuild: property-service, channel-service, reservation-service, web-dashboard, api-gateway
  • prisma db push for: AriAutomationRule (T12), ChannelAllocationPolicy (T13), Promotion+PromotionRatePlanLink+PromotionChannelLink (T14), RatePlanRate.{mode,singlePaxAdjustment} (T15)
  • docker compose up -d on QA EC2

Cert demo to ResAvenue follows QA smoke green.

Notable plan deviations​

  1. AP-T11-013 — ChannelInventoryAllocation renamed to ChannelAllocationPolicy. Original name collided with an existing legacy table from RevenueActions.inventory-allocation.handler.ts. New name disambiguates policy (cap config) from materialised allocation (per-channel computed counts).
  2. AP-T11-013 — gateway routing change wasn't in plan. Required because /distribution/* already routes to property-service; allocation endpoints needed a longer-prefix entry to channel-service.
  3. AP-T11-012 frontend — scope step uses comma-separated UUID inputs instead of multi-select chips. Backlog #14.
  4. AP-T11-007 dual-auth — extends extractCredentialsFromPayload to honour both Classic OTA shape and ResAvenue's <Authentication> block; Classic wins when both are present (forward-compat).

Open items at session end​

  • AP-T11-014 backend subagent still running.
  • AP-T11-013 frontend, AP-T11-014 frontend, AP-T11-015 (full stack) pending dispatch after T14 backend lands.
  • Cert email response from Manish pending (whether to drop <LengthsOfStay> from inventory XML).
  • No data migration needed: all new tables ship with idempotent IF NOT EXISTS migrations + nullable additive columns. Backfill is implicit (rows default to POOL/DYNAMIC).