[
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/javac",
      "--release",
      "8",
      "-proc:none",
      "-cp",
      "$RUNTIME",
      "-d",
      "$OUTPUT/original/classes",
      "$EXAMPLE/original/src/demo/fulfilment/CaptureIncident.java",
      "$EXAMPLE/original/src/demo/fulfilment/CreditCheck.java",
      "$EXAMPLE/original/src/demo/fulfilment/Discount.java",
      "$EXAMPLE/original/src/demo/fulfilment/Input.java",
      "$EXAMPLE/original/src/demo/fulfilment/Inventory.java",
      "$EXAMPLE/original/src/demo/fulfilment/Order.java",
      "$EXAMPLE/original/src/demo/fulfilment/Policy.java",
      "$EXAMPLE/original/src/demo/fulfilment/PolicyUpdate.java",
      "$EXAMPLE/original/src/demo/fulfilment/Recorder.java",
      "$EXAMPLE/original/src/demo/fulfilment/ReleaseDecision.java",
      "$EXAMPLE/original/src/demo/fulfilment/Shipping.java",
      "$EXAMPLE/original/src/demo/fulfilment/StockCheck.java",
      "$EXAMPLE/original/src/demo/fulfilment/StockUpdate.java",
      "$EXAMPLE/original/src/demo/fulfilment/Subtotal.java",
      "$EXAMPLE/original/src/demo/fulfilment/Total.java",
      "$EXAMPLE/original/generated/FulfilmentProcessor.java",
      "$EXAMPLE/Regression.java",
      "$EXAMPLE/IndependentBoundaries.java"
    ],
    "exitCode": 0,
    "output": "warning: [options] source value 8 is obsolete and will be removed in a future release\nwarning: [options] target value 8 is obsolete and will be removed in a future release\nwarning: [options] To suppress warnings about obsolete options, use -Xlint:-options.\n3 warnings\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/java",
      "-cp",
      "$OUTPUT/original/classes:$RUNTIME",
      "Regression"
    ],
    "exitCode": 1,
    "output": "eventLogRecord: \n    eventTime: 1793558714459\n    logTime: 1793558714459\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Init\n    thread: main\n    nodeLogs: \n    endTime: 1793558714460\neventLogRecord: \n    eventTime: 1793558714460\n    logTime: 1793558714460\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Start\n    thread: main\n    nodeLogs: \n    endTime: 1793558714460\neventLogRecord: \n    eventTime: 1793558714460\n    logTime: 1793558714460\n    groupingId: null\n    event: Order\n    eventToString: baseline:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: baseline, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10500}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10500}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: baseline, count: 1, outcome: RELEASED}\n    endTime: 1793558714460\nPASS baseline discounted=10500 shipping=0 total=10500 outcome=RELEASED publications=1\neventLogRecord: \n    eventTime: 1793558714461\n    logTime: 1793558714461\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=10,credit=9700\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 10, creditLimit: 9700}\n    endTime: 1793558714461\neventLogRecord: \n    eventTime: 1793558714461\n    logTime: 1793558714461\n    groupingId: null\n    event: Order\n    eventToString: discounted-order:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: discounted-order, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9450}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9450}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9700, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: discounted-order, count: 2, outcome: RELEASED}\n    endTime: 1793558714461\nException in thread \"main\" java.lang.AssertionError: discounted-order shipping: expected=500 actual=0\n\tat Regression.eq(Regression.java:5)\n\tat Regression$Scenario.order(Regression.java:12)\n\tat Regression.main(Regression.java:19)\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/java",
      "-cp",
      "$OUTPUT/original/classes:$RUNTIME",
      "demo.fulfilment.CaptureIncident",
      "$OUTPUT/original/capture"
    ],
    "exitCode": 0,
    "output": "CAPTURED five orders and four configuration updates; five publications. Business correctness intentionally not asserted by capture harness.\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/javac",
      "--release",
      "8",
      "-proc:none",
      "-cp",
      "$RUNTIME",
      "-d",
      "$OUTPUT/repaired/classes",
      "$EXAMPLE/repaired/src/demo/fulfilment/CaptureIncident.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/CreditCheck.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/Discount.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/Input.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/Inventory.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/Order.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/Policy.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/PolicyUpdate.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/Recorder.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/ReleaseDecision.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/Shipping.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/StockCheck.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/StockUpdate.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/Subtotal.java",
      "$EXAMPLE/repaired/src/demo/fulfilment/Total.java",
      "$EXAMPLE/repaired/generated/FulfilmentProcessor.java",
      "$EXAMPLE/Regression.java",
      "$EXAMPLE/IndependentBoundaries.java"
    ],
    "exitCode": 0,
    "output": "warning: [options] source value 8 is obsolete and will be removed in a future release\nwarning: [options] target value 8 is obsolete and will be removed in a future release\nwarning: [options] To suppress warnings about obsolete options, use -Xlint:-options.\n3 warnings\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/java",
      "-cp",
      "$OUTPUT/repaired/classes:$RUNTIME",
      "Regression"
    ],
    "exitCode": 0,
    "output": "eventLogRecord: \n    eventTime: 1793558714966\n    logTime: 1793558714966\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Init\n    thread: main\n    nodeLogs: \n    endTime: 1793558714967\neventLogRecord: \n    eventTime: 1793558714967\n    logTime: 1793558714967\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Start\n    thread: main\n    nodeLogs: \n    endTime: 1793558714967\neventLogRecord: \n    eventTime: 1793558714967\n    logTime: 1793558714967\n    groupingId: null\n    event: Order\n    eventToString: baseline:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: baseline, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10500}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10500}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: baseline, count: 1, outcome: RELEASED}\n    endTime: 1793558714967\nPASS baseline discounted=10500 shipping=0 total=10500 outcome=RELEASED publications=1\neventLogRecord: \n    eventTime: 1793558714967\n    logTime: 1793558714967\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=10,credit=9700\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 10, creditLimit: 9700}\n    endTime: 1793558714967\neventLogRecord: \n    eventTime: 1793558714967\n    logTime: 1793558714967\n    groupingId: null\n    event: Order\n    eventToString: discounted-order:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: discounted-order, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9450}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9950}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9700, creditApproved: false}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_CREDIT}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: discounted-order, count: 2, outcome: REJECTED_CREDIT}\n    endTime: 1793558714967\nPASS discounted-order discounted=9450 shipping=500 total=9950 outcome=REJECTED_CREDIT publications=2\neventLogRecord: \n    eventTime: 1793558714967\n    logTime: 1793558714967\n    groupingId: null\n    event: Order\n    eventToString: below-threshold:1x9000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: below-threshold, quantity: 1, unitPricePence: 9000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 9000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 8100}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 8600}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9700, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: below-threshold, count: 3, outcome: RELEASED}\n    endTime: 1793558714967\nPASS below-threshold discounted=8100 shipping=500 total=8600 outcome=RELEASED publications=3\neventLogRecord: \n    eventTime: 1793558714967\n    logTime: 1793558714967\n    groupingId: null\n    event: StockUpdate\n    eventToString: available=0\n    thread: main\n    nodeLogs: \n        - inventory: { thread: main, method: update, annotation: OnEventHandler, available: 0}\n    endTime: 1793558714968\neventLogRecord: \n    eventTime: 1793558714968\n    logTime: 1793558714968\n    groupingId: null\n    event: Order\n    eventToString: stock-unavailable:1x9000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: stock-unavailable, quantity: 1, unitPricePence: 9000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: false}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 9000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 8100}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 8600}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9700, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_STOCK}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: stock-unavailable, count: 4, outcome: REJECTED_STOCK}\n    endTime: 1793558714968\nPASS stock-unavailable discounted=8100 shipping=500 total=8600 outcome=REJECTED_STOCK publications=4\neventLogRecord: \n    eventTime: 1793558714968\n    logTime: 1793558714968\n    groupingId: null\n    event: StockUpdate\n    eventToString: available=20\n    thread: main\n    nodeLogs: \n        - inventory: { thread: main, method: update, annotation: OnEventHandler, available: 20}\n    endTime: 1793558714968\neventLogRecord: \n    eventTime: 1793558714968\n    logTime: 1793558714968\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=0,credit=20000\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 0, creditLimit: 20000}\n    endTime: 1793558714968\neventLogRecord: \n    eventTime: 1793558714968\n    logTime: 1793558714968\n    groupingId: null\n    event: Order\n    eventToString: recovered:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: recovered, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10500}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10500}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: recovered, count: 5, outcome: RELEASED}\n    endTime: 1793558714968\nPASS recovered discounted=10500 shipping=0 total=10500 outcome=RELEASED publications=5\neventLogRecord: \n    eventTime: 1793558714968\n    logTime: 1793558714968\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Stop\n    thread: main\n    nodeLogs: \n    endTime: 1793558714968\neventLogRecord: \n    eventTime: 1793558714968\n    logTime: 1793558714968\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: TearDown\n    thread: main\n    nodeLogs: \n    endTime: 1793558714968\neventLogRecord: \n    eventTime: 1793558714968\n    logTime: 1793558714968\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Init\n    thread: main\n    nodeLogs: \n    endTime: 1793558714968\neventLogRecord: \n    eventTime: 1793558714968\n    logTime: 1793558714968\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Start\n    thread: main\n    nodeLogs: \n    endTime: 1793558714968\neventLogRecord: \n    eventTime: 1793558714968\n    logTime: 1793558714968\n    groupingId: null\n    event: Order\n    eventToString: boundary9999:1x9999\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: boundary9999, quantity: 1, unitPricePence: 9999}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 9999}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 9999}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10499}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: boundary9999, count: 1, outcome: RELEASED}\n    endTime: 1793558714969\nPASS boundary9999 discounted=9999 shipping=500 total=10499 outcome=RELEASED publications=1\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: Order\n    eventToString: boundary10000:1x10000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: boundary10000, quantity: 1, unitPricePence: 10000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10000}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: boundary10000, count: 2, outcome: RELEASED}\n    endTime: 1793558714969\nPASS boundary10000 discounted=10000 shipping=0 total=10000 outcome=RELEASED publications=2\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: Order\n    eventToString: boundary10001:1x10001\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: boundary10001, quantity: 1, unitPricePence: 10001}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10001}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10001}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10001}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: boundary10001, count: 3, outcome: RELEASED}\n    endTime: 1793558714969\nPASS boundary10001 discounted=10001 shipping=0 total=10001 outcome=RELEASED publications=3\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=10,credit=20000\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 10, creditLimit: 20000}\n    endTime: 1793558714969\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: Order\n    eventToString: rounding:1x10001\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: rounding, quantity: 1, unitPricePence: 10001}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10001}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9001}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9501}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: rounding, count: 4, outcome: RELEASED}\n    endTime: 1793558714969\nPASS rounding discounted=9001 shipping=500 total=9501 outcome=RELEASED publications=4\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=10,credit=9950\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 10, creditLimit: 9950}\n    endTime: 1793558714969\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: Order\n    eventToString: credit-equality:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: credit-equality, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9450}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9950}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9950, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: credit-equality, count: 5, outcome: RELEASED}\n    endTime: 1793558714969\nPASS credit-equality discounted=9450 shipping=500 total=9950 outcome=RELEASED publications=5\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=10,credit=9949\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 10, creditLimit: 9949}\n    endTime: 1793558714969\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: Order\n    eventToString: credit-one-over:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: credit-one-over, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9450}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9950}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9949, creditApproved: false}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_CREDIT}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: credit-one-over, count: 6, outcome: REJECTED_CREDIT}\n    endTime: 1793558714969\nPASS credit-one-over discounted=9450 shipping=500 total=9950 outcome=REJECTED_CREDIT publications=6\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: StockUpdate\n    eventToString: available=0\n    thread: main\n    nodeLogs: \n        - inventory: { thread: main, method: update, annotation: OnEventHandler, available: 0}\n    endTime: 1793558714969\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: Order\n    eventToString: both-fail:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: both-fail, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: false}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9450}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9950}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9949, creditApproved: false}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_STOCK}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: both-fail, count: 7, outcome: REJECTED_STOCK}\n    endTime: 1793558714969\nPASS both-fail discounted=9450 shipping=500 total=9950 outcome=REJECTED_STOCK publications=7\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: StockUpdate\n    eventToString: available=1\n    thread: main\n    nodeLogs: \n        - inventory: { thread: main, method: update, annotation: OnEventHandler, available: 1}\n    endTime: 1793558714969\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=0,credit=20000\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 0, creditLimit: 20000}\n    endTime: 1793558714969\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: Order\n    eventToString: snapshot-first:1x10000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: snapshot-first, quantity: 1, unitPricePence: 10000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10000}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: snapshot-first, count: 8, outcome: RELEASED}\n    endTime: 1793558714969\nPASS snapshot-first discounted=10000 shipping=0 total=10000 outcome=RELEASED publications=8\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: Order\n    eventToString: snapshot-repeat:1x10000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: snapshot-repeat, quantity: 1, unitPricePence: 10000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10000}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: snapshot-repeat, count: 9, outcome: RELEASED}\n    endTime: 1793558714969\nPASS snapshot-repeat discounted=10000 shipping=0 total=10000 outcome=RELEASED publications=9\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: Order\n    eventToString: snapshot-insufficient:2x100\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: snapshot-insufficient, quantity: 2, unitPricePence: 100}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: false}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 200}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 200}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 700}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_STOCK}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: snapshot-insufficient, count: 10, outcome: REJECTED_STOCK}\n    endTime: 1793558714969\nPASS snapshot-insufficient discounted=200 shipping=500 total=700 outcome=REJECTED_STOCK publications=10\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Stop\n    thread: main\n    nodeLogs: \n    endTime: 1793558714969\neventLogRecord: \n    eventTime: 1793558714969\n    logTime: 1793558714969\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: TearDown\n    thread: main\n    nodeLogs: \n    endTime: 1793558714969\nPASS assertions=85 orders=15 updates=10\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/java",
      "-cp",
      "$OUTPUT/repaired/classes:$RUNTIME",
      "IndependentBoundaries"
    ],
    "exitCode": 0,
    "output": "eventLogRecord: \n    eventTime: 1793558715035\n    logTime: 1793558715035\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Init\n    thread: main\n    nodeLogs: \n    endTime: 1793558715036\neventLogRecord: \n    eventTime: 1793558715036\n    logTime: 1793558715036\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Start\n    thread: main\n    nodeLogs: \n    endTime: 1793558715036\neventLogRecord: \n    eventTime: 1793558715036\n    logTime: 1793558715036\n    groupingId: null\n    event: Order\n    eventToString: initial:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: initial, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10500}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10500}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: initial, count: 1, outcome: RELEASED}\n    endTime: 1793558715036\nPASS initial discounted=10500 shipping=0 total=10500 outcome=RELEASED publications=1\neventLogRecord: \n    eventTime: 1793558715036\n    logTime: 1793558715036\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=20,credit=20000\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 20, creditLimit: 20000}\n    endTime: 1793558715036\neventLogRecord: \n    eventTime: 1793558715036\n    logTime: 1793558715036\n    groupingId: null\n    event: Order\n    eventToString: discounted9999:1x12498\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: discounted9999, quantity: 1, unitPricePence: 12498}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 12498}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 20, discountedPence: 9999}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10499}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: discounted9999, count: 2, outcome: RELEASED}\n    endTime: 1793558715036\nPASS discounted9999 discounted=9999 shipping=500 total=10499 outcome=RELEASED publications=2\neventLogRecord: \n    eventTime: 1793558715036\n    logTime: 1793558715036\n    groupingId: null\n    event: Order\n    eventToString: discounted10000-multiple-quantity:2x6250\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: discounted10000-multiple-quantity, quantity: 2, unitPricePence: 6250}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 12500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 20, discountedPence: 10000}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: discounted10000-multiple-quantity, count: 3, outcome: RELEASED}\n    endTime: 1793558715036\nPASS discounted10000-multiple-quantity discounted=10000 shipping=0 total=10000 outcome=RELEASED publications=3\neventLogRecord: \n    eventTime: 1793558715037\n    logTime: 1793558715037\n    groupingId: null\n    event: Order\n    eventToString: discounted10001:1x12501\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: discounted10001, quantity: 1, unitPricePence: 12501}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 12501}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 20, discountedPence: 10001}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10001}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: discounted10001, count: 4, outcome: RELEASED}\n    endTime: 1793558715037\nPASS discounted10001 discounted=10001 shipping=0 total=10001 outcome=RELEASED publications=4\neventLogRecord: \n    eventTime: 1793558715037\n    logTime: 1793558715037\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=50,credit=10000\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 50, creditLimit: 10000}\n    endTime: 1793558715037\neventLogRecord: \n    eventTime: 1793558715037\n    logTime: 1793558715037\n    groupingId: null\n    event: Order\n    eventToString: max-discount:2x10000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: max-discount, quantity: 2, unitPricePence: 10000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 20000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 50, discountedPence: 10000}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 10000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: max-discount, count: 5, outcome: RELEASED}\n    endTime: 1793558715037\nPASS max-discount discounted=10000 shipping=0 total=10000 outcome=RELEASED publications=5\neventLogRecord: \n    eventTime: 1793558715037\n    logTime: 1793558715037\n    groupingId: null\n    event: StockUpdate\n    eventToString: available=0\n    thread: main\n    nodeLogs: \n        - inventory: { thread: main, method: update, annotation: OnEventHandler, available: 0}\n    endTime: 1793558715037\neventLogRecord: \n    eventTime: 1793558715037\n    logTime: 1793558715037\n    groupingId: null\n    event: Order\n    eventToString: updated-stock:2x10000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: updated-stock, quantity: 2, unitPricePence: 10000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: false}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 20000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 50, discountedPence: 10000}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 10000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_STOCK}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: updated-stock, count: 6, outcome: REJECTED_STOCK}\n    endTime: 1793558715037\nPASS updated-stock discounted=10000 shipping=0 total=10000 outcome=REJECTED_STOCK publications=6\neventLogRecord: \n    eventTime: 1793558715037\n    logTime: 1793558715037\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Stop\n    thread: main\n    nodeLogs: \n    endTime: 1793558715037\neventLogRecord: \n    eventTime: 1793558715037\n    logTime: 1793558715037\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: TearDown\n    thread: main\n    nodeLogs: \n    endTime: 1793558715037\nPASS independent assertions=45 orders=6 updates=3\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/java",
      "-cp",
      "$OUTPUT/repaired/classes:$RUNTIME",
      "demo.fulfilment.CaptureIncident",
      "$OUTPUT/repaired/capture"
    ],
    "exitCode": 0,
    "output": "CAPTURED five orders and four configuration updates; five publications. Business correctness intentionally not asserted by capture harness.\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/javac",
      "--release",
      "8",
      "-proc:none",
      "-cp",
      "$RUNTIME",
      "-d",
      "$OUTPUT/extended/classes",
      "$EXAMPLE/extended/src/demo/fulfilment/CaptureIncident.java",
      "$EXAMPLE/extended/src/demo/fulfilment/CreditCheck.java",
      "$EXAMPLE/extended/src/demo/fulfilment/Discount.java",
      "$EXAMPLE/extended/src/demo/fulfilment/HandlingCharge.java",
      "$EXAMPLE/extended/src/demo/fulfilment/HandlingFeeUpdate.java",
      "$EXAMPLE/extended/src/demo/fulfilment/Input.java",
      "$EXAMPLE/extended/src/demo/fulfilment/Inventory.java",
      "$EXAMPLE/extended/src/demo/fulfilment/Order.java",
      "$EXAMPLE/extended/src/demo/fulfilment/Policy.java",
      "$EXAMPLE/extended/src/demo/fulfilment/PolicyUpdate.java",
      "$EXAMPLE/extended/src/demo/fulfilment/Recorder.java",
      "$EXAMPLE/extended/src/demo/fulfilment/ReleaseDecision.java",
      "$EXAMPLE/extended/src/demo/fulfilment/Shipping.java",
      "$EXAMPLE/extended/src/demo/fulfilment/StockCheck.java",
      "$EXAMPLE/extended/src/demo/fulfilment/StockUpdate.java",
      "$EXAMPLE/extended/src/demo/fulfilment/Subtotal.java",
      "$EXAMPLE/extended/src/demo/fulfilment/Total.java",
      "$EXAMPLE/extended/generated/FulfilmentProcessor.java",
      "$EXAMPLE/Regression.java",
      "$EXAMPLE/IndependentBoundaries.java",
      "$EXAMPLE/ExtensionCheck.java"
    ],
    "exitCode": 0,
    "output": "warning: [options] source value 8 is obsolete and will be removed in a future release\nwarning: [options] target value 8 is obsolete and will be removed in a future release\nwarning: [options] To suppress warnings about obsolete options, use -Xlint:-options.\n3 warnings\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/java",
      "-cp",
      "$OUTPUT/extended/classes:$RUNTIME",
      "Regression"
    ],
    "exitCode": 0,
    "output": "eventLogRecord: \n    eventTime: 1793558715561\n    logTime: 1793558715561\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Init\n    thread: main\n    nodeLogs: \n    endTime: 1793558715562\neventLogRecord: \n    eventTime: 1793558715562\n    logTime: 1793558715562\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Start\n    thread: main\n    nodeLogs: \n    endTime: 1793558715562\neventLogRecord: \n    eventTime: 1793558715562\n    logTime: 1793558715562\n    groupingId: null\n    event: Order\n    eventToString: baseline:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: baseline, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10500}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10500}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: baseline, count: 1, outcome: RELEASED}\n    endTime: 1793558715562\nPASS baseline discounted=10500 shipping=0 total=10500 outcome=RELEASED publications=1\neventLogRecord: \n    eventTime: 1793558715563\n    logTime: 1793558715563\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=10,credit=9700\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 10, creditLimit: 9700}\n    endTime: 1793558715563\neventLogRecord: \n    eventTime: 1793558715563\n    logTime: 1793558715563\n    groupingId: null\n    event: Order\n    eventToString: discounted-order:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: discounted-order, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9450}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9950}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9700, creditApproved: false}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_CREDIT}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: discounted-order, count: 2, outcome: REJECTED_CREDIT}\n    endTime: 1793558715563\nPASS discounted-order discounted=9450 shipping=500 total=9950 outcome=REJECTED_CREDIT publications=2\neventLogRecord: \n    eventTime: 1793558715563\n    logTime: 1793558715563\n    groupingId: null\n    event: Order\n    eventToString: below-threshold:1x9000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: below-threshold, quantity: 1, unitPricePence: 9000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 9000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 8100}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 8600}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9700, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: below-threshold, count: 3, outcome: RELEASED}\n    endTime: 1793558715563\nPASS below-threshold discounted=8100 shipping=500 total=8600 outcome=RELEASED publications=3\neventLogRecord: \n    eventTime: 1793558715563\n    logTime: 1793558715563\n    groupingId: null\n    event: StockUpdate\n    eventToString: available=0\n    thread: main\n    nodeLogs: \n        - inventory: { thread: main, method: update, annotation: OnEventHandler, available: 0}\n    endTime: 1793558715563\neventLogRecord: \n    eventTime: 1793558715563\n    logTime: 1793558715563\n    groupingId: null\n    event: Order\n    eventToString: stock-unavailable:1x9000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: stock-unavailable, quantity: 1, unitPricePence: 9000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: false}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 9000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 8100}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 8600}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9700, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_STOCK}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: stock-unavailable, count: 4, outcome: REJECTED_STOCK}\n    endTime: 1793558715563\nPASS stock-unavailable discounted=8100 shipping=500 total=8600 outcome=REJECTED_STOCK publications=4\neventLogRecord: \n    eventTime: 1793558715563\n    logTime: 1793558715563\n    groupingId: null\n    event: StockUpdate\n    eventToString: available=20\n    thread: main\n    nodeLogs: \n        - inventory: { thread: main, method: update, annotation: OnEventHandler, available: 20}\n    endTime: 1793558715563\neventLogRecord: \n    eventTime: 1793558715563\n    logTime: 1793558715563\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=0,credit=20000\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 0, creditLimit: 20000}\n    endTime: 1793558715563\neventLogRecord: \n    eventTime: 1793558715563\n    logTime: 1793558715563\n    groupingId: null\n    event: Order\n    eventToString: recovered:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: recovered, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10500}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10500}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: recovered, count: 5, outcome: RELEASED}\n    endTime: 1793558715563\nPASS recovered discounted=10500 shipping=0 total=10500 outcome=RELEASED publications=5\neventLogRecord: \n    eventTime: 1793558715563\n    logTime: 1793558715563\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Stop\n    thread: main\n    nodeLogs: \n    endTime: 1793558715563\neventLogRecord: \n    eventTime: 1793558715563\n    logTime: 1793558715563\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: TearDown\n    thread: main\n    nodeLogs: \n    endTime: 1793558715563\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Init\n    thread: main\n    nodeLogs: \n    endTime: 1793558715564\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Start\n    thread: main\n    nodeLogs: \n    endTime: 1793558715564\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: Order\n    eventToString: boundary9999:1x9999\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: boundary9999, quantity: 1, unitPricePence: 9999}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 9999}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 9999}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10499}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: boundary9999, count: 1, outcome: RELEASED}\n    endTime: 1793558715564\nPASS boundary9999 discounted=9999 shipping=500 total=10499 outcome=RELEASED publications=1\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: Order\n    eventToString: boundary10000:1x10000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: boundary10000, quantity: 1, unitPricePence: 10000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10000}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: boundary10000, count: 2, outcome: RELEASED}\n    endTime: 1793558715564\nPASS boundary10000 discounted=10000 shipping=0 total=10000 outcome=RELEASED publications=2\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: Order\n    eventToString: boundary10001:1x10001\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: boundary10001, quantity: 1, unitPricePence: 10001}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10001}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10001}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10001}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: boundary10001, count: 3, outcome: RELEASED}\n    endTime: 1793558715564\nPASS boundary10001 discounted=10001 shipping=0 total=10001 outcome=RELEASED publications=3\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=10,credit=20000\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 10, creditLimit: 20000}\n    endTime: 1793558715564\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: Order\n    eventToString: rounding:1x10001\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: rounding, quantity: 1, unitPricePence: 10001}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10001}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9001}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9501}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: rounding, count: 4, outcome: RELEASED}\n    endTime: 1793558715564\nPASS rounding discounted=9001 shipping=500 total=9501 outcome=RELEASED publications=4\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=10,credit=9950\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 10, creditLimit: 9950}\n    endTime: 1793558715564\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: Order\n    eventToString: credit-equality:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: credit-equality, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9450}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9950}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9950, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: credit-equality, count: 5, outcome: RELEASED}\n    endTime: 1793558715564\nPASS credit-equality discounted=9450 shipping=500 total=9950 outcome=RELEASED publications=5\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=10,credit=9949\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 10, creditLimit: 9949}\n    endTime: 1793558715564\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: Order\n    eventToString: credit-one-over:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: credit-one-over, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9450}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9950}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9949, creditApproved: false}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_CREDIT}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: credit-one-over, count: 6, outcome: REJECTED_CREDIT}\n    endTime: 1793558715564\nPASS credit-one-over discounted=9450 shipping=500 total=9950 outcome=REJECTED_CREDIT publications=6\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: StockUpdate\n    eventToString: available=0\n    thread: main\n    nodeLogs: \n        - inventory: { thread: main, method: update, annotation: OnEventHandler, available: 0}\n    endTime: 1793558715564\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: Order\n    eventToString: both-fail:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: both-fail, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: false}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 10, discountedPence: 9450}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 9950}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 9949, creditApproved: false}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_STOCK}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: both-fail, count: 7, outcome: REJECTED_STOCK}\n    endTime: 1793558715564\nPASS both-fail discounted=9450 shipping=500 total=9950 outcome=REJECTED_STOCK publications=7\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: StockUpdate\n    eventToString: available=1\n    thread: main\n    nodeLogs: \n        - inventory: { thread: main, method: update, annotation: OnEventHandler, available: 1}\n    endTime: 1793558715564\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=0,credit=20000\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 0, creditLimit: 20000}\n    endTime: 1793558715564\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: Order\n    eventToString: snapshot-first:1x10000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: snapshot-first, quantity: 1, unitPricePence: 10000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10000}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: snapshot-first, count: 8, outcome: RELEASED}\n    endTime: 1793558715564\nPASS snapshot-first discounted=10000 shipping=0 total=10000 outcome=RELEASED publications=8\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: Order\n    eventToString: snapshot-repeat:1x10000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: snapshot-repeat, quantity: 1, unitPricePence: 10000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10000}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: snapshot-repeat, count: 9, outcome: RELEASED}\n    endTime: 1793558715564\nPASS snapshot-repeat discounted=10000 shipping=0 total=10000 outcome=RELEASED publications=9\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: Order\n    eventToString: snapshot-insufficient:2x100\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: snapshot-insufficient, quantity: 2, unitPricePence: 100}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: false}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 200}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 200}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 700}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_STOCK}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: snapshot-insufficient, count: 10, outcome: REJECTED_STOCK}\n    endTime: 1793558715564\nPASS snapshot-insufficient discounted=200 shipping=500 total=700 outcome=REJECTED_STOCK publications=10\neventLogRecord: \n    eventTime: 1793558715564\n    logTime: 1793558715564\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Stop\n    thread: main\n    nodeLogs: \n    endTime: 1793558715564\neventLogRecord: \n    eventTime: 1793558715565\n    logTime: 1793558715565\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: TearDown\n    thread: main\n    nodeLogs: \n    endTime: 1793558715565\nPASS assertions=85 orders=15 updates=10\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/java",
      "-cp",
      "$OUTPUT/extended/classes:$RUNTIME",
      "IndependentBoundaries"
    ],
    "exitCode": 0,
    "output": "eventLogRecord: \n    eventTime: 1793558715628\n    logTime: 1793558715628\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Init\n    thread: main\n    nodeLogs: \n    endTime: 1793558715629\neventLogRecord: \n    eventTime: 1793558715629\n    logTime: 1793558715629\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Start\n    thread: main\n    nodeLogs: \n    endTime: 1793558715629\neventLogRecord: \n    eventTime: 1793558715629\n    logTime: 1793558715629\n    groupingId: null\n    event: Order\n    eventToString: initial:1x10500\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: initial, quantity: 1, unitPricePence: 10500}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 10500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 0, discountedPence: 10500}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10500}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: initial, count: 1, outcome: RELEASED}\n    endTime: 1793558715629\nPASS initial discounted=10500 shipping=0 total=10500 outcome=RELEASED publications=1\neventLogRecord: \n    eventTime: 1793558715630\n    logTime: 1793558715630\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=20,credit=20000\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 20, creditLimit: 20000}\n    endTime: 1793558715630\neventLogRecord: \n    eventTime: 1793558715630\n    logTime: 1793558715630\n    groupingId: null\n    event: Order\n    eventToString: discounted9999:1x12498\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: discounted9999, quantity: 1, unitPricePence: 12498}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 12498}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 20, discountedPence: 9999}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 500}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10499}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: discounted9999, count: 2, outcome: RELEASED}\n    endTime: 1793558715630\nPASS discounted9999 discounted=9999 shipping=500 total=10499 outcome=RELEASED publications=2\neventLogRecord: \n    eventTime: 1793558715630\n    logTime: 1793558715630\n    groupingId: null\n    event: Order\n    eventToString: discounted10000-multiple-quantity:2x6250\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: discounted10000-multiple-quantity, quantity: 2, unitPricePence: 6250}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 12500}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 20, discountedPence: 10000}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: discounted10000-multiple-quantity, count: 3, outcome: RELEASED}\n    endTime: 1793558715630\nPASS discounted10000-multiple-quantity discounted=10000 shipping=0 total=10000 outcome=RELEASED publications=3\neventLogRecord: \n    eventTime: 1793558715630\n    logTime: 1793558715630\n    groupingId: null\n    event: Order\n    eventToString: discounted10001:1x12501\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: discounted10001, quantity: 1, unitPricePence: 12501}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 12501}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 20, discountedPence: 10001}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10001}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 20000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: discounted10001, count: 4, outcome: RELEASED}\n    endTime: 1793558715630\nPASS discounted10001 discounted=10001 shipping=0 total=10001 outcome=RELEASED publications=4\neventLogRecord: \n    eventTime: 1793558715630\n    logTime: 1793558715630\n    groupingId: null\n    event: PolicyUpdate\n    eventToString: discount=50,credit=10000\n    thread: main\n    nodeLogs: \n        - policy: { thread: main, method: update, annotation: OnEventHandler, discountPercent: 50, creditLimit: 10000}\n    endTime: 1793558715630\neventLogRecord: \n    eventTime: 1793558715630\n    logTime: 1793558715630\n    groupingId: null\n    event: Order\n    eventToString: max-discount:2x10000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: max-discount, quantity: 2, unitPricePence: 10000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: true}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 20000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 50, discountedPence: 10000}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 10000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: RELEASED}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: max-discount, count: 5, outcome: RELEASED}\n    endTime: 1793558715630\nPASS max-discount discounted=10000 shipping=0 total=10000 outcome=RELEASED publications=5\neventLogRecord: \n    eventTime: 1793558715630\n    logTime: 1793558715630\n    groupingId: null\n    event: StockUpdate\n    eventToString: available=0\n    thread: main\n    nodeLogs: \n        - inventory: { thread: main, method: update, annotation: OnEventHandler, available: 0}\n    endTime: 1793558715630\neventLogRecord: \n    eventTime: 1793558715630\n    logTime: 1793558715630\n    groupingId: null\n    event: Order\n    eventToString: updated-stock:2x10000\n    thread: main\n    nodeLogs: \n        - input: { thread: main, method: order, annotation: OnEventHandler, orderId: updated-stock, quantity: 2, unitPricePence: 10000}\n        - stockCheck: { thread: main, method: check, annotation: OnTrigger, stockAvailable: false}\n        - subtotal: { thread: main, method: calculate, annotation: OnTrigger, subtotalPence: 20000}\n        - discount: { thread: main, method: calculate, annotation: OnTrigger, discountPercent: 50, discountedPence: 10000}\n        - handlingCharge: { thread: main, method: calculate, annotation: OnTrigger, handlingPence: 0}\n        - shipping: { thread: main, method: calculate, annotation: OnTrigger, shippingPence: 0}\n        - total: { thread: main, method: calculate, annotation: OnTrigger, totalPence: 10000}\n        - creditCheck: { thread: main, method: check, annotation: OnTrigger, creditLimitPence: 10000, creditApproved: true}\n        - releaseDecision: { thread: main, method: decide, annotation: OnTrigger, result: REJECTED_STOCK}\n        - recorder: { thread: main, method: record, annotation: OnTrigger, orderId: updated-stock, count: 6, outcome: REJECTED_STOCK}\n    endTime: 1793558715630\nPASS updated-stock discounted=10000 shipping=0 total=10000 outcome=REJECTED_STOCK publications=6\neventLogRecord: \n    eventTime: 1793558715630\n    logTime: 1793558715630\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: Stop\n    thread: main\n    nodeLogs: \n    endTime: 1793558715630\neventLogRecord: \n    eventTime: 1793558715630\n    logTime: 1793558715630\n    groupingId: null\n    event: LifecycleEvent\n    eventToString: TearDown\n    thread: main\n    nodeLogs: \n    endTime: 1793558715631\nPASS independent assertions=45 orders=6 updates=3\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/java",
      "-cp",
      "$OUTPUT/extended/classes:$RUNTIME",
      "demo.fulfilment.CaptureIncident",
      "$OUTPUT/extended/capture"
    ],
    "exitCode": 0,
    "output": "CAPTURED five orders and four configuration updates; five publications. Business correctness intentionally not asserted by capture harness.\n"
  },
  {
    "command": [
      "/Users/greg/Library/Java/JavaVirtualMachines/corretto-21.0.9/Contents/Home/bin/java",
      "-cp",
      "$OUTPUT/extended/classes:$RUNTIME",
      "ExtensionCheck",
      "$OUTPUT/extension-capture"
    ],
    "exitCode": 0,
    "output": "PASS default total=10500 publications=1\nPASS corrected total=9950 publications=2\nPASS fee-crosses total=10001 publications=3\nPASS exact-credit total=10001 publications=4\nPASS threshold-independent total=11000 publications=5\nPASS stock-priority total=11000 publications=6\nPASS reset total=10000 publications=7\nPASS negative fee refused\nEXPECTED overflow: java.lang.ArithmeticException: long overflow\nPASS post-overflow total=10000 publications=8\nRECOVERY_SUPPORTED=true observedPublications=8 assertions=80\n"
  }
]