Thresholds and resources
Both are workspace-scoped (default to the General workspace).
Task walkthrough: Use thresholds and resources. This page is the full configuration and troubleshooting reference.
Thresholds and resources coordinate flow and capacity across jobs. Jobs reference them as dependencies.
Thresholds
A threshold is a named numeric value used to gate jobs.
| Field | Notes |
|---|---|
name | Unique threshold name. 3–255 characters, following the platform naming rules. |
value | The current numeric value (non-negative integer). |
description | Optional. |
A job with a threshold dependency waits until the threshold reaches the value the dependency requires — a simple way to gate work on a count or a signal.
Resources
A resource is a named capacity pool that jobs reserve from and release back.
| Field | Notes |
|---|---|
name | Unique resource name. 3–255 characters, following the platform naming rules. |
total | Total capacity (non-negative integer). |
description | Optional. |
A job with a resource dependency needs a number of units of the resource, and it gets them in two steps:
- The resource gate checks. While too few units are free, the job waits in
WAIT_RESOURCE_DEPENDENCY. This step only looks — it reserves nothing. - Dispatch takes the units. The units are allocated when the job is dispatched to start. If
another job has taken them since the gate check, the job stays in
WAIT_TO_STARTand tries again on the next pass.
So a job showing WAIT_TO_START can still be waiting for a resource. The units are released when the
job completes. Each allocation is tracked per environment, workflow instance, and job.
A Force Start skips the allocation: the job starts without taking any units, so it does not count against the resource's total while it runs.
Seeing what holds a resource right now
The Resources tab's row menu offers Current Allocations — a read-only view of who is holding the resource at this moment. Allocations are recorded per environment, so pick an environment first; nothing is shown until you do.
For the chosen environment it reports:
| Units in Use | Units allocated, out of the resource's total, with the percentage used. |
| Available | Total minus units in use. A negative number means more is allocated than the resource's total — a total that was lowered while allocations were live. |
| The allocation table | One row per active allocation: Job Name, Units, Allocated At, and the Workflow Instance holding it. |
The summary is always shown once you pick an environment, even when there are no allocations — so 0 / 10 with No active allocations for this resource in this environment is the normal reading of an idle resource, not a half-loaded view.
Units in Use is the resource's own total, not a count of the rows listed. The table shows up to 100 allocations; earlier builds derived the summary from that page, so a resource with more than 100 live allocations under-reported its usage — the one number an operator acts on.
A failed load says so. If the environment list or the allocations can't be fetched you get an error, rather than the same empty state a tenant with no environments would see.
Managing both in the Toolkit
Thresholds and resources each have a tab in the Toolkit, and each is created, edited and viewed in a dialog over its list — there is no separate detail page. Both carry Cross Reference, listing the jobs that depend on the object, and Delete checks those references before it removes anything: if the object is in use, the confirmation lists what depends on it and the delete cannot go ahead.
- Use resources to cap concurrency against a shared system (e.g. only N jobs hitting the core
at once). A job waits in
WAIT_RESOURCE_DEPENDENCYuntil enough units are free, and inWAIT_TO_STARTif another job takes those units before it is dispatched. - A job waiting on a threshold sits in
WAIT_THRESHOLD_DEPENDENCYuntil the value is reached. - Both are workspace-scoped — a job can only use thresholds/resources in its workspace.
Troubleshooting
| Symptom | Likely cause | Resolution |
|---|---|---|
Jobs never get a resource, or sit in WAIT_TO_START | Not enough total, or units aren't being released (held by stuck jobs) | Check the resource total, then use Current Allocations on the resource's row to see which jobs hold its units — see Seeing what holds a resource right now (Builder / Operator). |
| A threshold-gated job never runs | The threshold value isn't reaching the required level | Confirm what sets the threshold value and the dependency's required value (Builder). |
| Many jobs wait on thresholds or resources, and some stay waiting after their value or units are available | Each pass re-checks a limited number of the jobs waiting at each of these gates, and always in the same order, so the same jobs are checked first on every pass. If those can never clear, the jobs behind them are not re-checked. Changing a threshold value or freeing units does not trigger a re-check on its own. | Cancel or skip the waiting jobs that can never clear, so the others are reached (Operator). |