{"id":"202610160945-4d7b","env":"dev","branch":"dev","testsBranch":null,"suite":"full","mode":"parallel","workers":4,"kind":"test","trigger":"push","requestedBy":null,"githubLogin":"sifXt","waitFor":null,"sweepHours":null,"status":"failed","createdAt":"2026-10-16T09:45:07.408Z","waitUntil":"2026-10-16T12:45:07.408Z","updatedAt":"2026-10-16T09:54:10.877Z","commits":{"hotel-backend-core":"9338e28e79db480f72b45314ca85b3c9c3060df9","hotel-frontend-core":"2edac7677d85c5cbe64b00af518cd5d749b51fd7"},"tested":{"hotel-backend-core":"9338e28e79db480f72b45314ca85b3c9c3060df9","hotel-frontend-core":"f5a8ba3b809c601e90ac10843cab01d634ee598e"},"prepare":["✓ E2E Hotel 01 (b4c88cd6-2371-4049-aaaf-2158fb4b6b9e): test user has access","✓ E2E Hotel 02 (c7396f01-f0a3-4b84-91a8-ac8b5b32c065): test user has access","✓ E2E Hotel 03 (6cbd78a1-33c7-4a8d-b4b1-beabfe263880): test user has access","✓ E2E Hotel 04 (d4905069-731a-4384-9cea-14f9cf362595): test user has access; made the existing bank account primary","✓ E2E Hotel 05 (7d049255-56e3-421f-a309-9ad5f8eb0e22): test user has access","✓ E2E Hotel 06 (8e43c66d-f413-41a7-ac7a-4a413d4d2632): test user has access","✓ E2E Hotel 07 (729211be-07c8-48a4-8fc5-f28d261617f9): test user has access","✓ E2E Hotel 08 (4f50832d-5d39-480f-a913-230148668b50): test user has access"],"results":{"hotel-backend-core":{"total":25,"passed":13,"failed":7,"skipped":5,"flaky":0,"failures":["reservation-unassign.spec.ts › Reservation unassign › TC-UNASSIGN-API-2 with the switch on, unassign frees the room: 201 and an ACTIVE record","reservation-unassign.spec.ts › Reservation unassign › TC-UNASSIGN-API-4 the batch read ?checkInIds= returns the ACTIVE records of the listed bookings only","reservation-unassign.spec.ts › Reservation unassign › TC-UNASSIGN-API-9 placing the booking back with Move closes the record PLACED","reservation-unassign.spec.ts › Reservation unassign › TC-UNASSIGN-API-11 unassigning puts the freed room back on sale: its type's availability goes up by one","revenue-ai-actions.spec.ts › Revenue AI action facade › TC-API-REV-ACTION-2 settings revision changes reject a stale preview","revenue-ai-actions.spec.ts › Revenue AI action facade › TC-API-REV-REPORT-1 forged and cross-property source jobs are rejected before enqueue","revenue-guardrails.spec.ts › TC-REV-GUARD-API-1 public quotes omit every plan outside final-price limits"],"warnings":[],"fixedKnownBugs":[],"durationMs":20786.545000000002,"exitCode":1},"hotel-frontend-core":{"total":277,"passed":208,"failed":45,"skipped":24,"flaky":0,"failures":["checkin-id-per-adult.spec.ts › One ID per adult — check-in form › TC-IDPA-UI-2 Check-in short of IDs shows the counts and checks nothing in","prd-2026-005-active-template.spec.ts › PRD-2026-005 — Active custom template wins › TC-PRD-091 template with unregistered fontName still renders (no font crash)","prd-2026-005-supplementary-docs.spec.ts › PRD-2026-005 — Supplementary documents › TC-PRD-053 Debit Note (full) generates 201 + PDF blob","reservation-unassign.spec.ts › TC-UNASSIGN-MONEY-1 frees and returns a reservation room without changing its money","revenue-guardrail-removal.spec.ts › TC-REV-GUARD-1 clearing both configured limits removes the guardrail","prd-2026-007-finance.spec.ts › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-264 cancellation charge lands at reservation level [NG4/S-23]","prd-2026-007-finance.spec.ts › PRD-2026-007 — finance surfaces in the UI › TC-ARM-281 details payment summary reflects an added charge after reload [Must 8 UI]","prd-2026-007-finance.spec.ts › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-285 folio totals reconcile with the finance read after a room cancel [G6]","prd-2026-007-finance.spec.ts › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-290 invoice generation still reservation-scoped after partial ops [NG4/PRD-2026-005 seam]","prd-2026-007-finance.spec.ts › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-291 ledger entries balanced after the full §6.2 journey (no dangling entry) [G6]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move / Swap / Bulk-assign contract › TC-ARM-155 UI: More actions offers only Lock/Unlock Room — Move and Swap live in the Room Details edit sheet [UX]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move / Swap behaviour › TC-ARM-156 move shows Current → New → Price diff before confirm [S-28]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move / Swap behaviour › TC-ARM-158 swap exchanges two occupied rooms bidirectionally, across bookings too [S-30]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move / Swap behaviour › TC-ARM-162 a Move/Swap-locked room cannot be moved; unlocking allows it [lock semantics]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move / Swap behaviour › TC-ARM-163 swap respects Move/Swap locks on either side [lock semantics]","prd-2026-007-noshow-cancel.spec.ts › PRD-2026-007 — cancellation per room › TC-ARM-110 UI: \"can't be undone\" warning is shown [UX/NG1]","prd-2026-007-noshow-cancel.spec.ts › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-119 withdraw-scheduled aborts the staged action [staged ops]","prd-2026-007-noshow-cancel.spec.ts › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-120 staged no-show executes after the window elapses [staged ops]","prd-2026-007-noshow-cancel.spec.ts › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-121 concurrent cancel + check-in race resolves to exactly one winner [S-19]","prd-2026-007-noshow-cancel.spec.ts › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-122 two parallel identical cancels: one wins, one 409s, state single-applied [S-20]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-079 staggered arrival journey: 2 then 2 — parent PARTIAL_CHECKED_IN then CHECKED_IN [S-03/S-04/§6.2]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-080 full-subset check-in (all rooms at once) lands parent CHECKED_IN [Must 3]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-081 retried check-in call is rejected and does not double-apply [S-16/S-17]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-082 one-by-one staggering over 5 rooms keeps every intermediate state exact [Must 12]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-083 check-in proceeds while a sibling room is NO_SHOW (terminal+progression mix) [CR-2]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-084 UI reflects partial state immediately after API check-in + reload [G5]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-086 single-room booking has no partial check-in entry — plain Create check-in only [S-01 equivalence]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-088 navigating away from the wizard without confirming leaves rooms UPCOMING [S-18]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-089 fully-terminal booking offers no partial check-in entry [state gating]","prd-2026-007-rbac-ux.spec.ts › PRD-2026-007 — authentication wall (Must 18) › TC-ARM-302 reads are also walled (checkin detail, finance, guest accounts) [Must 18]","prd-2026-007-rbac-ux.spec.ts › PRD-2026-007 — full-permission UI affordances (positive RBAC) › TC-ARM-303 owner-role kebab exposes all ARM actions on an UPCOMING booking [§10]","prd-2026-007-rbac-ux.spec.ts › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-309 reservations list status pills match the detail state for partial bookings [G5 consistency]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-040 multi-room booking renders one card per room with number, type and dates [Must 7/S-02]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-041 UPCOMING card is blue; CHECKED_IN card is red [Must 2/G5]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-042 CHECKED_IN room near/after its checkout time shows checkout-due yellow, then overdue orange [Must 2]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-170 new reservation is backed by exactly one slot grouping all rooms [CR-1/Must 13]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-171 single-room booking also carries its default slot [S-01/CR-1]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-172 lifecycle ops do not change the slot count — status lives on the room [CR-1]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-173 mutation response slots[] carries window + roomCount and no name/status [CR-1/S-32]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-174 default slot window equals the reservation window [CR-1]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-175 re-check-in creates a NEW room instance; the source stays CHECKED_OUT [OQ-6]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-176 after re-check-in the booking has two slots with distinct windows [G7/S-31]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-177 reservation does NOT close after cycle-1 checkout while cycle 2 exists [CR-3/S-31]","prd-2026-007-status-aggregation.spec.ts › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-001 all UPCOMING → UPCOMING [CR-2/S-02]","prd-2026-007-status-aggregation.spec.ts › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-002 all CHECKED_IN → CHECKED_IN [CR-2/S-04]"],"warnings":[],"fixedKnownBugs":[],"durationMs":469175.09699999995,"exitCode":1}},"durationMs":517545,"finishedAt":"2026-10-16T09:54:10.877Z"}