v2.9.0
v2.9.0 — Physical ledger view, assemble cascade (off), packaging stock
Minor release. Two additive migrations (new empty tables). ## Operator-facing - **Movement views show physical rows by default.** Reservations and pipeline rows sit behind a "Show reservations" tog…
Minor release. Two additive migrations (new empty tables).
Operator-facing
- Movement views show physical rows by default. Reservations and pipeline rows sit behind a “Show reservations” toggle with Inventory Status chips (PICK FACE, BULK, RESERVATION, PIPELINE). Damaged and quarantine movements are always visible and always chipped — a damaged −5 can never look like a sellable −5. TYPE and QTY columns are grid-aligned; the E2E asserts column geometry.
- Packaging materials are stock (PKG-INV-01): box/mailer catalog, receive and adjust with reasons, consume-on-pack with an idempotent ledger witness, low-stock watchlist integration, and dims/tare autofill on the label step.
Platform (inert until canary)
- FULFILL-STRATEGY-01: the listing assemble cascade — a mapping declares once
“direct SKU, else the kit that builds it” and the engine executes per order with a
named witness. Publish and allocate share one ATP composition (no double promising).
fulfillmentCascadeEnableddefaults OFF for every tenant; a canary pre-flight is required before enabling anyone.
Rollback
Re-deploy v2.8.1. Tables are additive and harmless to old code.