{"id":"202610160237-fd56","env":"dev","branch":"dev","suite":"full","mode":"parallel","workers":8,"kind":"test","trigger":"push","requestedBy":null,"githubLogin":"pranshu26","waitFor":null,"sweepHours":null,"status":"failed","createdAt":"2026-10-16T02:37:46.268Z","waitUntil":"2026-10-16T05:37:46.268Z","updatedAt":"2026-10-16T03:11:07.214Z","commits":{"hotel-backend-core":"9338e28e79db480f72b45314ca85b3c9c3060df9","hotel-frontend-core":"2edac7677d85c5cbe64b00af518cd5d749b51fd7"},"tested":{"hotel-backend-core":"9338e28e79db480f72b45314ca85b3c9c3060df9","hotel-frontend-core":"2edac7677d85c5cbe64b00af518cd5d749b51fd7"},"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","✓ 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-3 GET /room-rearrangements/unassign/:checkInId returns the booking's 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":44703.767,"exitCode":1},"hotel-frontend-core":{"total":336,"passed":169,"failed":124,"skipped":43,"flaky":0,"failures":["hfe-food-item-search-all-category.spec.ts › AC-1: All tab is selected by default [AC-1] › [TC-HFE-001] All tab is selected and shows all items on first render (desktop)","hfe-food-item-search-all-category.spec.ts › AC-1: All tab is selected by default [AC-1] › [TC-HFE-002] All tab shows loading state when categories have not yet resolved","hfe-food-item-search-all-category.spec.ts › AC-1: All tab is selected by default [AC-1] › [TC-HFE-003] All tab default when kitchen has exactly one category","hfe-food-item-search-all-category.spec.ts › AC-2: Search on All tab returns cross-category results [AC-2] › [TC-HFE-004] Search on All tab returns flat results across every category","hfe-food-item-search-all-category.spec.ts › AC-2: Search on All tab returns cross-category results [AC-2] › [TC-HFE-005] Search on All tab with itemCode (weight-1 field) returns match","hfe-food-item-search-all-category.spec.ts › AC-2: Search on All tab returns cross-category results [AC-2] › [TC-HFE-006] Clearing search restores grouped-by-category layout on All tab","hfe-food-item-search-all-category.spec.ts › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-007] Search on specific category shows cross-category results by default","hfe-food-item-search-all-category.spec.ts › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-008] Clicking toggle chip scopes search to current category only","hfe-food-item-search-all-category.spec.ts › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-009] Toggle chip is NOT visible when search field is empty on a specific category tab","hfe-food-item-search-all-category.spec.ts › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-010] Switching category tab resets search scope to cross-category","hfe-food-item-search-all-category.spec.ts › AC-4: allItemsDeduped — no duplicates in All tab [AC-4] › [TC-HFE-011] Item assigned to multiple categories appears exactly once on All tab (no search)","hfe-food-item-search-all-category.spec.ts › AC-4: allItemsDeduped — no duplicates in All tab [AC-4] › [TC-HFE-012] Item assigned to multiple categories appears exactly once in All-tab search results","hfe-food-item-search-all-category.spec.ts › AC-5: FoodItemEmptyState on no results [AC-5] › [TC-HFE-014] FoodItemEmptyState renders when All-tab search returns no results","hfe-food-item-search-all-category.spec.ts › AC-5: FoodItemEmptyState on no results [AC-5] › [TC-HFE-015] FoodItemEmptyState renders when specific-category search returns no results","hfe-food-item-search-all-category.spec.ts › AC-5: FoodItemEmptyState on no results [AC-5] › [TC-HFE-016] Empty state uses size='lg' (320px image) not 'sm' in full-grid context","hfe-food-item-search-all-category.spec.ts › AC-6: Empty categories show inline empty state [AC-6] › [TC-HFE-017] Empty category shows inline empty state in All-tab grouped view","hfe-food-item-search-all-category.spec.ts › AC-6: Empty categories show inline empty state [AC-6] › [TC-HFE-018] Clicking empty category tab in sidebar shows FoodItemEmptyState","hfe-food-item-search-all-category.spec.ts › AC-6: Empty categories show inline empty state [AC-6] › [TC-HFE-019] Empty category still renders its heading — old isEmpty guard removed","hfe-food-item-search-all-category.spec.ts › AC-7: All tab is first and unique in sidebar [AC-7] › [TC-HFE-020] All tab is first (topmost) item in sidebar on kitchen with many categories","hfe-food-item-search-all-category.spec.ts › AC-7: All tab is first and unique in sidebar [AC-7] › [TC-HFE-021] All tab is never rendered more than once even with multiple categories","hfe-food-item-search-all-category.spec.ts › Regression: existing behaviours unaffected by feature merge › [TC-HFE-029] Existing category-tab item display unaffected after feature merge","hfe-food-item-search-all-category.spec.ts › Regression: existing behaviours unaffected by feature merge › [TC-HFE-030] SelectOptionModal still opens when item with options is clicked","hfe-food-item-search-all-category.spec.ts › Regression: existing behaviours unaffected by feature merge › [TC-HFE-031] Mobile OrderSummary search returns flat cross-category results (no duplication)","hfe-food-item-search-all-category.spec.ts › Regression: existing behaviours unaffected by feature merge › [TC-HFE-032] Mobile empty state renders on no search results in OrderSummary","hfe-food-item-search-all-category.spec.ts › Regression: existing behaviours unaffected by feature merge › [TC-HFE-034] FoodItemCard 'Unavailable' badge still renders for unavailable items in All tab","hfe-food-item-search-all-category.spec.ts › Regression: existing behaviours unaffected by feature merge › [TC-HFE-035] Category 'Off' badge still renders for inactive/closed categories in sidebar","hfe-food-item-search-all-category.spec.ts › Performance: All-tab initial render › [TC-HFE-036] All-tab initial render with 200-item catalog completes within 2 seconds","prd-2026-005-active-template.spec.ts › PRD-2026-005 — Active custom template wins › TC-PRD-090 assigning a custom template makes regenerated PDF use it","prd-2026-005-deep-verification.spec.ts › PRD-2026-005 — deep verification › TC-PRD-070 IGST selection survives save → backend GET returns taxMode=IGST","prd-2026-005-deep-verification.spec.ts › PRD-2026-005 — deep verification › TC-PRD-071/CLASSIC CLASSIC invoice PDF prints primary bank account block","prd-2026-005-deep-verification.spec.ts › PRD-2026-005 — deep verification › TC-PRD-071/MODERN MODERN invoice PDF prints primary bank account block","prd-2026-005-deep-verification.spec.ts › PRD-2026-005 — deep verification › TC-PRD-071/MODERN_BW MODERN_BW invoice PDF prints primary bank account block","prd-2026-005-deep-verification.spec.ts › PRD-2026-005 — deep verification › TC-PRD-073 Invoice PDF column header reflects persisted taxMode (IGST)","prd-2026-005-deep-verification.spec.ts › PRD-2026-005 — deep verification › TC-PRD-074 HSN/SAC card change propagates to regenerated invoice PDF","prd-2026-005-deep-verification.spec.ts › PRD-2026-005 — deep verification › TC-PRD-072 Credit Note PDF carries the issued CN number in text","prd-2026-005-invoice-editor.spec.ts › PRD-2026-005 — Invoice editor › TC-PRD-040/041 Tax Mode card visible with default CGST+SGST and matching header","prd-2026-005-invoice-editor.spec.ts › PRD-2026-005 — Invoice editor › TC-PRD-042 toggling to IGST switches per-line header","prd-2026-005-invoice-editor.spec.ts › PRD-2026-005 — Invoice editor › TC-PRD-043 Reset to default returns to backend choice","prd-2026-005-invoice-editor.spec.ts › PRD-2026-005 — Invoice editor › TC-PRD-046 Place of Supply input accepts state name","prd-2026-005-supplementary-docs.spec.ts › PRD-2026-005 — Supplementary documents › TC-PRD-050 Generate dropdown lists all three doc types","revenue-guardrail-removal.spec.ts › TC-REV-GUARD-1 clearing both configured limits removes the guardrail","prd-2026-005-mobile.spec.ts › PRD-2026-005 — mobile › TC-PRD-047 Tax Mode card visible on mobile invoice editor","prd-2026-005-mobile.spec.ts › PRD-2026-005 — mobile › TC-PRD-048 IGST toggle changes selection on mobile","prd-2026-005-mobile.spec.ts › PRD-2026-005 — mobile › TC-PRD-049 IGST save round-trip on mobile persists to DB","prd-2026-007-create-reservation.spec.ts › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-205 checkOut ≤ checkIn → rejected [validation]","prd-2026-007-create-reservation.spec.ts › PRD-2026-007 — created reservations in the UI › TC-ARM-211 created booking appears in the reservations list with an Upcoming pill [§6.7]","prd-2026-007-create-reservation.spec.ts › PRD-2026-007 — created reservations in the UI › TC-ARM-213 details page total reflects rooms × nightly price [finance surface]","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 — charges, discounts, payments, add-ons › TC-ARM-270 apply a flat discount → total drops accordingly [discounts]","prd-2026-007-finance.spec.ts › PRD-2026-007 — guest accounts (party) under room ops › TC-ARM-275 room checkout locks its guest account (isLocked=true) [party lock]","prd-2026-007-finance.spec.ts › PRD-2026-007 — finance surfaces in the UI › TC-ARM-280 guest-account screen lists the booking's accounts [party UI]","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-lock-move-swap.spec.ts › PRD-2026-007 — Move/Swap lock › TC-ARM-143 UI: lock one room through the modal; reopening pre-selects it [lock/§6 modal]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move/Swap lock › TC-ARM-144 UI: Continue stays disabled with no delta from initial state [LMS modal]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move/Swap lock › TC-ARM-145 UI: CANCELLED/NO_SHOW rooms are not offered for locking [LMS eligibility]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move/Swap lock › TC-ARM-147 UI: mixed batch (lock A, unlock B) applies both directions in one Continue [LMS modal]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-149 move/preview → 422 Phase-2c stub [Must 17 GAP]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-150 move commit → 422 Phase-2c stub [Must 6 GAP]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-151 swap/preview → 422 Phase-2c stub [Must 16 GAP]","prd-2026-007-lock-move-swap.spec.ts › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-152 swap commit → 422 Phase-2c stub [Must 16/S-30 GAP]","prd-2026-007-noshow-cancel.spec.ts › PRD-2026-007 — no-show per room › TC-ARM-100 UI: single-room no-show leaves siblings untouched [Must 4/S-11/§6.3]","prd-2026-007-noshow-cancel.spec.ts › PRD-2026-007 — no-show per room › TC-ARM-101 UI: reason is required — CTA disabled while empty [Must 4]","prd-2026-007-noshow-cancel.spec.ts › PRD-2026-007 — no-show per room › TC-ARM-102 UI: all-rooms no-show lands parent NO_SHOW [CR-2]","prd-2026-007-noshow-cancel.spec.ts › PRD-2026-007 — cancellation per room › TC-ARM-108 UI: cancel one of five rooms; the other four stay live [Must 5/S-23/§6.4]","prd-2026-007-noshow-cancel.spec.ts › PRD-2026-007 — cancellation per room › TC-ARM-109 UI: reason AND charge are both required for cancel [Must 5]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-070 modal selects 2 of 4 rooms and hands them to the wizard URL [Must 3/S-12]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-071 modal lists only UPCOMING rooms — checked-in and cancelled rooms are absent [Must 3]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-072 group Select All selects every room of the type; Clear All clears [UX]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-073 Continue stays disabled with zero rooms selected [UX]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-074 closing the modal mutates nothing [S-18 analog]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-075 API: checking in a subset flips only those rooms [Must 3/S-08]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-076 API: untouched rooms keep null actualCheckInTime [audit integrity, §1]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-077 API: arrival timestamp ≈ now on checked rooms [audit-true arrival]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-078 API: explicit actualCheckInTime is honored [Must 3]","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-085 reservations list pill shows the partial state [Must 12/G5]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-086 modal on a single-room booking lists exactly that room [S-01 equivalence]","prd-2026-007-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-087 selected chip toggles off on second click (deselect) [UX]","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-partial-checkin.spec.ts › PRD-2026-007 — partial check-in › TC-ARM-090 parent transitions live in a second context (fresh read, no cross-session staleness) [S-19-lite]","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-306 no-show flow is ≤3 interactions from booking details [§3 ≤3-click rule]","prd-2026-007-rbac-ux.spec.ts › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-307 state-machine violations surface as visible errors, not silent failures [S-19 family]","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-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 past its checkout time shows checkout-due orange [Must 2]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-043 CANCELLED room card is grey and stays listed [Must 2]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-044 NO_SHOW room card is grey and stays listed [Must 2]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-045 CHECKED_OUT room card is grey and stays listed [Must 2]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-046 status legend lists Upcoming / Checked-In / Check-Out Due / Checked-Out [Should-2]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-049 checked-in card shows actual in-time; checked-out shows in+out times [Must 7]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-051 mixed-state booking shows the full mix inline — zero extra clicks [G5/S-03]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-056 booking reachable from reservations list by guest name; detail shows the cards [G5]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-057 payment summary is reservation-level on the details page [NG4/Must 8]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-058 details reflect fresh API state after reload (no stale card status) [G5]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-059 max-inventory booking renders its card list within 2s of page load [S-13]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-061 cancelled-room reason is not silently lost (API carries reason; UI shows terminal state) [Should-1]","prd-2026-007-room-cards.spec.ts › PRD-2026-007 — room cards on Booking Details › TC-ARM-063 NO_SHOW + UPCOMING mix: parent collapses to UPCOMING in UI too [CR-2 collapse]","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-180 re-check-in into a different physical room via targetRoomId [G7]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-182 §6.8 story: 1→10 window run as two cycles in ONE reservation, zero re-creation [G7/S-31]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-183 slot windows of sequential cycles do not overlap [data sanity]","prd-2026-007-slots-multicycle.spec.ts › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-185 UI: booking details after re-check-in shows the cycle-2 room card with its own window [Must 7/G5]","prd-2026-007-status-aggregation.spec.ts › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-017 CANCELLED + NO_SHOW + CHECKED_OUT → VARIED_STATUS [CR-2/S-07]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-230 created booking appears as a block with the guest name [stay view]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-231 multi-room booking renders one block per room row [stay view/slots]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-232 UPCOMING reservation block is purple family [stay view colors]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-233 CHECKED_IN room block is red family [stay view colors]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-234 CHECKED_OUT room block is grey family [stay view colors]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-235 partial state renders mixed blocks: one red, one purple, same reservation [Must 2/slots]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-236 cancelled room frees its row — block no longer rendered [inventory release]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-237 no-show room frees its row likewise [inventory release]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-238 multi-cycle reservation renders one block PER SLOT with a gap between cycles [G7/slots — the slot-correctness check]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-239 cycle-2 block sits on its own dates (not stretched across the gap) [slots]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-240 block context menu offers status-appropriate actions [stay view menu]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-241 block menu navigates to the booking details of that checkin [stay view → details]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-242 stay view reflects a mutation after reload (no stale grid) [freshness]","prd-2026-007-stay-view.spec.ts › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-244 two back-to-back bookings on one room render side by side without overlap [slot boundaries]"],"warnings":[],"fixedKnownBugs":[],"durationMs":1012503.362,"exitCode":1}},"durationMs":1088624,"finishedAt":"2026-10-16T03:11:07.214Z"}