Optionaloptions: TimeBudgetOptionsconst report = timeBudget(chart, { budgetMs: 120_000, assume: { loops: { 'ask-again': 3 } } });
report.worstCaseMs; // number, or null when a path is unbounded
report.criticalPath; // [{ stageId, attempts, timeoutMs, backoffMs, worstMs, passes }]
report.unbounded; // [{ stageId, why: 'no-timeout' | 'backoff' | 'loop' | 'lazy-subflow' | 'items' }]
report.over; // true when the declared policies allow longer than budgetMs
The slowest the chart can take, computed from its declared retry policies — and every stage that makes a path unbounded, by name. See the module header for the rules.