Wave membership

One active planning claim per order revision, including the same order received twice under two numbers.

Request with "decision": "wave" and one of these operations: claim.

Clauses applied

  • reserve.upstream: Upstream changes do not overwrite claimed scope.
  • wave.one: Each order revision has at most one active planning/released membership.
  • wave.reuse: The planner first atomically claims each order revision into one active WaveOrders membership and Orders.ActiveWave; repeated schedule runs reuse it.

Evidence questions

same_order@1

These two orders are both open in the warehouse. Are they the same customer order received twice?

AnswerMeaning
trueOne is a resend, re-import or copy of the other: the same purchase received twice.
falseThey are separate purchases, even with identical lines, such as a replacement shipment, a reorder or a customer's deliberate split.

Examples

The same PO received twice

{
  "decision": "wave",
  "proposal": {
    "operation": "claim",
    "wave": "WV-0418"
  },
  "order": {
    "id": "SO-88231",
    "revision": 0,
    "source_record_id": "edi-850-552190",
    "customer": "Brightline Home",
    "customer_po": "PO-4471",
    "ship_to": "Brightline Home DC 3, 1200 Commerce Pkwy, Joliet IL",
    "received_at": "2026-10-02T09:14:00-05:00",
    "lines": [
      {
        "sku": "LMP-ARC-BRS",
        "qty": "24"
      }
    ],
    "notes": "Resent by EDI provider after 997 timeout"
  },
  "open_orders": [
    {
      "id": "SO-88207",
      "source_record_id": "edi-850-552188",
      "customer": "Brightline Home",
      "customer_po": "4471",
      "ship_to": "Brightline Home DC 3, 1200 Commerce Parkway, Joliet, IL",
      "received_at": "2026-10-02T08:51:00-05:00",
      "lines": [
        {
          "sku": "LMP-ARC-BRS",
          "qty": "24"
        }
      ],
      "active_wave": "WV-0417"
    }
  ]
}

Response from the rules with no model loaded, so every question abstains.

{
  "verdict": "review",
  "next": {
    "action": "confirm_not_duplicate",
    "text": "Order SO-88231 may be a second copy of SO-88207, which is already in an active wave, and the comparison is not certain.",
    "role": "Warehouse Manager"
  },
  "questions": [
    {
      "ask": "open_orders/0",
      "question": "same_order@1",
      "status": "model_unavailable",
      "evidence": [
        "/order",
        "/open_orders/0"
      ]
    }
  ]
}

Download the request

Request schema

{
  "type": "object",
  "required": [
    "decision",
    "proposal",
    "order"
  ],
  "additionalProperties": false,
  "properties": {
    "decision": {
      "const": "wave"
    },
    "proposal": {
      "type": "object",
      "required": [
        "operation",
        "wave"
      ],
      "additionalProperties": false,
      "properties": {
        "operation": {
          "type": "string",
          "enum": [
            "claim"
          ]
        },
        "wave": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      }
    },
    "order": {
      "type": "object",
      "required": [
        "id",
        "revision"
      ],
      "additionalProperties": false,
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "revision": {
          "type": "integer",
          "minimum": 0
        },
        "source_record_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "customer": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "customer_po": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "ship_to": {
          "type": "string",
          "minLength": 1,
          "maxLength": 4000
        },
        "received_at": {
          "type": "string",
          "format": "date-time"
        },
        "lines": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "sku",
              "qty"
            ],
            "additionalProperties": false,
            "properties": {
              "sku": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "qty": {
                "type": "string",
                "format": "decimal"
              },
              "description": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4000
              }
            }
          },
          "maxItems": 200
        },
        "notes": {
          "type": "string",
          "minLength": 1,
          "maxLength": 4000
        }
      }
    },
    "memberships": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "order",
          "revision",
          "wave",
          "status"
        ],
        "additionalProperties": false,
        "properties": {
          "order": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "revision": {
            "type": "integer",
            "minimum": 0
          },
          "wave": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "status": {
            "type": "string",
            "enum": [
              "Planning",
              "Released",
              "Closed",
              "Cancelled"
            ]
          }
        }
      },
      "maxItems": 500
    },
    "open_orders": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "active_wave"
        ],
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "revision": {
            "type": "integer",
            "minimum": 0
          },
          "source_record_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "customer": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "customer_po": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "ship_to": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4000
          },
          "received_at": {
            "type": "string",
            "format": "date-time"
          },
          "lines": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "sku",
                "qty"
              ],
              "additionalProperties": false,
              "properties": {
                "sku": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "qty": {
                  "type": "string",
                  "format": "decimal"
                },
                "description": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 4000
                }
              }
            },
            "maxItems": 200
          },
          "notes": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4000
          },
          "active_wave": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        }
      },
      "maxItems": 200
    }
  }
}