Handover and on-time shipping
Shipped status and on-time reporting from evidenced carrier handover of every required unit, never from labels, manifests or delivery dates.
Request with "decision": "handover" and one of these operations: mark_shipped, report_on_time.
Clauses applied
handover.fulfilled: FulfilledAt is the latest evidenced tender needed for all non-cancelled units, including split shipments; calendar ShipDate and manifest transmission cannot satisfy the cutoff.handover.transmitted: Transmitted means acknowledged submission, not pickup.handover.shipped: Orders become Shipped only when every non-cancelled unit is tendered; FulfilledAt captures the final required tender.handover.manifest: Manifest close freezes a batch; actual tender alone authorises the warehouse issue, and delivery confirmation does not issue again.
Evidence questions
handover_by_cutoff@1
This is the evidence recorded for one outbound shipment. Does it show the carrier taking physical possession of the shipment, and was that by the cutoff given?
| Answer | Meaning |
|---|---|
before_cutoff | The carrier took the shipment at or before the cutoff. |
after_cutoff | The carrier took the shipment after the cutoff. |
time_unknown | The carrier took the shipment, but the evidence does not show whether it was by the cutoff. |
no_handover | It does not show the carrier taking the shipment: only a label print, a manifest, a booking or a scheduled pickup, or the shipment still at the dock. |
Examples
A split order whose last carton left after the cutoff
{
"decision": "handover",
"proposal": {
"operation": "report_on_time",
"on_time": true
},
"order": {
"id": "SO-77105",
"cutoff_at": "2026-10-02T17:00:00-04:00",
"units": "6",
"timezone": "America/New_York"
},
"shipments": [
{
"id": "SH-1",
"units": "4",
"pickup_scan_at": "2026-10-02T16:55:00-04:00"
},
{
"id": "SH-2",
"units": "2",
"manifest_closed_at": "2026-10-02T16:30:00-04:00",
"evidence": "Driver scan export, route 412: SH-2 PU 17:05 EDT, signed K. Morales"
}
]
}Response from the rules with no model loaded, so every question abstains.
{
"verdict": "review",
"next": {
"action": "confirm_handover",
"text": "The tender evidence for SH-2 does not settle whether or when the carrier took it.",
"role": "Shipping Clerk"
},
"questions": [
{
"ask": "shipments/1",
"question": "handover_by_cutoff@1",
"status": "model_unavailable",
"evidence": [
"/shipments/1/evidence"
]
}
]
}
Request schema
{
"type": "object",
"required": [
"decision",
"proposal",
"order"
],
"additionalProperties": false,
"properties": {
"decision": {
"const": "handover"
},
"proposal": {
"type": "object",
"required": [
"operation"
],
"additionalProperties": false,
"properties": {
"operation": {
"type": "string",
"enum": [
"mark_shipped",
"report_on_time"
]
},
"on_time": {
"type": "boolean"
},
"as_of": {
"type": "string",
"format": "date-time"
}
}
},
"order": {
"type": "object",
"required": [
"id",
"cutoff_at",
"units"
],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"cutoff_at": {
"type": "string",
"format": "date-time"
},
"units": {
"type": "string",
"format": "decimal"
},
"timezone": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
},
"shipments": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"units"
],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"units": {
"type": "string",
"format": "decimal"
},
"pickup_scan_at": {
"type": "string",
"format": "date-time"
},
"evidence": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"label_printed_at": {
"type": "string",
"format": "date-time"
},
"manifest_closed_at": {
"type": "string",
"format": "date-time"
},
"manifest_transmitted_at": {
"type": "string",
"format": "date-time"
}
}
},
"maxItems": 200
}
}
}