Skip to content

1.2.67

Choose a tag to compare

@github-actions github-actions released this 15 Oct 06:59
· 27 commits to main since this release
Immutable release. Only release title and notes can be modified.
  • The daemon serves status badges for READMEs, wikis, and home dashboards.
    GET /jobs/{name}/badge.svg shows a job's verdict, such as passing or
    failing, and GET /badge.svg counts the jobs in the most urgent state,
    such as 2 failing.
  • Badges are on by default. A page on another site can load them straight
    from the daemon only with web.badges.public: true, which also serves
    them without the access token. web.badges: false turns them off.
  • The web and terminal dashboards can copy a badge's Markdown from the
    command palette.
  • A dashboard link to a job or a DAG, such as /#job/nightly-backup, opens
    its drawer after you save an access token.
  • A web.headers entry replaces the dashboard page's default header of the
    same name in any letter case.
  • cronstable requires aiohttp 3.14.5 or newer.

Performance compared with 1.2.66

Regression check: passed. No compared metric exceeded its regression thresholds.

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. 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.66 1.2.67 Change Noise (±) Regression limit
webui.dirty_frame_rows_500 986.0 us 856.9 us -13.1% 13.4% Not enforced
webui.append_line_5k 10.0 us 11.0 us +10.0% 4.1% 25%
startup.import_tui 79.11 ms 83.20 ms +6.0% 0.7% 25%
startup.import_cronexpr 21.86 ms 21.67 ms -5.3% 1.1% 27.45% (declared 25%)
loop.stall_metrics_2000 22.35 ms 23.35 ms +4.5% 11.4% Not enforced
webapi.sse_burst_20k 33.76 ms 32.31 ms -4.3% 8.0% 15%
webui.tick_500 69.40 ms 66.80 ms -3.7% 8.7% 25%
startup.import_daemon 145.57 ms 149.53 ms +2.9% 3.7% 25%
webui.wallboard_poll_500 43.10 ms 44.20 ms +2.6% 2.1% 25%
state.fanout_gather_100 6.65 ms 6.48 ms -2.4% 4.1% 150.5% (declared 25%)
schedule.due_pass_100k 13.16 ms 13.45 ms +2.2% 3.9% 75.99% (declared 25%)
schedule.duplicates_20k 14.07 ms 14.38 ms +2.2% 7.5% 71.09% (declared 15%)
webui.rows_layout_200 48.10 ms 49.10 ms +2.1% 3.6% 25%
tui.palette_type_5k 140.12 ms 142.97 ms +2.0% 5.8% 15%
startup.daemon_first_pass_2k 1.091 s 1.070 s -1.9% 0.7% 25%
state.list_records_2k 20.12 ms 20.51 ms +1.9% 1.9% 49.7% (declared 15%)
state.boot_rehydrate_populated 30.98 ms 31.53 ms +1.8% 0.9% 32.28% (declared 15%)
ical.render_500x7d 37.50 ms 38.15 ms +1.8% 1.1% 26.67% (declared 15%)
prometheus.render_500 12.73 ms 12.95 ms +1.7% 2.2% 78.54% (declared 15%)
startup.import_config 78.43 ms 77.52 ms -1.7% 1.1% 25%
dag.build_chain_10k 21.58 ms 21.91 ms +1.5% 3.8% 46.35% (declared 15%)
mcp.fleet_15x400 131.82 ms 133.87 ms +1.5% 3.1% 15%
dag.gc_excess_60 65.36 ms 64.36 ms -1.5% 2.4% 25%
job.report_noop_100k 38.68 ms 39.27 ms +1.5% 2.9% 15%
mem.gc_pause_100k 156.72 ms 159.07 ms +1.5% 7.4% 25%
schedule.pressure_20k_48h 14.52 ms 14.31 ms -1.5% 2.3% 68.86% (declared 15%)
state.depends_on_past_gate 1.98 ms 2.01 ms +1.5% 2.5% 100.8% (declared 25%)
cronexpr.next_complex 11.89 ms 11.71 ms -1.5% 2.5% 84.11% (declared 15%)
startup.job_set_id_100 139.98 ms 138.40 ms -1.4% 2.4% 25%
startup.validate_config_100 134.07 ms 132.57 ms -1.4% 3.1% 25%
tui.wallboard_paint_5k 137.71 ms 139.67 ms +1.4% 2.9% 15%
dag.adopt_scan_500 60.54 ms 59.69 ms -1.4% 1.0% 33.04% (declared 25%)
state.derive_max_cold 18.31 ms 18.56 ms +1.4% 3.7% 54.63% (declared 15%)
schedule.next_fires_2k 17.56 ms 17.80 ms +1.4% 1.7% 56.96% (declared 15%)
state.artifact_get_newest 11.25 ms 11.09 ms -1.4% 0.7% 44.44% (declared 25%)
startup.python_baseline 14.57 ms 14.77 ms +1.4% 1.9% Not enforced
startup.jobcli_state_get 85.27 ms 84.51 ms -1.4% 2.4% 25%
cronexpr.parse_simple 33.22 ms 32.78 ms -1.3% 2.5% 30.1% (declared 15%)
mem.rss_daemon_import 37.80 MB 38.28 MB +1.3% 0.1% 25%
cronexpr.next_dst_2k 29.87 ms 29.50 ms -1.3% 1.3% 33.47% (declared 15%)
loop.sla_pass_5k_x10 115.00 ms 116.41 ms +1.2% 3.8% 15%
webapi.dags_poll_1k 98.03 ms 99.22 ms +1.2% 1.2% 15%
startup.version 43.87 ms 44.42 ms +1.2% 2.0% 25%
config.reload_warm_50 28.50 ms 28.16 ms -1.2% 1.8% 35.09% (declared 25%)
pools.admit_cycle_1k 109.28 ms 108.00 ms -1.2% 1.4% 25%
webapi.auth_scope_20k 65.11 ms 65.86 ms +1.2% 0.7% 15%
tui.poll_absorb_5k 68.90 ms 69.68 ms +1.1% 6.3% 15%
startup.mcp_bridge 83.58 ms 83.00 ms -1.1% 1.9% 25%
webui.render_rows_500 12.58 ms 12.72 ms +1.1% 1.8% 25%
loop.stall_mcp_jobs_500 6.43 ms 6.36 ms -1.1% 3.0% Not enforced
state.lease_renew_200 32.29 ms 31.94 ms -1.1% 1.5% 154.8% (declared 25%)
schedule.lint_2500_zoned 44.48 ms 44.96 ms +1.1% 1.4% 15%
config.parse_crontab_1k 9.14 ms 9.05 ms -1.0% 1.1% 109.4% (declared 15%)
dag.list_runs_warm 8.40 ms 8.48 ms +0.9% 1.8% 25%
state.artifact_list_churn_x500 36.53 ms 36.18 ms -0.9% 2.1% 27.38% (declared 25%)
webapi.index_gzip_bytes 181.36 KB 183.06 KB +0.9% 0.0% 15%
redact.adversarial_10k 27.22 ms 27.46 ms +0.9% 0.7% 36.74% (declared 15%)
state.artifact_put_distinct_2k 35.16 ms 34.86 ms -0.9% 4.5% 28.44% (declared 25%)
cronexpr.next_simple 28.59 ms 28.35 ms -0.8% 1.7% 34.97% (declared 15%)
cluster.parse_summaries_6k 63.90 ms 63.37 ms -0.8% 1.9% 15%
config.parse_yaml_rich_20 172.48 ms 171.05 ms -0.8% 1.0% 15%
config.parse_yaml_3k 1.156 s 1.147 s -0.8% 0.8% 15%
dag.full_sweep_50x200 93.70 ms 92.94 ms -0.8% 4.8% 25%
resources.usage_from_dict_500 70.00 ms 70.56 ms +0.8% 2.2% 15%
webui.select_move_500 49.80 ms 50.20 ms +0.8% 5.2% 25%
cluster.derive_cold_50 121.36 ms 122.34 ms +0.8% 1.2% 15%
dag.finish_fanin_20x1k 54.42 ms 53.99 ms -0.8% 1.4% 25%
tui.log_restyle_5k 22.37 ms 22.54 ms +0.8% 1.9% 44.7% (declared 15%)
webui.palette_keys_500 39.70 ms 40.00 ms +0.8% 1.0% 25%
loop.stall_launch_herd_8k 59.88 ms 60.33 ms +0.7% 2.8% Not enforced
redact.secrets_5k 15.47 ms 15.58 ms +0.7% 1.1% 64.65% (declared 15%)
webui.dag_tasks_2k 40.90 ms 41.20 ms +0.7% 1.1% 25%
dag.mapped_drain_256 15.29 ms 15.17 ms -0.7% 1.2% 65.42% (declared 25%)
dag.list_dags_warm_x300 40.22 ms 40.51 ms +0.7% 0.9% 25%
config.reload_warm_include_50 62.19 ms 61.75 ms -0.7% 0.8% 25%
webapi.index_bytes 635.35 KB 639.81 KB +0.7% 0.0% 15%
mcp.list_jobs_page_500 107.13 ms 107.88 ms +0.7% 0.8% 15%
fingerprint.job_set_id_rich_2k 183.49 ms 184.75 ms +0.7% 2.5% 15%
loop.idle_wake_rate 11.92 ms 11.84 ms -0.7% 0.6% 41.95% (declared 25%)
job.stream_capture_120k 28.46 ms 28.26 ms -0.7% 2.1% 35.14% (declared 15%)
tui.dag_graph_paint_2k 179.77 ms 178.56 ms -0.7% 1.1% 15%
schedule.cold_build_100k 364.33 ms 366.73 ms +0.7% 1.9% 15%
state.list_documents_600 47.27 ms 47.58 ms +0.6% 1.7% 25.39% (declared 15%)
webapi.jobs_payload_500 38.23 ms 38.47 ms +0.6% 1.3% 26.16% (declared 15%)
tui.mark_idle_300 208.80 ms 207.46 ms -0.6% 2.7% 15%
fingerprint.job_set_id_10k 222.09 ms 220.69 ms -0.6% 1.3% 15%
mem.rss_daemon_web_100 52.60 MB 52.93 MB +0.6% 0.1% 25%
cronexpr.test_match_200k 19.50 ms 19.62 ms +0.6% 2.1% 51.28% (declared 15%)
mcp.query_metrics_500 101.35 ms 101.95 ms +0.6% 1.7% 25%
job.launch_reap_2k 105.19 ms 105.82 ms +0.6% 0.9% 15%
webapi.resources_poll_20x240 109.49 ms 108.84 ms -0.6% 2.0% 15%
webapi.summary_status_500 118.72 ms 119.38 ms +0.6% 1.8% 15%
job.launch_fail_retry_2k 120.40 ms 121.05 ms +0.5% 1.8% 15%
webapi.sse_tail_pump_4x20k 84.66 ms 84.23 ms -0.5% 1.4% 15%
json.roundtrip_3k 429.31 ms 431.49 ms +0.5% 1.7% 15%
cronexpr.occurrences_1k 10.35 ms 10.40 ms +0.5% 2.9% 96.64% (declared 15%)
resources.monitor_stop_100 232.89 ms 231.71 ms -0.5% 1.4% 25%
config.reload_warm_dir_1k 178.20 ms 177.31 ms -0.5% 1.9% 25%
prometheus.counter_snapshot_2k 95.93 ms 95.46 ms -0.5% 0.9% 15%
pair.qr_encode_14 200.39 ms 199.41 ms -0.5% 1.8% 15%
push.fanout_8x100 117.70 ms 118.26 ms +0.5% 0.3% 15%
cronexpr.parse_complex 17.04 ms 16.96 ms -0.5% 0.9% 58.68% (declared 15%)
mcp.handle_200 117.18 ms 117.73 ms +0.5% 0.4% 15%
webui.rows_diff_500 43.20 ms 43.00 ms -0.5% 2.1% 25%
mem.launch_reap_steady_20x55 0.37 MB 0.37 MB +0.5% 0.0% 15%
state.kv_roundtrip_200 36.24 ms 36.40 ms +0.4% 0.6% 27.59% (declared 15%)
webui.tail_term_2k 44.90 ms 45.10 ms +0.4% 2.9% 25%
webui.boot_rows_500 321.90 ms 323.30 ms +0.4% 4.9% Not enforced
webui.week_walk_500x20 47.50 ms 47.30 ms -0.4% 0.4% 25%
schedule.reseed_100k 155.79 ms 156.42 ms +0.4% 2.8% 15%
state.append_pruned_1k 50.22 ms 50.02 ms -0.4% 0.5% 25%
state.list_records_warm 88.69 ms 88.34 ms -0.4% 0.6% 15%
tui.fleet_paint_15x400 114.63 ms 115.06 ms +0.4% 1.1% 15%
json.roundtrip_orjson_3k 160.20 ms 160.79 ms +0.4% 0.9% 15%
schedule.suggest_slot_5k_x20 57.82 ms 58.03 ms +0.4% 1.6% 15%
webapi.gzip_body_500 43.47 ms 43.31 ms -0.4% 1.2% 23.01% (declared 15%)
webapi.dag_run_poll_1k 69.35 ms 69.60 ms +0.4% 0.3% 25%
webapi.trends_build_5k 118.30 ms 118.73 ms +0.4% 0.7% 15%
config.reload_gc_100k 1.434 s 1.429 s -0.4% 1.9% 25%
state.gc_sweep_2k_streams 29.85 ms 29.96 ms +0.4% 1.8% 50.25% (declared 25%)
loop.stall_jobs_500 15.08 ms 15.03 ms -0.4% 1.0% Not enforced
dag.run_chain_100 136.85 ms 136.38 ms -0.3% 0.5% 25%
dag.fanin_barrier_1k 142.52 ms 142.03 ms -0.3% 0.4% 25%
webui.render_fleet_15x400 18.02 ms 18.08 ms +0.3% 0.5% 25%
webapi.pools_poll_4x130 83.34 ms 83.07 ms -0.3% 1.0% 25%
mem.rss_daemon_10k 142.60 MB 143.05 MB +0.3% 0.1% 25%
tui.table_paint_5k 129.33 ms 129.74 ms +0.3% 0.7% 15%
config.interp_2k 48.19 ms 48.33 ms +0.3% 2.0% 20.75% (declared 15%)
cluster.peer_serve_400 119.35 ms 119.70 ms +0.3% 1.6% 15%
statsd.emit_2k 10.63 ms 10.66 ms +0.3% 1.0% 94.11% (declared 25%)
dag.recover_plan_from_1k 82.62 ms 82.85 ms +0.3% 2.1% 15%
dag.build_layered_10k 37.58 ms 37.69 ms +0.3% 1.7% 26.61% (declared 15%)
webui.radar_walk_500x150 38.00 ms 37.90 ms -0.3% 1.6% 25%
prometheus.first_scrape_after_reload_500 141.68 ms 141.33 ms -0.3% 1.7% 15%
dag.advance_quiescent_chain 55.44 ms 55.58 ms +0.2% 0.7% 25%
webui.render_term_5k 83.70 ms 83.90 ms +0.2% 2.1% 25%
webui.sort_500 42.80 ms 42.70 ms -0.2% 3.2% 25%
webui.timeline_500 43.10 ms 43.20 ms +0.2% 1.0% 25%
dag.plan_claim_10k 11.23 ms 11.25 ms +0.2% 3.3% 89.07% (declared 15%)
config.jobconfig_3k 35.78 ms 35.70 ms -0.2% 0.2% 27.95% (declared 15%)
state.artifact_get_oldest_2k 63.31 ms 63.44 ms +0.2% 0.6% 25%
webui.filter_keys_500 47.30 ms 47.20 ms -0.2% 2.0% 25%
push.seal_500 70.87 ms 70.72 ms -0.2% 1.0% 15%
tui.drawer_paint_5k 74.57 ms 74.73 ms +0.2% 1.9% 15%
schedule.reseed_local_20k 71.75 ms 71.89 ms +0.2% 0.5% 15%
pools.enqueue_burst_200 106.62 ms 106.41 ms -0.2% 1.1% 25%
loop.stall_completions_500 6.58 ms 6.60 ms +0.2% 1.4% 75.94% (declared 25%)
dag.advance_waiting_mapped_1k 95.92 ms 96.10 ms +0.2% 0.4% 25%
webui.ledger_analyze_500x600 53.50 ms 53.40 ms -0.2% 0.9% 25%
job.stream_passthrough_240k 111.74 ms 111.53 ms -0.2% 0.7% 15%
mcp.list_jobs_500 106.32 ms 106.51 ms +0.2% 0.9% 15%
push.seal_xwing_500 100.84 ms 100.66 ms -0.2% 0.6% 15%
cluster.job_owner_2k 41.58 ms 41.51 ms -0.2% 1.8% 24.05% (declared 15%)
state.inventory_2k_streams 73.53 ms 73.41 ms -0.2% 1.3% Not enforced
webui.swim_400x49 62.40 ms 62.30 ms -0.2% 1.4% 25%
cluster.fleet_view_15x400 69.80 ms 69.69 ms -0.2% 1.5% 25%
redact.clean_20k 15.86 ms 15.83 ms -0.2% 1.0% 63.06% (declared 15%)
tui.log_search_20k 10.48 ms 10.46 ms -0.1% 0.8% 95.46% (declared 15%)
dag.advance_quiescent_1k 56.55 ms 56.48 ms -0.1% 0.5% 25%
config.parse_yaml_300 115.18 ms 115.32 ms +0.1% 0.4% 15%
webui.logo_recovery 85.70 ms 85.80 ms +0.1% 0.7% 25%
cluster.poll_round_15x400 122.78 ms 122.91 ms +0.1% 2.1% 15%
dag.run_wide_500 84.02 ms 84.10 ms +0.1% 1.0% 25%
tui.week_rows_500 106.25 ms 106.36 ms +0.1% 1.9% 15%
webapi.activity_build_500 133.54 ms 133.67 ms +0.1% 3.6% 15%
config.parse_dir_cold_200 201.16 ms 201.34 ms +0.1% 0.6% 25%
mem.rss_version 14.42 MB 14.43 MB +0.1% 0.1% 25%
tui.tail_ingest_30k 128.76 ms 128.86 ms +0.1% 0.8% 15%
jobapi.read_path_10k 98.32 ms 98.37 ms +0.1% 0.7% 15%
state.append_1k 76.99 ms 76.96 ms -0.0% 1.6% 64.94% (declared 15%)
tui.view_sort_5k 89.41 ms 89.45 ms +0.0% 2.0% 15%
jobapi.sem_denied_64x10 48.64 ms 48.65 ms +0.0% 2.9% 25%
state.mutate_document_1k 111.04 ms 111.02 ms -0.0% 0.2% 45.03% (declared 25%)
mem.tui_state_5k 2.23 MB 2.24 MB +0.0% 0.0% 15%
mem.parse_peak_rich_20 4.21 MB 4.21 MB +0.0% 0.0% 15%
state.derive_max_warm 116.72 ms 116.72 ms +0.0% 0.2% 15%
json.loads_wide_int_2k 163.40 ms 163.41 ms +0.0% 1.4% 15%
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 70.0 us 70.0 us +0.0% 0.0% 2857% (declared 25%)
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%
mcp.tools_list_bytes 19.95 KB 19.95 KB +0.0% 0.0% 15%
mem.crontab_10k 2.80 MB 2.80 MB +0.0% 0.0% 17.85% (declared 15%)
mem.jobconfig_2k 1.54 MB 1.54 MB +0.0% 0.0% 32.41% (declared 15%)
mem.retired_output_1k 0.12 MB 0.12 MB +0.0% 0.0% 15%
mem.run_history_series_5 9.57 MB 9.57 MB +0.0% 0.0% 15%
mem.jobconfig_envfile_2k 16.30 MB 16.30 MB +0.0% 0.0% 15%
mem.cluster_view_50x400 11.64 MB 11.64 MB +0.0% 0.0% 15%

What's Changed

  • Bump the nix group across 1 directory with 2 updates by @dependabot[bot] in #40

Full Changelog: 1.2.66...1.2.67