Skip to main content

Releases

Any unfamiliar word is in the glossary.

Three ways work can enter the plant, and they answer different questions.

use it when
releaseswork arrives on its own — an order book, customer demand
scheduleyou know exactly what starts and when, to the lot
conwipthe plant holds a fixed population: one out, one in

Release streams​

product: bracket
interarrival_seconds: { kind: exponential, mean: 900.0 }
keytyperequiredwhat it means
productstringyesWhich product this stream releases.
interarrival_secondsdistyesThe gap between releases. ⚠️ Must be able to exceed zero: a gap that is always zero releases without bound at one instant, and validate refuses it.
prioritynumberno, default 10.0Priority stamped on every entity from this stream, read by the priority dispatch feature.
quantityintegerno, default 1Entities per release.
due_after_secondsnumbernoSeconds from release to the due date. Absent means no due date.
rate_profilestringnoA profile id whose factor multiplies this stream's arrival rate. ⚠️ A factor of 0 on a rate deletes demand rather than deferring it — the arrivals that would have happened are gone, not queued for Monday.
An interarrival time must be able to exceed zero

A gap that is always zero releases an unbounded number of entities at one instant. The engine used to run until the entity slot field overflowed and died with a message naming a bit-field; validate now refuses it. Zero is still legal as a process time.

A named schedule​

Lots at explicit times, in addition to any streams.

keytyperequiredwhat it means
productstringyesWhich product this lot is.
at_secondsnumberyesWhen it is released, in seconds from the start of the run including warm-up.
prioritynumbernoPriority for this one lot, overriding the stream default.
due_secondsnumbernoAbsolute, not an offset — an enumerated schedule states the date.
piecesintegernoSize of this lot, if it differs from the product's usual pieces.
at_stepintegerno⭐ Where on the route it starts. This is what makes initial work-in-progress the same mechanism rather than a second one: SMT2020's WIP.txt is an order file like any other, and its only distinguishing column is a step number.
Document order breaks ties

Two lots at the same instant are released in the order they appear in the document. That is the only thing that makes such a run reproducible, so the order is load-bearing.

A closed population​

conwip replaces arrivals with a fixed number of entities circulating: one completes, one is released. Mutually exclusive with releases and schedule.

It takes either one class:

conwip: { population: 12, product: bracket }

⭐ …or several, as an array — a mixed closed network, each product holding its own share of a fixed total:

conwip:
- { population: 8, product: bracket }
- { population: 4, product: housing }

⚠️ The two spellings are not interchangeable in meaning. One class of 12 is a plant running a single product; two classes of 8 and 4 is a plant whose mix is fixed by policy — completing a bracket releases a bracket, never a housing. That is the whole point of a multi-class CONWIP and it is what makes the product mix a decision rather than an outcome.

keytyperequiredwhat it means
populationintegeryesHow many entities of this class circulate. ⚠️ Constant for the whole run, by definition — a population that varies is not a closed network and has no product form.
productstringyesWhich product this share of the circulating population is.