General-Retail Pack
In build. The lightest pack there is: a quick-sale screen and on-hand stock by warehouse and product, with no batch, fitment, or weighed-goods overhead. For a shop that wants a till and a stock figure, and nothing more.
- Quick-sale screen
- On-hand stock without batches
- The same ledger and audit trail
- Move up to a bigger pack later
Not every shop needs batches, fitment, or scales. This pack is deliberately the smallest surface we ship: a till, and a number that tells you what is left.
What it will switch on
- A quick-sale screen with no batch or fitment overhead
- On-hand stock by warehouse and product
It is in build. The quick-sale flow is not activatable until it posts the invoice, the stock movement, the ledger entry, and the cash line together — a till that only prints a receipt is not a till we are willing to ship.
The ledger, the audit trail, and the permission matrix underneath are the same ones every other pack uses. Moving up to a bigger pack later is a setting, not a migration.
How General-Retail Pack fits the rest of the system
Bounded
The module owns its tables and its service interface. Other modules reach in only through services and async events — never SQL.
Test-vector verified
Every domain rule has two implementations — Dart and Java — and a single shared test vector. CI fails on any divergence.
Audit-logged
Every command writes an entry to the append-only audit log with a chain hash. The daily verifier proves the log has not been tampered with.