{
 "scenario": "customers-add-delete",
 "counts": {
  "match": 68,
  "tolerated": 4,
  "waived": 0,
  "defect": 0,
  "unmapped": 12,
  "harness": 0
 },
 "pairs": {},
 "pairs_by_draw_order": [],
 "waivers": [
  {
   "id": "W1",
   "status": "proposed",
   "title": "ORDER_DATA saved as NULL",
   "reason": "The source saves a new order without an order date: the empty ORDER_DATA item is inserted as NULL, so no order the form creates has a date. A target that stores the time of the order instead keeps data the source loses. Parity is implemented (the target sends every empty header item as NULL).\n",
   "applied": 0
  },
  {
   "id": "W2",
   "status": "proposed",
   "title": "Order number consumed when the form opens",
   "reason": "Opening ORDERS draws an order number from ORD_SEQ and shows it (16); saving draws another one and stores that (17). The number the user sees while entering the order is not the number of the saved order, and every opened form uses up a number. A target that assigns the number at save draws one value per order and shows it only after saving. Parity is implemented (the target draws a number on opening, shows it, and lets the insert draw the stored one).\n",
   "applied": 0
  },
  {
   "id": "W3",
   "status": "proposed",
   "title": "Line ITEM_ID typed by the user",
   "reason": "The user types the key of each order line (ITEM_ID 1, 2), and ITEM_SEQ is not used. ITEM_ID is the primary key of all order lines, not a line number within the order, so a second order whose lines are typed as 1 and 2 again fails on a duplicate key. A target that draws the key from ITEM_SEQ avoids the collision. Parity is implemented (new lines take the typed key; a key that belongs to another order is refused).\n",
   "applied": 0
  },
  {
   "id": "W4",
   "status": "proposed",
   "title": "Two modal alerts after saving",
   "reason": "After a save the source shows two modal alerts, each needing OK: the commit confirmation (FRM-40400, \"3 records applied and saved\") and then the form's own success message. A web target would normally confirm once, without a modal dialog, in the status line. Parity is implemented (the target shows the two confirmations as browser alerts, in the same order, with the same messages in the status line).\n",
   "applied": 0
  },
  {
   "id": "W5",
   "status": "proposed",
   "title": "Key debug message on record navigation (single-table forms)",
   "reason": "Next, Previous and Last in Categories, Customers, Employees and Products leave a message such as \"Category Id Required902\" on the message line: the record's key appended to a fixed text, left over from a validation trigger. It tells the user nothing (no field is required at that point) and First does not show it. A target would show no message. Parity is implemented (the same text on the same buttons).\n",
   "applied": 0
  },
  {
   "id": "W6",
   "status": "proposed",
   "title": "Customer debug message in ORDERS",
   "reason": "After a query in ORDERS the message line reads \"Customer Id1\": the first order's customer number appended to a fixed text, left over from a trigger, and it stays while the user navigates. A target would show no message. Parity is implemented.\n",
   "applied": 0
  },
  {
   "id": "W7",
   "status": "proposed",
   "title": "Placeholder alert on leaving Employees",
   "reason": "The Employees exit button shows a modal alert \"gooooooooooooooooooooood\" that must be acknowledged before the form closes: a developer's placeholder. A target would close the form directly. Parity is implemented. Without the alert the scenario's acknowledging step cannot be performed; that entry stays a defect to review with this waiver (it names no value to pin).\n",
   "applied": 0
  },
  {
   "id": "W8",
   "status": "proposed",
   "title": "Error message when the application starts",
   "reason": "The main menu opens with \"FRM-41003: This function cannot be performed here.\" on the message line: a built-in started from the menu's startup trigger fails in that context. The user did nothing wrong; a target would start with an empty message line. Parity is implemented.\n",
   "applied": 0
  },
  {
   "id": "W9",
   "status": "proposed",
   "title": "Keyboard hint of the Forms client while a question is open",
   "reason": "While the save question (Yes/No/Cancel) is open, the Forms Java client writes its keyboard hint \"Press Tab to move between choices, Return to select.\" to the message line. It belongs to the client's dialog handling, not to the application. A web target's dialog needs no such hint. Parity is implemented (the target writes the same hint while its question dialog is open).\n",
   "applied": 0
  },
  {
   "id": "W10",
   "status": "proposed",
   "title": "An order added with Add cannot be saved",
   "reason": "Add in ORDERS creates a record without an order number. ORDER_ID is required and disabled, so the user cannot enter one and saving fails every time: \"FRM-40202: Field must be entered.\", then \"FRM-40222: Disabled item 'ORDERS.ORDER_ID' failed validation.\", then the form's own failure message. Only the record the form opens on (which draws a number) can be saved. A target would number the added order and save it. Parity is implemented. A target that saves it also differs in the database rows and ORD_SEQ draws of that save; those entries are reviewed with this waiver, not covered by it.\n",
   "applied": 0
  }
 ],
 "groups": [
  {
   "class": "tolerated",
   "group": "ui.values.CUSTOMERS.REGISTER_DATA",
   "rule": "mask:default-date",
   "note": null,
   "count": 4,
   "where": [
    "step01.values.CUSTOMERS.REGISTER_DATA[0]",
    "step02.values.CUSTOMERS.REGISTER_DATA[0]",
    "step03.values.CUSTOMERS.REGISTER_DATA[0]",
    "step05.values.CUSTOMERS.REGISTER_DATA[0]"
   ]
  },
  {
   "class": "unmapped",
   "group": "ui.record",
   "rule": null,
   "note": "no target counterpart",
   "count": 6,
   "where": [
    "step00.record",
    "step01.record",
    "step02.record",
    "step03.record",
    "step04.record",
    "step05.record"
   ]
  },
  {
   "class": "unmapped",
   "group": "ui.windows",
   "rule": null,
   "note": "no target counterpart",
   "count": 6,
   "where": [
    "step00.windows",
    "step01.windows",
    "step02.windows",
    "step03.windows",
    "step04.windows",
    "step05.windows"
   ]
  }
 ],
 "entries": [
  {
   "where": "step00.record",
   "class": "unmapped",
   "source": "Record: 1/?",
   "target": "1 of 2",
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.record"
  },
  {
   "where": "step00.windows",
   "class": "unmapped",
   "source": [
    {
     "name": "JBufferedFrame",
     "title": "Oracle Fusion Middleware Forms Services"
    },
    {
     "name": "WINDOW1",
     "title": "WINDOW1"
    }
   ],
   "target": [
    {
     "name": "page",
     "title": "Retail management"
    },
    {
     "name": "heading",
     "title": "Customers"
    }
   ],
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.windows"
  },
  {
   "where": "step01.values.CUSTOMERS.REGISTER_DATA[0]",
   "class": "tolerated",
   "source": "<date>",
   "target": "<date>",
   "rule": "mask:default-date",
   "note": null,
   "group": "ui.values.CUSTOMERS.REGISTER_DATA"
  },
  {
   "where": "step01.record",
   "class": "unmapped",
   "source": "Record: 2/?",
   "target": "2 of 3",
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.record"
  },
  {
   "where": "step01.windows",
   "class": "unmapped",
   "source": [
    {
     "name": "JBufferedFrame",
     "title": "Oracle Fusion Middleware Forms Services"
    },
    {
     "name": "WINDOW1",
     "title": "WINDOW1"
    }
   ],
   "target": [
    {
     "name": "page",
     "title": "Retail management"
    },
    {
     "name": "heading",
     "title": "Customers"
    }
   ],
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.windows"
  },
  {
   "where": "step02.values.CUSTOMERS.REGISTER_DATA[0]",
   "class": "tolerated",
   "source": "<date>",
   "target": "<date>",
   "rule": "mask:default-date",
   "note": null,
   "group": "ui.values.CUSTOMERS.REGISTER_DATA"
  },
  {
   "where": "step02.record",
   "class": "unmapped",
   "source": "Record: 2/?",
   "target": "2 of 3",
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.record"
  },
  {
   "where": "step02.windows",
   "class": "unmapped",
   "source": [
    {
     "name": "JBufferedFrame",
     "title": "Oracle Fusion Middleware Forms Services"
    },
    {
     "name": "WINDOW1",
     "title": "WINDOW1"
    }
   ],
   "target": [
    {
     "name": "page",
     "title": "Retail management"
    },
    {
     "name": "heading",
     "title": "Customers"
    }
   ],
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.windows"
  },
  {
   "where": "step03.values.CUSTOMERS.REGISTER_DATA[0]",
   "class": "tolerated",
   "source": "<date>",
   "target": "<date>",
   "rule": "mask:default-date",
   "note": null,
   "group": "ui.values.CUSTOMERS.REGISTER_DATA"
  },
  {
   "where": "step03.record",
   "class": "unmapped",
   "source": "Record: 2/?",
   "target": "2 of 3",
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.record"
  },
  {
   "where": "step03.windows",
   "class": "unmapped",
   "source": [
    {
     "name": "JBufferedFrame",
     "title": "Oracle Fusion Middleware Forms Services"
    },
    {
     "name": "WINDOW1",
     "title": "WINDOW1"
    }
   ],
   "target": [
    {
     "name": "page",
     "title": "Retail management"
    },
    {
     "name": "heading",
     "title": "Customers"
    }
   ],
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.windows"
  },
  {
   "where": "step04.record",
   "class": "unmapped",
   "source": "Record: 3/3",
   "target": "3 of 3",
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.record"
  },
  {
   "where": "step04.windows",
   "class": "unmapped",
   "source": [
    {
     "name": "JBufferedFrame",
     "title": "Oracle Fusion Middleware Forms Services"
    },
    {
     "name": "WINDOW1",
     "title": "WINDOW1"
    }
   ],
   "target": [
    {
     "name": "page",
     "title": "Retail management"
    },
    {
     "name": "heading",
     "title": "Customers"
    }
   ],
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.windows"
  },
  {
   "where": "step05.values.CUSTOMERS.REGISTER_DATA[0]",
   "class": "tolerated",
   "source": "<date>",
   "target": "<date>",
   "rule": "mask:default-date",
   "note": null,
   "group": "ui.values.CUSTOMERS.REGISTER_DATA"
  },
  {
   "where": "step05.record",
   "class": "unmapped",
   "source": "Record: 2/2",
   "target": "2 of 2",
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.record"
  },
  {
   "where": "step05.windows",
   "class": "unmapped",
   "source": [
    {
     "name": "JBufferedFrame",
     "title": "Oracle Fusion Middleware Forms Services"
    },
    {
     "name": "WINDOW1",
     "title": "WINDOW1"
    }
   ],
   "target": [
    {
     "name": "page",
     "title": "Retail management"
    },
    {
     "name": "heading",
     "title": "Customers"
    }
   ],
   "rule": null,
   "note": "no target counterpart",
   "group": "ui.windows"
  }
 ]
}
