stopParamsObject
The stopParams object defines properties for stop types — fundamental to Spiral’s operation. Stop
types can be modified during execution via update, enabling accurate modelling of stop states.
Attribute names and types are links; sub-object fields and the Helix extension block are documented
below.
-
keystring - Unique identifier for stop-type reference.
-
clonestopParamsKey - Inherit values from another stop type.
-
minTravelTimetimeIntervaldefault0 s - Minimum travel time allocated to the stop.
-
roundTimestimeIntervaldefault5 min - Rounding interval for proposed arrival / departure times.
-
compulsorybooldefaultfalse - Whether a resource can refuse during voluntary periods.
-
positionANY | ONTIMEONLY | FIRST | LASTdefaultANY - Placement restriction: ANY (no restriction), ONTIMEONLY (arrival ≤ latest), FIRST (first stop of the working period), LAST (last stop before period end).
-
defaultDurationtimeIntervaldefault10 min - Default stop time when not supplied.
-
defaultContingencytimeIntervaldefault0 s - Default contingency buffer.
-
deployModeALWAYS | NEVER | LATE | AUTO_HEAD | AUTO_ARVdefaultALWAYS - Deployment messaging to the host: ALWAYS (standard), NEVER (host manages), LATE (only to prevent lateness), AUTO_HEAD / AUTO_ARV (transition straight to that state).
-
earlyDeploytimeIntervaldefault20 min - Early-deployment window for idle resources.
-
reliablebooldefaultfalse - Whether the finish time is considered reliable.
-
nonProductivebooldefaultfalse - Non-working-time activity.
-
exclusivebooldefaultfalse - Requires no concurrent activities.
-
areaExemptbooldefaultfalse - Exempt from working-area restrictions.
-
isBreakbooldefaultfalse - Contributes to break-time allocation.
-
payUnitsrealdefault1.0 - Pay units for pay-per-job compensation.
-
failureFactorrealdefault0.0 - Risk factor (0.0–1.0) for completion failure.
-
useStbyuseCondition - Accessibility condition under which the standby solution tier may be used.
-
useVoluntaryuseCondition - Accessibility condition under which the voluntary solution tier may be used.
-
useExtendeduseCondition - Accessibility condition under which the extended solution tier may be used.
-
useSurgeuseCondition - Accessibility condition under which surge de-prioritisation applies (e.g. NOSOLN, LATE, APPT, CLOSER).
-
useCloserMargindistance - Distance margin allowed when using a closer alternative.
-
useEarlierMargintimeInterval - Time margin allowed when using an earlier alternative.
-
useLateMargintimeInterval - Time margin allowed when using a later alternative.
-
useStbyTravelFactorrealdefault1.0 - Travel-time multiplier applied when evaluating standby use.
-
qualityANY | RELIABLE | IDLE | DARK_RELIABLE | DARK_IDLEdefaultANY - Resource quality required to service this stop type. DARK_ variants are reliability sub-classes (signed-off but reachable).
-
positionQualityANY | RELIABLE | IDLEdefaultANY - Controls where in the schedule this stop may be positioned.
-
reassignQualityANY | RELIABLE | IDLEdefaultANY - Resource quality required before this stop may be reassigned.
-
arrivalIsSTOP | LOCATIONdefaultSTOP - Whether arrival timing references the stop or the location.
-
commitModeSPIRAL | HOSTdefaultSPIRAL - Whether Spiral commits the stop automatically (per commitWithinTime) or the host controls commit.
-
commitWithinTimetimeIntervaldefault0 s - Spiral transitions to CMTD when predicted arrival is within this window.
-
uncommitWithinTimetimeInterval - Window within which a committed stop may still be uncommitted.
-
headDelaytimeIntervaldefault0 s - Time allowed for a resource to respond to deployment before heading.
-
clockResolutiontimeIntervaldefault60 s - Resolution of the estimated-arrival clock when heading to the stop.
-
sensitivitytimeIntervaldefault5 min - Advanced — the smallest time interval treated as significant.
-
canBreakbooldefaultfalse - A break may be taken within this stop type (though the stop is not itself a break).
-
necessarybooldefaulttrue - Whether the stop is essential to its containing activity.
-
noCallbooldefaultfalse - The stop should not trigger callout of resources in the STBY state.
-
noOsrcbooldefaultfalse - Prevents the stop from entering the OSRC (outsource) state.
-
onlyRestrictionSubsidyrealdefault0.0 - Subsidy applied when the stop is restricted to specific resources (an "only" restriction).
-
optionsLimitintegerdefaultnull - Maximum number of skill options considered (null = unlimited).
-
contextMarginreal - Cost / scoring margin applied to the stop’s surrounding scheduling context.
-
idleSurgeLimitintegerdefaultnull - Count limit on the idle-surge effect for this stop type.
-
voluntaryConfirmWithintimeIntervaldefaultFOREVER - Timeframe within which voluntary deployment must be confirmed.
-
latestdynamicLatestObject - Controls generation of latest values for stops with dependencies.
-
noSolnnoSolnObject - Cost and consequences of not scheduling (outsourcing) this stop type.
-
initinitObject - How Spiral responds when a stop of this type enters the INIT state (immediate solutions / appointments).
-
delaydelayObject - How predicted arrival times generate lateness costs.
-
handoverhandoverObject - Appointment / handover retrieval parameters.
-
partspartsObject - Parts-ordering lead-time configuration.
-
illegalActionsillegalActionsObject - How rule violations for this stop type are handled.
-
helixhelixObject - Helix-specific presentation and stop-building configuration (see below).
Helix extensions
Section titled “Helix extensions”The helix block is a Helix addition to the Spiral stopParams (it is ignored by Spiral itself).
It controls how a stop type is presented and built in the Helix client, plus server-side validation
and state-change hooks. check and the onState cells are "fnName()" specs resolved against the
client crud module — see Backend hooks.
-
iconstring - Name of the map-marker icon rendered for this stop type (e.g. "Car"). Resolves to a canvas-rendered icon in the client. A null icon draws a small dot rather than a full marker.
-
locationTypestring - Which location modes the stop editor offers, any of "any" | "derived" | "area" | "precise" (see the location object). Controls the location-mode rotation UI. Defaults to ["any","derived","area"] when unset; destination / incident stops typically use ["derived","precise"].
-
lineColorstring - CSS colour of the schedule line drawn into this stop on the map. When unset the line takes the stop's own (state) colour; set null to override a colour inherited from a cloned type.
-
mapVisibilityspec - Expression (with `this` = the stop) deciding whether the marker is drawn. Defaults to helixMapVisibility(): drawn if the stop is in the current plan, on a watched/active desk, a child of a plan stop, or shares the current selection; "anywhere" (no location) stops are never drawn.
-
listTextspec - Expression producing the stop’s row text in the entity lists (default helixListText()). Returning null hides the stop from the lists.
-
planTextspec - Expression producing the stop’s row text in the plan window (default helixPlanText()). Returning null hides it from the plan.
-
planTitlespec - Expression producing the plan-window title when this stop heads the plan (default helixPlanTitle(): the resource summary, falling back to the owning desk’s name).
-
highlightspec - Expression producing the row / marker highlight badge (e.g. helixHighlight("Lock") shows a lock icon while the stop is locked).
-
warning{ [code]: string } - Map of Spiral illegal-action code → operator-facing message template shown when a mutation is refused. Templates may interpolate stop attributes with {attr|format} placeholders.
-
rosterbool - Marks a roster stop type (NOW / REST / STBY). Roster stops are presentation shells for the resource’s shift rather than jobs, and are skipped when deriving the resource’s active work.
-
messageIn{ actionee, urgency, text } - Resource → dispatch messaging facility for this stop type (action format). `text` is the enable gate: true = always available, an expression = per-stop, absent = hidden. See the Actions guide.
-
messageOut{ actionee, urgency, text } - Dispatch → resource messaging facility (the "Message resource" button in the stop editor). Same shape and gating as messageIn. See the Actions guide.
-
actionsobject - Per-stop-type action definitions raised into the dispatch Actions queue (messages to acknowledge, questions to resolve, automatic classed actions). Fully described in the Actions guide.
-
delayColorsobject - Colour bands keyed by lateness threshold (seconds), used by helixColorDelay() to colour the stop by how far ahead of / behind schedule it is.
-
nextStateColorsobject - Colour bands by time-to-next-state, used to colour the stop as its next transition approaches.
-
[STATE]stateObject - Per-state presentation keyed by stop state (PLAN, DPLY, HEAD, …) — colour, status text and icon. See below.
-
addStopaddStopObject - Default child-stop types offered when an operator adds a stop of this type (see below).
-
mandatoryStop{ "to": stopParamsKey } - Child stops automatically attached to a stop of this type.
-
morphStopstopParamsKey - Stop types this stop may be morphed into.
-
templatesobject - Predefined stop templates available for this type.
-
lineLetterstring - Single-letter code used in the line / roster display.
-
checkspec - Server-side validation run on the crud add/update path with `this` = the stop. Return a non-empty string to reject the mutation, or null/undefined to pass.
-
onState{ [from]: { [to]: spec } } - Stop state-transition matrix. The cell [fromState][toState] is called (with `this` = the stop) on that transition; the string "null" marks the pre-create (null→first) and post-delete (last→null) edges. Cells are independent.
addStop
Section titled “addStop”Each relation maps to the stop type(s) offered when the operator extends a stop of this type along that relation (an array of stopParamsKey, or null). The relations mirror the stopObject links of the same name.
-
tostopParamsKey - Stop types offered for a sequential delivery (`to`) child.
-
andstopParamsKey - Stop types offered for an unrelated concurrent (`and`) child.
-
withstopParamsKey - Stop types offered for a concurrent (`with`) child.
-
thenstopParamsKey - Stop types offered for a sequential follow-up (`then`) child.
-
assetstopParamsKey - Stop types offered for an asset (`asset`) child.
State presentation
Section titled “State presentation”Keys named after a stop state (PLAN, OSRC, CALL, DPLY, HEAD, CMTD, ARVD, DONE) carry the
look and label for the stop while it is in that state:
-
colorstring - Colour name (resolved via the client colour map) or expression (e.g. helixColorDelay()) for the marker in this state; "transparent" hides the dot.
-
statusstring - Domain text shown for this state in the lists, the stop editor and the map — e.g. an UNLOAD stop showing "RECY" for HEAD/CMTD. Falls back to the raw state code when unset.
-
iconstring - Override the marker icon while the stop is in this state.