For builders: what the loops read and write
The data contract behind the simulation, stated generically, and how the engine on the main page implements each piece. Method: The Data Layer Beneath Continuous Planning and the process card Continuous Planning Cycle (generic process).
A loop is a measurement that changes a decision. Five loops at five horizons, coupled, need the same measure of the same world at every horizon: one shape for people, time, work and intervals that every platform maps into, one definition per measure with its formula, grain, owner and version, and a version on every forecast and plan. The table is what each loop asks of such a layer. Two objects in it are usually missing and both are small: the supply-line stock (pool, week, decisions committed, requisitions open, offers accepted, in training by graduation week, graduates ramping, attrition expected before landing, productive-equivalent) and the assumption ledger (assumption, planned value and date, current estimate and vintage, band, owner, persistence, dependents).
The contract
| Loop | Reads | Grain and refresh | Writes | Gate |
|---|---|---|---|---|
| Interval correction | contacts offered and handled, handle time, occupancy, adherence, service level, queue age, backlog | 15 minutes, near real time | interval actions | already closed in most operations |
| Short-term reforecast | the above plus workload hours, the requirement, scheduled hours, overtime and time-off hours, planned and unplanned shrinkage | 15 minutes for the forecast, person-day for hours; daily | hours-band changes, overtime and time-off offers | schedule write-back after a published catch rate |
| Pipeline-aware capacity | the requirement over the planning window, headcount, attrition, ramp, paid and available hours, shrinkage, the supply-line stock, the envelope | pool by week; monthly decision | the plan of record; requisitions and class starts | proposed by the layer, signed by a person |
| Structural elasticity | the swing in the requirement by pool, workload by channel, contract corridors, the idle and overtime shares | pool by quarter | the sized band per pool; the lever chosen | human decision |
| Finance envelope | paid hours and cost, headcount, the reconciled forecast, the envelope | pool by month | the envelope and authority bands | the finance loop owns it |
| Vintage learning | every forecast vintage and the actuals it is scored against | horizon by vintage | accuracy by horizon; retuned parameters | none |
| Assumption ledger | the register's measures as current estimates; the planned values | assumption by week | breach events with owner and persistence; the recompiled plan | the owner answers the breach |
| Variance routing | workload hours and their components, the requirement, scheduled and paid hours, headcount, the supply-line stock | pool by week | the routed components; the variance-by-lever report | none; it is the diagnosis |
How the engine implements it
| Piece | In the simulation |
|---|---|
| Demand | weekly contacts = level × seasonal index × (1 + step) × (1 + drift) × (1 + spike) × (1 + noise); one seed, generated before any policy runs |
| Capacity waterfall | need = contacts × (1 + repeat rate) × aspiration handle time + backlog; capacity = (full + 0.6 × ramping) × productive hours; the gap is met in order by a free real-time absorb, the annualised-hours band, the overtime band, deferral, handle-time compression, and finally unmet contacts; surplus by the band down, unpaid time off, then paid idle time |
| Hiring rule | hires = expected losses + (plan of record − agents) ÷ adjustment time − w × (supply line − desired supply line) ÷ supply-line adjustment time, capped by the envelope; w is 0 for the cascade and 1 for the closed loop |
| Plan of record | the cascade sets it monthly to the forecast at the horizon; the closed loop moves it only by the smallest same-sign excursion over the persistence window, and plans a horizon longer by the frozen zone and the window |
| Forecast | the cascade re-forecasts every four weeks as a blend of recent actuals and the annual plan (the anchoring knob); the closed loop uses Holt smoothing on actuals every week with a damped trend |
| Envelope | the cascade's is fixed for the plan year at the planned peak plus the replacement pipeline; the closed loop's is reset monthly from the highest forecast requirement over thirteen weeks |
| Attrition and quality | attrition rises with sustained overtime above a threshold; under the cascade the quality aspiration follows observed handle time with a 26-week adjustment time, both ways; the closed loop holds it |
| Cost | base pay for everyone on the books, overtime at a premium, unpaid time off as a saving, band hours beyond the bank at a premium, hiring and cancellation and release events, unmet contacts, repeat contacts above base, backlog carried, and a charge on every change to the plan of record, paid by both policies |
What is deliberately missing. No noise-scaled safety buffer in either policy; no channel mix; no site or skill dimension; no partner contract with notice periods beyond the shared band; no finance calendar. Each is a dimension a real layer carries and the model omits to keep the comparison legible. The source is in the repository's src/engine, under three hundred lines of TypeScript, with tests that check conservation of hours and people, the fairness invariants, and that the result is not baked in.