You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While verifying PR #980 assumptions against the live test tenant (2026-07-14), several documented POST /serial_numbers behaviors turned out to be stale. Our spec (CreateSerialNumberResourceType, CreateSerialNumberFailureReason, the endpoint description) and the MCP add_serial_numbers tool describe a graceful 200 + successful/failed arrays model where a non-existent serial string lands in failed with reason: MISSING. The live wire did not behave that way.
Observed (live test tenant, 2026-07-14)
POST /serial_numbersresource_type=SalesOrderRow, unknown serial string → 422 "serial numbers not found: …" (not 200+failed:MISSING).
Duplicate string, and mixed new+duplicate → 422 UnknownSerialNumber for every string.
Minting a new string to a freshly-created NOT_STARTEDManufacturingOrder also returned 422 UnknownSerialNumber (nothing attached) — so the "mint types don't need the string to pre-exist" claim is suspect, or minting is MO-state-dependent (serials only mintable once production has run).
Does the 200 + successful/failed partial-outcome shape (CreateSerialNumbersResponse) still occur for any input, or has the endpoint moved to hard 422 on any invalid string?
The real mint-vs-transfer boundary and whether minting requires the MO/PO to be in a specific state (e.g. a completed production).
Whether CreateSerialNumberFailureReason (DUPLICATE/MISSING) is still reachable, or dead.
Scope note
PR #980 corrected only the claims it directly touched (Production is a valid transfer type; 404 for missing ids; removed the now-false "others return 200+failed" contrast). This issue tracks the fuller re-characterization of the create semantics + response shape, which is out of scope for #980.
Context
While verifying PR #980 assumptions against the live test tenant (2026-07-14), several documented
POST /serial_numbersbehaviors turned out to be stale. Our spec (CreateSerialNumberResourceType,CreateSerialNumberFailureReason, the endpoint description) and the MCPadd_serial_numberstool describe a graceful200+successful/failedarrays model where a non-existent serial string lands infailedwithreason: MISSING. The live wire did not behave that way.Observed (live test tenant, 2026-07-14)
POST /serial_numbersresource_type=SalesOrderRow, unknown serial string →422"serial numbers not found: …" (not200+failed:MISSING).resource_type=Production, unknown string →422 UnknownSerialNumber.422 UnknownSerialNumberfor every string.NOT_STARTEDManufacturingOrderalso returned422 UnknownSerialNumber(nothing attached) — so the "mint types don't need the string to pre-exist" claim is suspect, or minting is MO-state-dependent (serials only mintable once production has run).resource_id→404 NotFoundError(already corrected in feat: attach serial numbers via unified traceability input #980).What needs re-verification
200+successful/failedpartial-outcome shape (CreateSerialNumbersResponse) still occur for any input, or has the endpoint moved to hard422on any invalid string?CreateSerialNumberFailureReason(DUPLICATE/MISSING) is still reachable, or dead.Scope note
PR #980 corrected only the claims it directly touched (Production is a valid transfer type; 404 for missing ids; removed the now-false "others return 200+failed" contrast). This issue tracks the fuller re-characterization of the create semantics + response shape, which is out of scope for #980.