SYNTHETIC. No customer data. Neutral names already in the fixture (board, case, cable, sensor-kit, board-pair).
What this page is
A free, inspectable teaching example attached to KitClear Offline. The numbers below are the accepted engine’s output on inputs/example.json. Download example.zip for the source, both output packets, a README, and a per-member SHA-256 list. A short reusable lesson is in lesson.md.
A static sample cannot process buyer input. There is no upload, no form, and no input tracking. To run your own snapshot you buy the $49 offline edition and run it on your machine.
Supported inputs
UTF-8 JSON object with exactly these documented fields: stock, boms, orders, partial_fulfillment (boolean, required), optional reservations, optional synthetic. Other fields are refused. Duplicate JSON members, non-integers, and trailing junk are refused.
- stockMap of 1–2,000 component IDs to on-hand integers 0–1,000,000.
- reservationsMap of known components to locked integers 0–1,000,000. Locked quantity cannot exceed on-hand. Missing reservation is 0. Reserved stock is unavailable to these orders.
- bomsMap of 1–200 product IDs to one-level bills. Each bill has 1–100 components; units 1–10,000 integers. Product and component IDs must be disjoint. Nested bills are unsupported. Every BOM component needs an explicit stock quantity (zero is allowed).
- ordersArray of 1–100 rows. Each row has exactly
id, sku, quantity (1–100,000), priority (1–10,000). IDs unique; SKU must have a bill. IDs are case-sensitive printable strings of 1–64 characters.
- partial_fulfillmenttrue fills the greatest whole-number quantity stock allows. false fills an order completely or leaves it at 0 and moves on.
Three CSVs are also accepted by the product, with exact column names (order may change): stock.csv component, on_hand, reserved; boms.csv sku, component, units; orders.csv order_id, sku, quantity, priority. This page’s zip uses the JSON form. Each file and the normalized object must stay within 1 MiB.
The synthetic snapshot
Available stock is on-hand minus reserved: board 10, case 7, cable 20. Orders are processed high priority first: ORDER-A, then ORDER-B, then ORDER-C.
Stock and reservations
Bills of materials
Orders
Why two reserved boards cannot be used
Twelve boards are on hand. Two are reserved. The engine subtracts reservations before it looks at any order, so available boards start at ten. Those two reserved boards stay locked for this run. They are not assigned to ORDER-A, ORDER-B, or ORDER-C, in either mode.
Both modes, side by side
Partial mode filled [6, 2, 0] for ORDER-A, ORDER-B, ORDER-C. Whole-order mode filled [6, 0, 0].
Partial units (true)
Fill as many whole units as leftover stock allows, then continue.
After ORDER-A (6 sensor kits) leftover is board 4, case 1, cable 8. ORDER-B can make 2 of 3 board-pairs. ORDER-C needs a board and a case; boards are gone, so it fills 0.
Whole orders (false)
Fill the order completely or skip it and keep the parts.
ORDER-A still fills 6. ORDER-B wants 3 board-pairs and only 2 are possible, so it fills 0. The skip leaves board 4, case 1, cable 8 — room for one more sensor kit. ORDER-C asked for 2, so it is also skipped and that room sits unused. A later smaller order could have taken it. This fixture has no such order.
Material picks and shortages
Picked = (on-hand − reserved) − remaining available. Additional-for-unfulfilled is max(0, parts still needed for unfilled units − remaining available). That additional figure is a mathematical shortage for review, not a purchase order and not a savings claim.
Partial materials
Picks: board 10 = 6 (ORDER-A) + 4 (two board-pairs). Case 6 and cable 14 follow the same filled units. Extra boards 4 and extra case 1 cover the unfilled board-pair and both of ORDER-C.
Whole-order materials
Picks: board 6, case 6, cable 12 — ORDER-A only. Remaining board 4 / case 1 / cable 8 is the unused room described above. Extra boards 4 and extra case 1 are the same shortage arithmetic on a larger unfilled remainder.
The four files each mode writes
The engine writes allocation.json, orders.csv, materials.csv, and README.txt. It does not write a separate HTML report; the tables on this page and the linked static renderings are those four files, shown for inspection.
Partial packet
Input SHA-256: a50043ca31586576d1055a94e18a972cbb66bf3fcc6f451ff54aa095a54b9348
Whole-order packet
Input SHA-256: 17270b54df3f93022d5808779b8bf779806b1a61abf110ec06e98b6317bb91ca
Limits
- Greedy policyDescending integer priority, then input-order ties. Not a global optimum.
- One-level integer billsNo nested bills, no fractional units, no substitutions.
- One stock locationNo multi-warehouse, dates, forecasts, or purchasing.
- Review, not assemblyNo physical assembly or safety guidance. Shortages are not purchase orders.
Practitioner lesson
Decide which of today’s orders current stock can fill before anyone starts packing. Subtract reserved parts first. Walk highest priority first. Choose whether a partial kit is allowed. If it is not, skipping a large order can leave parts for a later smaller one — only if that later order is small enough. Full text: lesson.md.
Download the synthetic zip
The zip holds the source JSON, both four-file packets, a README that restates synthetic status and limits, and MANIFEST.sha256. It is not the paid product.
Download example.zip