01must proveProposed | Staff can enter receipts, adjustments, quarantine movements, damage, scrap and write-offs, while shipment, restock, transfer and count movements are reserved for their owning processes. no proof recorded yet | validation | api | test |
02must proveProposed | Receipt, restock, transfer-in and quarantine-in quantities are positive; shipment, transfer-out, scrap, write-off and quarantine-out quantities are negative; adjustments, counts and damage permit either sign. no proof recorded yet | validation | database | test |
03must proveProposed | Ledger operations alone change balances, the application role cannot write them directly, and database checks reject impossible movements and negative available stock. no proof recorded yet | invariant | database | test |
04must proveProposed | Movement records are immutable after insertion. no proof recorded yet | invariant | database | test |
05must proveProposed | Repeated movement keys return the original only when type, quantity, item and location agree, otherwise rejecting reuse with the first movement identified. origin: DEF-COM-0452 (acceptance defect) no proof recorded yet | invariant | service, database | test |
06must proveProposed | Receipt can create an absent location item, while other movement types reject a SKU not held there. no proof recorded yet | validation | service | test |
07must proveProposed | Stock arriving at a sellable location commits waiting backorders in oldest-order order within the receipt transaction. no proof recorded yet | calculation | service, database | test |
08must proveProposed | Transfer atomically records linked out and in movements between locations, creates a destination item if necessary and moves cost layers without an Accounting posting. origin: Decision M, Andrew 2026-10-18 ("build the transfer now"): services-commerce:docs/migrations/inventory/README.md#D-P8I-14 no proof recorded yet | calculation | service, database | test |
09must proveProposed | Transfer rejects insufficient available stock, identical locations, quantities below one, missing reasons, unknown or inactive destinations and absent source SKUs; held, allocated, quarantined and damaged units cannot transfer, and conflicting key reuse is rejected. origin: Decision M, Andrew 2026-10-18 ("build the transfer now"): services-commerce:docs/migrations/inventory/README.md#D-P8I-14 no proof recorded yet | validation | api, service | observed |
10must proveProposed | Transfer into a sellable location fills waiting backorders, whose committed units cannot subsequently transfer. origin: Decision M, Andrew 2026-10-18 ("build the transfer now"): services-commerce:docs/migrations/inventory/README.md#D-P8I-14 no proof recorded yet | calculation | service | test |
11must proveProposed | Item settings can be edited independently, but balances remain controlled by movement and allocation ledgers. no proof recorded yet | invariant | api, database | test |
12must proveProposed | Movement and transfer creation require administrator inventory-create authority, while readers can inspect movements, transfers and items. no proof recorded yet | permission | api | observed |