Repository navigation
- The
-fedoraimage is built on Fedora 45 and runs Python 3.15. - Jobs and workflows can declare run parameters under
params:. Each
parameter is astring,integer,number, orbooleanwith a default
and optional constraints:allowed,minimum,maximum,pattern, and
maxLength. A workflow without a schedule can mark a parameter
required: truein place of a default. You supply values when you start
a job, trigger a workflow, or run a backfill, and a run that gets none
uses the defaults. A value that doesn't fit the declaration returns400
with the reason underparamErrors, and nothing starts. - A command reads its run's values from
CRONSTABLE_PARAM_<NAME>
environment variables, or by runningcronstable param, which needs a
state:section. Every workflow task, and every job that declares
params, gets only its own run's values: aCRONSTABLE_PARAM_*variable
in the daemon's environment isn't passed on. Anyone with theviewscope
can read a run's values, so keep secrets insecrets:. A parameter whose
name ends in a word such aspasswordortokenis a configuration
error. - With scoped tokens, supplying values needs the
paramsscope as well as
control. A token withoutparamscan still start, trigger, and
backfill with the defaults, and gets a403when its request carries
values.GET /whoamireportsallScopes: falsefor a token that has
view,control, andapprovebut notparams. - A job run that was started with values is a single attempt outside the
job's retry sequence. Its failure isn't retried, and its success or
cancellation leaves a pending retry in place. The run records the
requesting token's label astriggeredBy, and so does a workflow run
that a trigger or a backfill created. - Workflows can branch. A task ends
skippedwhen its command exits with a
code listed in itsskipExitCodes, or when awhen:condition on a run
parameter or an upstream XCom value isn't met, in which case the command
never starts. A condition tests for equality withequals,notEquals,
in, ornotIn, or compares numbers withlessThan,lessThanOrEqual,
greaterThan, orgreaterThanOrEqual. The task'sskipReasonrecords
why, and both dashboards show it. - A
triggerRulejoins the branches back together.none_failedruns a
task when no upstream failed, even if some were skipped.
none_failed_min_one_successalso requires at least one upstream to
succeed.all_done_min_one_failedruns a task only when an upstream
failed, which makes it a failure handler. Under the default
all_success, a skipped upstream skips the task too. skipExitCodesandwhen:also work on sensors and mapped tasks, and
when:works on approval gates. A gate whose condition isn't met is
skipped without asking anyone to decide, and a mapped task whose condition
isn't met creates no instances. A skip uses no retry attempt, runs no
verifystep, and fires neitheronFailurenoronSuccess.- A
when:condition is a configuration error when it names an undeclared
parameter, compares against a value the parameter can never hold, or
reads XCom from a task that is mapped or isn't upstream. A misspelled
value such asequals: fulfails the load. - Every workflow task gets its run's logical date in
CRONSTABLE_DAG_LOGICAL_DATE, as a UTC timestamp such as
2026-01-05T02:00:00+00:00. A backfill, catch-up, or recovery run can
start days after the date it stands for, so use this variable in a
command that depends on the date. It's empty for a manual run that was
triggered without alogicalDate. - A workflow that uses
params:,when:,skipExitCodes, or a
triggerRuleother thanall_successandall_doneneeds run engine
level 2. An earlier release refuses such a configuration, and if it picks
up a level 2 run, it ignores the run's conditions and parameters. On a
state store that several nodes share, upgrade every node before any
configuration uses these keys. - While a live host on a shared store runs a build below the level a
workflow needs,GET /dagsnames the host in the workflow's
fleetWarnings, and both dashboards show the warning. GET /dagsreturns each task'sskipExitCodesandwhen:conditions. A
run document recordsengine: 2for a workflow that needs level 2, and
whenMet: trueon a task whose conditions were met.- At load, the daemon warns about three parameter problems: a
pattern
with nested repeats such as(a+)+, which can take exponential time to
check; a command that reads aCRONSTABLE_PARAM_*variable that its job
or workflow doesn't declare; and acmd.execommand that expands
%CRONSTABLE_PARAM_<NAME>%for a string parameter with noallowedlist
orpattern, becausecmd.execan run part of the value as a command. - The daemon also warns at load about
skipExitCodesthat include1,
2,126, or127, because a broken command exits with those codes
too, and about anall_successtask that joins branches that can skip,
because one skipped branch skips the join. A configuration with any of
these warnings still loads. POST /jobs/{name}/start,POST /dags/{name}/trigger, and
POST /dags/{name}/backfillreturn400, start nothing, and log a
warning for a body that isn't a JSON object or that has a field the route
doesn't accept, so a misspelledparamskey can't start a run with the
defaults. The body is optional on start and trigger.- On a trigger,
logicalDatesets the date that a manual run stands for,
andrequestIdmakes the request safe to repeat: a second request with
the same ID returns the first run withcreated: false. The same ID with
other parameters or another date returns409. - A backfill response counts the runs that the request created (
created,
runKeys) separately from the dates that already had a run (existing,
existingRunKeys), so repeating a backfill returnscreated: 0. One
request covers at most 100 scheduled dates. For a longer range, the
response hastruncated: trueandnextFrom, thefromto send next. - Backfill, failed-dates recovery, and a trigger's
logicalDatetake RFC
3339 dates or date-times, such as2026-01-05or
2026-01-05T02:00:00+00:00, and read a value with no offset as UTC. They
refuse the ISO 8601 basic form, such as20260105T020000Z, and week
dates. - When a manual start of a
concurrencyPolicy: Replacejob has to wait for
another node to yield the job's cluster concurrency slot,
POST /jobs/{name}/startreturns200withpending: true, and the run
starts when the slot frees. - The MCP tools
cron_run_job,cron_trigger_dag, andcron_backfill_dag
take aparamsargument, andcron_trigger_dagalso takes
logical_dateandrequest_id.cron_backfill_dagreturns the same
counts andtruncatedflag as the HTTP route.cron_list_jobsand
cron_list_dagsreturn eachparamsdeclaration, asGET /jobsand
GET /dagsdo. - A recovery run reuses its source run's parameter values, and the preview
lists them. With scoped tokens, executing a recovery needs theparams
scope when a stored value differs from its declared default. Recovery
returns409when the stored values don't fit the current declaration. - A recovery run keeps a skipped branch skipped, and the preview lists those
tasks underpreservedSkipped. To decide a branch again, recover from the
task that skipped: its command runs again, or itswhen:condition is
read again. - For a job or workflow that declares parameters, the web dashboard's Run,
Trigger, and backfill buttons open a form with a field for each
parameter. In the terminal dashboard,randtopen a row that takes
name=valuepairs, and the backfill row takes the same pairs after its
dates. When the daemon refuses a request, the form or row stays open and
shows the daemon's reasons. - Both dashboards send a
requestIdwith each workflow trigger and keep it
until the daemon answers, for up to 10 minutes after the last attempt, so
you can send an unanswered trigger again without starting a second run.
Both warn when the daemon's response doesn't confirm the values you sent
with a start or a trigger. - After a backfill, the dashboards report how many runs it created and how
many dates already had one, and they keep the backfill open on the rest
of a truncated range. They also show a workflow run's parameter values
and mark each task that has awhen:condition or a trigger rule other
thanall_success. The web dashboard's History tab lists the values each
job run took and the token that supplied them. - A mapped task whose list is empty waits for all of its upstreams and then
follows itstriggerRule, as any other task does, so it can end
skippedorupstream_failed. - Workflow catch-up counts missed dates from the latest scheduled or
catch-up run. Manual runs, backfills, and recovery runs don't move that
starting point. Retention always keeps that run, so a workflow can hold
one terminal run more thanretainRuns. - If another node takes over a workflow run while a node is reading XCom
values for it or preparing a recovery run, the first node starts none of
the run's tasks. - A daemon that refuses a reloaded configuration keeps running its
durable-state chores: it writes its store manifest, collects garbage, and
claims retries from other nodes. - The Sentry reporter's client sends the daemon's error events without the
local variables of the stack frames and without HTTP request bodies, so
neither can carry a parameter value to Sentry.
Performance compared with 1.2.75
Regression check: passed for 191 of 192 metrics with regression limits. The remaining metrics could not be compared.
Both versions were benchmarked in alternating rounds on the same machine. Results use the lowest runtime and median memory usage across rounds. Negative changes mean less time or memory; positive changes mean more.
Benchmark comparisons (199 metrics)
Noise (±) estimates run-to-run variation across both versions. A result fails the regression check only if the increase exceeds its percentage limit, its minimum absolute change, and 2 times the noise estimate. When a result uses the lowest runtime and each version has three or more rounds, the median of the rounds must also increase by more than the percentage limit and the minimum absolute change. n/a means too few rounds to estimate noise; the other limits still apply.
The Regression limit column accounts for the minimum absolute change, expressed as a percentage of the baseline. Not enforced marks informational metrics.
Startup times include Python startup overhead. Their percentage changes exclude that overhead when it can be measured separately and leaves a positive runtime in both versions.
| Benchmark | 1.2.75 | 1.2.76 | Change | Noise (±) | Regression limit |
|---|---|---|---|---|---|
| mcp.fleet_15x400 | 132.64 ms | 41.09 ms | -69.0% | 1.9% | 15% |
| loop.stall_mcp_jobs_500 | 6.39 ms | 2.81 ms | -56.0% | 3.9% | Not enforced |
| mcp.list_jobs_500 | 106.65 ms | 54.23 ms | -49.2% | 1.2% | 15% |
| mcp.list_jobs_page_500 | 107.39 ms | 71.58 ms | -33.3% | 0.5% | 15% |
| loop.stall_launch_herd_8k | 61.51 ms | 71.55 ms | +16.3% | 2.1% | Not enforced |
| dag.build_chain_10k | 22.08 ms | 25.39 ms | +15.0% | 5.2% | 45.29% (declared 15%) |
| dag.recover_plan_from_1k | 80.87 ms | 69.09 ms | -14.6% | 0.6% | 15% |
| mcp.handle_200 | 114.35 ms | 101.01 ms | -11.7% | 1.3% | 15% |
| dag.build_layered_10k | 37.40 ms | 41.66 ms | +11.4% | 1.7% | 26.74% (declared 15%) |
| webapi.trends_build_5k | 126.95 ms | 140.98 ms | +11.1% | 1.1% | 15% |
| dag.full_sweep_50x200 | 93.29 ms | 102.84 ms | +10.2% | 1.0% | 25% |
| startup.jobcli_state_get | 85.02 ms | 79.71 ms | -7.7% | 0.7% | 25% |
| startup.mcp_bridge | 82.33 ms | 77.46 ms | -7.4% | 0.4% | 25% |
| mem.launch_reap_steady_20x55 | 0.38 MB | 0.40 MB | +6.1% | 0.0% | 15% |
| job.launch_reap_2k | 107.46 ms | 113.07 ms | +5.2% | 1.5% | 15% |
| mem.gc_pause_100k | 139.31 ms | 145.49 ms | +4.4% | 10.3% | 25% |
| mcp.tools_list_bytes | 33.51 KB | 34.99 KB | +4.4% | 0.0% | 15% |
| schedule.duplicates_20k | 13.36 ms | 13.95 ms | +4.3% | 7.1% | 74.83% (declared 15%) |
| webui.tick_500 | 64.40 ms | 67.20 ms | +4.3% | 10.2% | 25% |
| job.launch_fail_retry_2k | 122.28 ms | 127.59 ms | +4.3% | 1.9% | 15% |
| statsd.emit_2k | 10.18 ms | 10.62 ms | +4.3% | 0.8% | 98.24% (declared 25%) |
| webapi.index_gzip_bytes | 188.32 KB | 195.43 KB | +3.8% | 0.0% | 15% |
| dag.adopt_scan_500 | 59.79 ms | 61.99 ms | +3.7% | 1.1% | 33.45% (declared 25%) |
| state.append_pruned_1k | 255.98 ms | 246.72 ms | -3.6% | 12.5% | 25% |
| webapi.index_bytes | 657.66 KB | 680.79 KB | +3.5% | 0.0% | 15% |
| schedule.pressure_20k_48h | 12.52 ms | 12.95 ms | +3.4% | 5.7% | 79.85% (declared 15%) |
| jobapi.sem_denied_64x10 | 47.89 ms | 49.48 ms | +3.3% | 0.8% | 25% |
| startup.import_tui | 82.53 ms | 84.89 ms | +3.3% | 0.4% | 25% |
| state.gc_sweep_2k_streams | 36.29 ms | 37.45 ms | +3.2% | 1.6% | 41.34% (declared 25%) |
| webui.swim_400x49 | 60.90 ms | 62.80 ms | +3.1% | 1.9% | 25% |
| state.inventory_2k_streams | 82.38 ms | 84.93 ms | +3.1% | 1.0% | Not enforced |
| state.fanout_gather_100 | 18.95 ms | 19.54 ms | +3.1% | 7.7% | 52.76% (declared 25%) |
| tui.palette_type_5k | 135.94 ms | 140.04 ms | +3.0% | 1.8% | 15% |
| loop.stall_metrics_2000 | 22.65 ms | 23.31 ms | +2.9% | 6.1% | Not enforced |
| startup.import_daemon | 152.38 ms | 156.47 ms | +2.9% | 0.2% | 25% |
| webui.dag_tasks_2k | 39.40 ms | 40.50 ms | +2.8% | 1.3% | 25% |
| dag.list_runs_warm | 9.03 ms | 9.27 ms | +2.7% | 0.9% | 25% |
| tui.log_search_20k | 10.81 ms | 11.09 ms | +2.7% | 2.6% | 92.54% (declared 15%) |
| webui.render_term_5k | 80.35 ms | 82.45 ms | +2.6% | 1.1% | 25% |
| webui.dirty_frame_rows_500 | 710.7 us | 727.8 us | +2.4% | 7.0% | Not enforced |
| cronexpr.next_simple | 29.22 ms | 28.59 ms | -2.2% | 1.7% | 34.23% (declared 15%) |
| config.reload_warm_dir_1k | 60.98 ms | 62.28 ms | +2.1% | 1.2% | 25% |
| webui.timeline_500 | 42.20 ms | 43.10 ms | +2.1% | 1.4% | 25% |
| cronexpr.parse_simple | 32.38 ms | 31.70 ms | -2.1% | 1.9% | 30.89% (declared 15%) |
| resources.monitor_stop_100 | 236.99 ms | 241.92 ms | +2.1% | 1.9% | 25% |
| state.list_documents_600 | 49.90 ms | 50.90 ms | +2.0% | 1.1% | 24.05% (declared 15%) |
| mcp.query_metrics_500 | 102.73 ms | 100.71 ms | -2.0% | 1.0% | 25% |
| webui.filter_keys_500 | 46.30 ms | 47.20 ms | +1.9% | 1.0% | 25% |
| state.artifact_put_distinct_2k | 129.67 ms | 127.30 ms | -1.8% | 1.4% | 25% |
| webapi.resources_poll_20x240 | 110.53 ms | 108.56 ms | -1.8% | 1.7% | 15% |
| startup.import_cronexpr | 21.19 ms | 21.21 ms | -1.8% | 1.7% | 30.01% (declared 25%) |
| state.boot_rehydrate_populated | 33.81 ms | 34.40 ms | +1.7% | 1.7% | 29.58% (declared 15%) |
| cronexpr.next_complex | 11.70 ms | 11.90 ms | +1.7% | 2.0% | 85.46% (declared 15%) |
| webui.ledger_analyze_500x600 | 53.60 ms | 52.70 ms | -1.7% | 0.8% | 25% |
| redact.secrets_5k | 16.06 ms | 16.33 ms | +1.7% | 0.5% | 62.27% (declared 15%) |
| webui.select_move_500 | 48.40 ms | 49.20 ms | +1.7% | 2.5% | 25% |
| mem.rss_daemon_import | 39.11 MB | 39.73 MB | +1.6% | 0.2% | 25% |
| dag.mapped_drain_256 | 22.98 ms | 23.34 ms | +1.6% | 2.0% | 43.52% (declared 25%) |
| state.kv_roundtrip_200 | 133.45 ms | 131.37 ms | -1.6% | 2.7% | 15% |
| webui.render_rows_500 | 11.90 ms | 12.08 ms | +1.5% | 0.9% | 25% |
| startup.job_set_id_100 | 145.49 ms | 147.54 ms | +1.5% | 1.0% | 25% |
| dag.list_dags_warm_x300 | 43.58 ms | 44.18 ms | +1.4% | 1.2% | 25% |
| webui.rows_layout_200 | 45.00 ms | 45.60 ms | +1.3% | 1.2% | 25% |
| config.parse_crontab_1k | 9.68 ms | 9.80 ms | +1.3% | 1.0% | 103.4% (declared 15%) |
| dag.gc_excess_60 | 121.45 ms | 122.98 ms | +1.3% | 4.2% | 25% |
| resources.usage_from_dict_500 | 71.33 ms | 72.16 ms | +1.2% | 1.9% | 15% |
| cronexpr.test_match_200k | 18.71 ms | 18.49 ms | -1.2% | 4.0% | 53.44% (declared 15%) |
| cluster.parse_summaries_6k | 67.77 ms | 67.02 ms | -1.1% | 2.6% | 15% |
| webapi.sse_tail_pump_4x20k | 79.41 ms | 80.28 ms | +1.1% | 1.4% | 15% |
| pools.enqueue_burst_200 | 204.18 ms | 201.99 ms | -1.1% | 5.0% | 25% |
| state.artifact_get_newest | 11.79 ms | 11.91 ms | +1.0% | 1.8% | 42.42% (declared 25%) |
| loop.stall_completions_500 | 6.51 ms | 6.57 ms | +1.0% | 1.1% | 76.83% (declared 25%) |
| state.list_records_warm | 98.05 ms | 99.05 ms | +1.0% | 1.6% | 15% |
| cronexpr.next_dst_2k | 30.51 ms | 30.20 ms | -1.0% | 4.6% | 32.78% (declared 15%) |
| tui.log_restyle_5k | 22.57 ms | 22.80 ms | +1.0% | 1.3% | 44.3% (declared 15%) |
| dag.run_chain_100 | 289.02 ms | 286.14 ms | -1.0% | 6.2% | 25% |
| startup.import_config | 86.34 ms | 87.19 ms | +1.0% | 0.3% | 25% |
| mem.jobconfig_2k | 1.60 MB | 1.61 MB | +1.0% | 0.0% | 31.28% (declared 15%) |
| startup.python_baseline | 14.53 ms | 14.66 ms | +0.9% | 0.7% | Not enforced |
| tui.mark_idle_300 | 206.42 ms | 208.18 ms | +0.9% | 1.7% | 15% |
| schedule.lint_2500_zoned | 44.65 ms | 45.02 ms | +0.8% | 1.5% | 15% |
| webui.radar_walk_500x150 | 50.20 ms | 50.60 ms | +0.8% | 3.3% | 25% |
| tui.dag_graph_paint_2k | 178.81 ms | 180.21 ms | +0.8% | 1.0% | 15% |
| state.append_1k | 430.10 ms | 433.34 ms | +0.8% | 5.1% | 15% |
| dag.advance_quiescent_1k | 56.45 ms | 56.04 ms | -0.7% | 0.4% | 25% |
| json.loads_wide_int_2k | 163.42 ms | 162.24 ms | -0.7% | 1.1% | 15% |
| cronexpr.occurrences_1k | 10.66 ms | 10.73 ms | +0.7% | 0.9% | 93.83% (declared 15%) |
| webapi.jobs_payload_500 | 38.07 ms | 38.34 ms | +0.7% | 2.3% | 26.27% (declared 15%) |
| prometheus.counter_snapshot_2k | 95.98 ms | 96.64 ms | +0.7% | 1.6% | 15% |
| cluster.peer_serve_400 | 119.29 ms | 120.04 ms | +0.6% | 0.6% | 15% |
| webapi.auth_scope_20k | 65.40 ms | 64.98 ms | -0.6% | 0.3% | 15% |
| dag.run_wide_500 | 109.11 ms | 108.42 ms | -0.6% | 1.4% | 25% |
| mem.rss_daemon_web_100 | 53.87 MB | 54.20 MB | +0.6% | 0.2% | 25% |
| push.seal_500 | 71.43 ms | 71.00 ms | -0.6% | 0.5% | 15% |
| dag.fanin_barrier_1k | 142.76 ms | 141.92 ms | -0.6% | 0.5% | 25% |
| loop.stall_jobs_500 | 14.95 ms | 14.86 ms | -0.6% | 2.2% | Not enforced |
| config.interp_2k | 48.33 ms | 48.61 ms | +0.6% | 0.4% | 20.69% (declared 15%) |
| schedule.reseed_local_20k | 73.44 ms | 73.86 ms | +0.6% | 3.8% | 15% |
| state.depends_on_past_gate | 2.25 ms | 2.23 ms | -0.6% | 1.4% | 89.06% (declared 25%) |
| tui.table_paint_5k | 130.46 ms | 129.74 ms | -0.6% | 1.2% | 15% |
| webapi.summary_status_500 | 120.68 ms | 120.02 ms | -0.5% | 1.3% | 15% |
| startup.validate_config_100 | 142.01 ms | 141.45 ms | -0.5% | 0.5% | 25% |
| fingerprint.job_set_id_rich_2k | 182.33 ms | 183.31 ms | +0.5% | 0.4% | 15% |
| schedule.next_fires_2k | 18.22 ms | 18.32 ms | +0.5% | 1.7% | 54.88% (declared 15%) |
| fingerprint.job_set_id_10k | 224.67 ms | 225.83 ms | +0.5% | 0.8% | 15% |
| webui.render_fleet_15x400 | 17.62 ms | 17.71 ms | +0.5% | 1.6% | 25% |
| webui.palette_keys_500 | 39.70 ms | 39.90 ms | +0.5% | 1.2% | 25% |
| dag.finish_fanin_20x1k | 65.44 ms | 65.76 ms | +0.5% | 1.4% | 25% |
| webapi.activity_build_500 | 134.92 ms | 134.26 ms | -0.5% | 0.5% | 15% |
| state.artifact_list_churn_x500 | 38.88 ms | 39.07 ms | +0.5% | 1.2% | 25% |
| prometheus.render_500 | 13.14 ms | 13.20 ms | +0.5% | 0.5% | 76.11% (declared 15%) |
| dag.plan_claim_10k | 10.80 ms | 10.85 ms | +0.5% | 5.6% | 92.63% (declared 15%) |
| ical.render_500x7d | 38.49 ms | 38.31 ms | -0.5% | 0.4% | 25.98% (declared 15%) |
| webui.rows_diff_500 | 42.80 ms | 42.60 ms | -0.5% | 3.0% | 25% |
| webui.sort_500 | 43.40 ms | 43.60 ms | +0.5% | 1.2% | 25% |
| push.seal_xwing_500 | 101.35 ms | 101.82 ms | +0.5% | 0.2% | 15% |
| webui.tail_term_2k | 44.30 ms | 44.10 ms | -0.5% | 1.1% | 25% |
| tui.week_rows_500 | 104.71 ms | 104.25 ms | -0.4% | 1.0% | 15% |
| config.jobconfig_3k | 37.59 ms | 37.75 ms | +0.4% | 1.2% | 26.61% (declared 15%) |
| schedule.reseed_100k | 160.93 ms | 160.23 ms | -0.4% | 2.7% | 15% |
| cluster.job_owner_2k | 41.56 ms | 41.74 ms | +0.4% | 1.7% | 24.06% (declared 15%) |
| tui.view_sort_5k | 87.95 ms | 88.32 ms | +0.4% | 1.6% | 15% |
| mem.rss_daemon_10k | 144.45 MB | 145.06 MB | +0.4% | 0.1% | 25% |
| cluster.derive_cold_50 | 122.45 ms | 121.94 ms | -0.4% | 0.1% | 15% |
| webapi.pools_poll_4x130 | 83.67 ms | 84.00 ms | +0.4% | 0.7% | 25% |
| tui.fleet_paint_15x400 | 115.87 ms | 115.43 ms | -0.4% | 0.6% | 15% |
| webapi.gzip_body_500 | 43.83 ms | 43.66 ms | -0.4% | 1.2% | 22.82% (declared 15%) |
| state.list_records_2k | 21.95 ms | 22.03 ms | +0.4% | 1.2% | 45.56% (declared 15%) |
| config.parse_yaml_rich_20 | 173.70 ms | 174.30 ms | +0.3% | 1.2% | 15% |
| job.stream_passthrough_240k | 109.61 ms | 109.98 ms | +0.3% | 0.5% | 15% |
| tui.tail_ingest_30k | 127.62 ms | 128.05 ms | +0.3% | 2.0% | 15% |
| prometheus.first_scrape_after_reload_500 | 139.88 ms | 140.35 ms | +0.3% | 1.2% | 15% |
| schedule.cold_build_100k | 374.96 ms | 373.78 ms | -0.3% | 1.7% | 15% |
| jobapi.read_path_10k | 97.92 ms | 97.61 ms | -0.3% | 0.4% | 15% |
| redact.adversarial_10k | 28.60 ms | 28.68 ms | +0.3% | 0.7% | 34.97% (declared 15%) |
| config.reload_warm_50 | 29.14 ms | 29.22 ms | +0.3% | 1.6% | 34.32% (declared 25%) |
| json.roundtrip_3k | 429.07 ms | 427.85 ms | -0.3% | 0.9% | 15% |
| schedule.due_pass_100k | 11.18 ms | 11.21 ms | +0.3% | 3.9% | 89.44% (declared 25%) |
| state.derive_max_cold | 20.11 ms | 20.16 ms | +0.3% | 0.7% | 49.72% (declared 15%) |
| webapi.dags_poll_1k | 97.80 ms | 98.05 ms | +0.2% | 0.6% | 15% |
| job.report_noop_100k | 37.98 ms | 37.89 ms | -0.2% | 1.1% | 15% |
| config.parse_dir_cold_200 | 193.31 ms | 193.78 ms | +0.2% | 1.6% | 25% |
| webui.wallboard_poll_500 | 42.30 ms | 42.40 ms | +0.2% | 4.1% | 25% |
| pair.qr_encode_14 | 194.39 ms | 194.84 ms | +0.2% | 1.3% | 15% |
| state.lease_renew_200 | 107.27 ms | 107.05 ms | -0.2% | 3.2% | 46.61% (declared 25%) |
| loop.idle_wake_rate | 11.95 ms | 11.98 ms | +0.2% | 1.0% | 41.83% (declared 25%) |
| startup.version | 43.54 ms | 43.73 ms | +0.2% | 1.2% | 25% |
| config.reload_warm_include_50 | 63.42 ms | 63.30 ms | -0.2% | 2.2% | 25% |
| dag.advance_quiescent_chain | 55.54 ms | 55.64 ms | +0.2% | 0.1% | 25% |
| startup.daemon_first_pass_2k | 1.073 s | 1.075 s | +0.2% | 0.8% | 25% |
| loop.sla_pass_5k_x10 | 114.24 ms | 114.43 ms | +0.2% | 2.7% | 15% |
| redact.clean_20k | 16.18 ms | 16.15 ms | -0.2% | 1.7% | 61.81% (declared 15%) |
| cronexpr.parse_complex | 16.51 ms | 16.49 ms | -0.2% | 0.9% | 60.57% (declared 15%) |
| json.roundtrip_orjson_3k | 161.12 ms | 161.36 ms | +0.1% | 1.0% | 15% |
| dag.advance_waiting_mapped_1k | 95.31 ms | 95.45 ms | +0.1% | 0.4% | 25% |
| mem.rss_version | 14.68 MB | 14.66 MB | -0.1% | 0.2% | 25% |
| webui.logo_recovery | 85.70 ms | 85.60 ms | -0.1% | 0.2% | 25% |
| job.stream_capture_120k | 28.32 ms | 28.29 ms | -0.1% | 0.9% | 35.31% (declared 15%) |
| cluster.poll_round_15x400 | 125.69 ms | 125.57 ms | -0.1% | 0.8% | 15% |
| mem.jobconfig_envfile_2k | 16.35 MB | 16.37 MB | +0.1% | 0.0% | 15% |
| tui.wallboard_paint_5k | 139.62 ms | 139.49 ms | -0.1% | 0.6% | 15% |
| config.reload_gc_100k | 1.465 s | 1.466 s | +0.1% | 1.2% | 25% |
| mem.run_history_series_5 | 9.58 MB | 9.58 MB | +0.1% | 0.0% | 15% |
| tui.drawer_paint_5k | 75.03 ms | 74.99 ms | -0.1% | 1.5% | 15% |
| config.parse_yaml_3k | 1.166 s | 1.166 s | +0.1% | 1.5% | 15% |
| config.parse_yaml_300 | 116.87 ms | 116.92 ms | +0.0% | 1.3% | 15% |
| state.artifact_get_oldest_2k | 99.85 ms | 99.89 ms | +0.0% | 0.5% | 25% |
| tui.poll_absorb_5k | 68.07 ms | 68.09 ms | +0.0% | 3.1% | 15% |
| state.derive_max_warm | 184.90 ms | 184.84 ms | -0.0% | 0.2% | 15% |
| push.fanout_8x100 | 118.05 ms | 118.01 ms | -0.0% | 0.6% | 15% |
| cluster.fleet_view_15x400 | 69.23 ms | 69.25 ms | +0.0% | 1.0% | 25% |
| schedule.suggest_slot_5k_x20 | 58.49 ms | 58.48 ms | -0.0% | 3.0% | 15% |
| mem.parse_peak_rich_20 | 4.21 MB | 4.21 MB | +0.0% | 0.0% | 15% |
| state.mutate_document_1k | 163.74 ms | 163.77 ms | +0.0% | 1.3% | 30.54% (declared 25%) |
| webapi.sse_burst_20k | 32.85 ms | 32.85 ms | -0.0% | 1.1% | 15% |
| webapi.dag_run_poll_1k | 69.33 ms | 69.34 ms | +0.0% | 0.4% | 25% |
| pools.admit_cycle_1k | 116.89 ms | 116.88 ms | -0.0% | 0.7% | 25% |
| mem.gc_manifest_scan_128x2k | 14.32 MB | 14.32 MB | -0.0% | 0.0% | 15% |
| dag.run_doc_bytes_1k | 228.53 KB | 228.53 KB | +0.0% | 0.0% | 5% |
| dag.mapped_doc_bytes_1k | 725.81 KB | 725.81 KB | +0.0% | 0.0% | 5% |
| tui.frame_bytes_5k | 60.22 KB | 60.22 KB | +0.0% | 0.0% | 15% |
| webui.log_count_5k | 80.0 us | 80.0 us | +0.0% | 0.0% | 2500% (declared 25%) |
| webui.append_line_5k | 10.0 us | 10.0 us | +0.0% | 7.1% | 25% |
| webui.week_walk_500x20 | 52.00 ms | 52.00 ms | +0.0% | 1.4% | 25% |
| webui.boot_rows_500 | 331.30 ms | 331.30 ms | +0.0% | 4.3% | Not enforced |
| webapi.jobs_bytes_500 | 181.42 KB | 181.42 KB | +0.0% | 0.0% | 15% |
| webapi.jobs_gzip_500 | 5.19 KB | 5.19 KB | +0.0% | 0.0% | 15% |
| webapi.activity_bytes_500 | 2569.83 KB | 2569.83 KB | +0.0% | 0.0% | 15% |
| webapi.activity_capped_bytes_500 | 411.18 KB | 411.18 KB | +0.0% | 0.0% | 15% |
| webapi.fleet_bytes_15x400 | 963.62 KB | 963.62 KB | +0.0% | 0.0% | 15% |
| cluster.peer_bytes_512 | 83.55 KB | 83.55 KB | +0.0% | 0.0% | 15% |
| prometheus.counter_snapshot_bytes_2k | 620.59 KB | 620.59 KB | +0.0% | 0.0% | 15% |
| prometheus.exposition_bytes_500 | 821.17 KB | 821.17 KB | +0.0% | 0.0% | 15% |
| mcp.list_jobs_bytes_500 | 155.54 KB | 155.54 KB | +0.0% | 0.0% | 15% |
| mcp.fleet_bytes_15x400 | 2052.76 KB | 2052.76 KB | +0.0% | 0.0% | 15% |
| mem.crontab_10k | 2.80 MB | 2.80 MB | +0.0% | 0.0% | 17.85% (declared 15%) |
| mem.retired_output_1k | 0.12 MB | 0.12 MB | +0.0% | 0.0% | 15% |
| mem.cluster_view_50x400 | 11.64 MB | 11.64 MB | +0.0% | 0.0% | 15% |
| mem.tui_state_5k | 2.24 MB | 2.24 MB | +0.0% | 0.0% | 15% |
No percentage comparison available: dag.join_verdict_2k.
What's Changed
- Bump the docker group across 2 directories with 5 updates by @dependabot[bot] in #68
- Bump the github-actions group across 1 directory with 3 updates by @dependabot[bot] in #69
- Bump the github-actions group across 2 directories with 5 updates by @dependabot[bot] in #71
- Link the live demo from the README and wiki by @ptweezy in #49
Full Changelog: 1.2.75...1.2.76