{
  "slug": "mosaic_v2-split",
  "restaurant_id": "91b67f1d-ef32-52ed-a5ad-b2532fb914a3",
  "tables_driven": [
    9981,
    9991
  ],
  "viewport": "390x844 hasTouch isMobile chromium",
  "canary_steps": [
    "1 P1 Join",
    "2 P2 Join",
    "3 P1 Add",
    "4 P2 Add",
    "5 Co-Order (WS)",
    "6 WAITER POS + Serve",
    "7 P1 Split -> P2 Invited",
    "8 P2 Accept -> Taste Cart",
    "9 P2 Accept Locks Request Check",
    "10 WAITER Bill: Split Ready",
    "11 WAITER Bill: Split Line + Ready",
    "12 WAITER Closes"
  ],
  "step_reached": "7 of 12 (P1 Split -> P2 Invited) fully observed. Step 8/9 controls were SEEN on P2's screen but I did not tap Accept.",
  "two_diners_joined": {
    "answer": "YES",
    "p1_screen": "P1's cart header showed three scope chips: \"1 Quinn (You)\" [cart-scope-chip-995b3c34-...], \"2 All\" [cart-scope-chip-all], \"1 Mr. Freeze\" [cart-scope-chip-cfe4b806-...]. The settle sheet later said \"Split the check (2)\".",
    "p2_screen": "P2's cart header showed the mirror image: \"1 Mr. Freeze (You)\", \"2 All\", \"1 Quinn\".",
    "note": "Guest display names are randomly assigned per run (earlier run on 9981 showed Silver/Deadpool)."
  },
  "payment_controls_after_co_order": {
    "how_reached": "post-order home -> [layout-service-button] -> service sheet -> [service-bubble-ready_for_bill] \"Check Please / Ready to settle up\"",
    "service_sheet": [
      {
        "testid": "service-bubble-attend_table",
        "text": "Call Waiter Someone will stop by"
      },
      {
        "testid": "service-bubble-cutlery",
        "text": "Silverware A fresh set"
      },
      {
        "testid": "service-bubble-ready_for_bill",
        "text": "Check Please Ready to settle up"
      }
    ],
    "settle_fork_header": "How would you like to settle your bill?",
    "settle_fork": [
      {
        "testid": "settlement-cover",
        "text": "Cover"
      },
      {
        "testid": "settlement-split",
        "text": "Split the check (2)"
      }
    ],
    "after_tapping_split": {
      "header": "How many ways?",
      "controls": [
        {
          "testid": "split-check-step",
          "text": "(the N-ways stepper container)"
        },
        {
          "testid": "split-decrement",
          "text": "Decrease split count"
        },
        {
          "testid": "split-count-input",
          "text": "(count input)"
        },
        {
          "testid": "split-increment",
          "text": "Increase split count"
        },
        {
          "testid": "split-confirm",
          "text": "Split 2 ways"
        },
        {
          "testid": "split-cancel",
          "text": "Cancel"
        }
      ]
    },
    "what_p2_got": {
      "container": "split-invitation",
      "banner_text": "\u2014 SPLIT THE BILL \u2014 Harley Quinn wants to split the bill 2 ways. Even split of the table total \u2014 choose how you'd like to pay.",
      "controls": [
        {
          "testid": "split-invitation-accept",
          "text": "Accept split"
        },
        {
          "testid": "split-invitation-pay-table",
          "text": "Pay for the table"
        },
        {
          "testid": "split-invitation-pay-own",
          "text": "Pay for my order"
        }
      ]
    },
    "p1_after_split": "P1 was dropped back into the cart/ledger (cart-sheet, order-status-badge ORDERED, TOTAL $3.50). Re-opening the service sheet showed \"Check Please\" now DISABLED with the line \"Your server is nearby \u2014 we'll be right with you.\""
  },
  "controls_asked_about": {
    "split": "PRESENT \u2014 [settlement-split] \"Split the check (2)\" then [split-confirm] \"Split 2 ways\".",
    "cover_the_whole_table": "PRESENT but on the Cover branch, not the Split branch \u2014 [settlement-cover] \"Cover\" -> [cover-scope-table] \"The whole table\". I did not take that branch on this restaurant.",
    "cover_just_me": "PRESENT on the Cover branch \u2014 [cover-scope-just-me] \"Just me\". Not on the Split branch.",
    "extra_found_not_asked_about": "[cover-scope-someone] \"Someone on the table\"; and on P2's split invitation, [split-invitation-pay-table] \"Pay for the table\" + [split-invitation-pay-own] \"Pay for my order\"."
  },
  "stripe": {
    "mounted": false,
    "detail": "NO Stripe iframe and no card field at any point on the split path. 0 iframes on every surface I dumped. The split path never offered a 'pay now' control to P1 \u2014 after [split-confirm] it returns to the cart. P2's invitation offers 'Pay for the table' / 'Pay for my order', which I did NOT tap."
  },
  "stopped_at": "P2's split invitation, with Accept split / Pay for the table / Pay for my order on screen.",
  "stopped_why": "DELIBERATE. I did not tap any of P2's pay controls, so I never reached a card surface and nothing could be charged.",
  "note": "Canary steps 6/8/10/11/12 are WAITER steps. This container has no waiter credentials, so no waiter step was driven. Everything below is the PATRON surface only.",
  "screenshots": [
    "/workspace/uat/lane-pay/mosaic_v2-split-01-p1-arrived.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-02-p2-arrived.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-03-p1-after-p2-joined.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-04-p1-added.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-05-p2-added.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-06-p1-order-dock.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-07-p1-after-co-order.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-08-p1-post-order-home.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-09-p1-service-sheet.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-10-p1-settle-fork.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-12-p1-split-the-check.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-13-p1-split-confirm.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-14-p1-pay-surface.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-watch-10-p1-settle-fork.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-watch-11-p1-split-ways.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-watch-12-p1-after-split-confirm.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-watch-13-p1-check-surface-after-split.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-watch-20-p2-home-after-split.png",
    "/workspace/uat/lane-pay/mosaic_v2-split-watch-21-p2-check-surface.png"
  ],
  "surface_dumps": [
    "mosaic_v2-split-01-p1-arrived.surface.txt",
    "mosaic_v2-split-02-p2-arrived.surface.txt",
    "mosaic_v2-split-03-p1-after-p2-joined.surface.txt",
    "mosaic_v2-split-06-p1-order-dock.surface.txt",
    "mosaic_v2-split-07-p1-after-co-order.surface.txt",
    "mosaic_v2-split-08-p1-post-order-home.surface.txt",
    "mosaic_v2-split-09-p1-service-sheet.surface.txt",
    "mosaic_v2-split-10-p1-settle-fork.surface.txt",
    "mosaic_v2-split-12-p1-split-the-check.surface.txt",
    "mosaic_v2-split-13-p1-split-confirm.surface.txt",
    "mosaic_v2-split-14-p1-pay-surface.surface.txt",
    "mosaic_v2-split-watch-10-p1-settle-fork.surface.txt",
    "mosaic_v2-split-watch-11-p1-split-ways.surface.txt",
    "mosaic_v2-split-watch-12-p1-after-split-confirm.surface.txt",
    "mosaic_v2-split-watch-13-p1-check-surface-after-split.surface.txt",
    "mosaic_v2-split-watch-20-p2-home-after-split.surface.txt",
    "mosaic_v2-split-watch-21-p2-check-surface.surface.txt"
  ],
  "logs": [
    "/workspace/uat/lane-pay/mosaic_v2-split.log.txt",
    "/workspace/uat/lane-pay/mosaic_v2-split-watch.log.txt"
  ]
}