Packing and tender readiness
Complete contents and a measured weight before verification, and verification before labels and tender.
Request with "decision": "pack" and one of these operations: verify, tender, label.
Clauses applied
pack.label: The configured CarrierRequests operation is stable for that verified revision.pack.verify: Complete PackVerify or PalletVerify records Picked −q / Packed +q on the verified output with no quantity movement; an incomplete carton remains Picked and cannot be tendered.pack.weight: Allowed absolute weight deviation is max(policy pounds, planned positive gross weight × policy percent / 100); missing scale/weight/geometry never yields a pass.pack.external: Document an independently checked external-scale measurement when the station scale is unavailable.handover.manifest: Manifest close freezes a batch; actual tender alone authorises the warehouse issue, and delivery confirmation does not issue again.
Evidence questions
weight_measured@1
This note explains the actual weight recorded for one packed carton. Does it show the weight was measured on a scale for this carton?
| Answer | Meaning |
|---|---|
true | The weight was read from a scale for this carton: the station scale, or another scale whose reading a second person checked. |
false | The weight was planned, estimated, copied from another carton, or typed in without a scale reading. |
Examples
Tendering a shipment with a partly packed carton
{
"decision": "pack",
"proposal": {
"operation": "tender",
"shipment": "SH-30512"
},
"cartons": [
{
"id": "CTN-30512-1",
"stage": "Verified",
"planned": [
{
"line": "OL-1",
"qty": "6"
}
],
"packed": [
{
"line": "OL-1",
"qty": "6"
}
]
},
{
"id": "CTN-30512-2",
"stage": "Unverified",
"planned": [
{
"line": "OL-2",
"qty": "6"
}
],
"packed": [
{
"line": "OL-2",
"qty": "2"
}
]
}
]
}Response from the rules with no model loaded, so every question abstains.
{
"verdict": "reject",
"next": {
"action": "verify_first",
"text": "1 carton(s) are not verified (CTN-30512-2 first). Only verified cartons can be tendered."
},
"questions": []
}Verifying a carton with an estimated weight
{
"decision": "pack",
"proposal": {
"operation": "verify",
"carton": "CTN-40917"
},
"policy": {
"weight_tolerance_lb": "0.5",
"weight_tolerance_pct": "3"
},
"cartons": [
{
"id": "CTN-40917",
"stage": "Unverified",
"planned": [
{
"line": "OL-1",
"qty": "3"
}
],
"packed": [
{
"line": "OL-1",
"qty": "3"
}
],
"planned_weight_lb": "8.2",
"actual_weight_lb": "8.2",
"weight_note": "Station 4 scale down since 2pm, used the planned weight so the carton could go."
}
]
}Response from the rules with no model loaded, so every question abstains.
{
"verdict": "review",
"next": {
"action": "confirm_weight",
"text": "It is not certain the weight recorded for carton CTN-40917 was measured. Hold the carton until a measured weight is confirmed.",
"role": "Warehouse Manager"
},
"questions": [
{
"ask": "cartons/0",
"question": "weight_measured@1",
"status": "model_unavailable",
"evidence": [
"/cartons/0/weight_note"
]
}
]
}
Request schema
{
"type": "object",
"required": [
"decision",
"proposal",
"cartons"
],
"additionalProperties": false,
"properties": {
"decision": {
"const": "pack"
},
"proposal": {
"type": "object",
"required": [
"operation"
],
"additionalProperties": false,
"properties": {
"operation": {
"type": "string",
"enum": [
"verify",
"tender",
"label"
]
},
"carton": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"shipment": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
},
"cartons": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"stage",
"planned",
"packed"
],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"stage": {
"type": "string",
"enum": [
"Open",
"Unverified",
"Verified",
"Hold"
]
},
"planned": {
"type": "array",
"items": {
"type": "object",
"required": [
"line",
"qty"
],
"additionalProperties": false,
"properties": {
"line": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"qty": {
"type": "string",
"format": "decimal"
}
}
},
"maxItems": 500
},
"packed": {
"type": "array",
"items": {
"type": "object",
"required": [
"line",
"qty"
],
"additionalProperties": false,
"properties": {
"line": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"qty": {
"type": "string",
"format": "decimal"
}
}
},
"maxItems": 500
},
"planned_weight_lb": {
"type": "string",
"format": "decimal"
},
"actual_weight_lb": {
"type": "string",
"format": "decimal"
},
"weight_note": {
"type": "string",
"minLength": 1,
"maxLength": 4000
}
}
},
"minItems": 1,
"maxItems": 500
},
"policy": {
"type": "object",
"required": [
"weight_tolerance_lb",
"weight_tolerance_pct"
],
"additionalProperties": false,
"properties": {
"weight_tolerance_lb": {
"type": "string",
"format": "decimal"
},
"weight_tolerance_pct": {
"type": "string",
"format": "decimal"
}
}
}
}
}