{
  "product": "Specification (reference)",
  "title": "Shopping Cart",
  "summary": "Hold items, keep the total honest, and survive the customer leaving and coming back.",
  "category": "commerce",
  "entries": [
    {
      "path": [
        "AI",
        "Items",
        "Add, update quantity, remove"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Items",
        "Variant selection kept distinct"
      ],
      "value": "size, colour",
      "status": "yes",
      "note": "same product, different line"
    },
    {
      "path": [
        "AI",
        "Items",
        "Merge duplicate lines rather than repeat them"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Pricing",
        "Line subtotal, cart subtotal, grand total"
      ],
      "value": "",
      "status": "yes",
      "note": "recomputed, never stored stale"
    },
    {
      "path": [
        "AI",
        "Pricing",
        "Tax calculated by destination and product class"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Pricing",
        "Shipping estimate before checkout"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Pricing",
        "Currency and rounding rules stated"
      ],
      "value": "",
      "status": "yes",
      "note": "no floating-point money"
    },
    {
      "path": [
        "AI",
        "Promotions",
        "Coupon codes with eligibility rules"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Promotions",
        "Stacking policy defined"
      ],
      "value": "",
      "status": "yes",
      "note": "which discounts combine, which do not"
    },
    {
      "path": [
        "AI",
        "Stock",
        "Availability checked at add and again at checkout"
      ],
      "value": "",
      "status": "yes",
      "note": "stock can change in between"
    },
    {
      "path": [
        "AI",
        "Stock",
        "Reservation window or explicit lack of one"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Persistence",
        "Cart survives reload and session end"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Persistence",
        "Guest cart merges into the account on sign-in"
      ],
      "value": "",
      "status": "yes",
      "note": "the classic lost-cart bug"
    },
    {
      "path": [
        "AI",
        "Persistence",
        "Abandoned cart retrievable"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Display",
        "Line items with image, variant, unit and line price"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Display",
        "Totals broken down, not just a final number"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Feedback",
        "Quantity change updates totals without a full reload"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Feedback",
        "Out-of-stock and price changes surfaced clearly"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    }
  ]
}
