Skip to content

1.2.53

Choose a tag to compare

@github-actions github-actions released this 14 Sep 03:25
· 177 commits to main since this release
Immutable release. Only release title and notes can be modified.
  • Fix onMissed recovery after system sleep, long stalls, and forward
    clock jumps in the same daemon process (#17). Stateful jobs recover
    skipped slots through the existing bounded, checkpointed catch-up path,
    preserving concurrency rules, pauses, jitter, and retry isolation.
    A normal start after resume satisfies run-once, including a failed
    attempt; run-all excludes the current scheduled slot from its backfill.
  • Reduce resident memory by freeing superseded log-buffer storage and
    completed passthrough and Windows Event Log payloads, allocating log rings
    only when output arrives, and caching the dashboard directly as bytes
    without a duplicate decoded copy. Add a regression benchmark for memory
    retained by completed log streams.
  • Clarify labels, help and error messages across the web and terminal
    dashboards, CLI, MCP tools and documentation. Use terms such as
    "Workflows", "Schedule load", "Job actions" and "Live logs", and explain
    schedule matches, daylight-saving changes and hashed run times more
    precisely.
  • Generate all eight Dockerfiles from a shared template and distro settings,
    and derive development and frozen-binary dependency files from
    pyproject.toml. CI checks that generated files are current, and container
    and binary builds share the optional-library verification code.
  • Define simple job-option defaults, YAML validation and fingerprint rules
    together, preserving the job identities used by saved retries and reboot
    markers.
  • Fix intermittent binary acceptance-test startup failures by assigning
    distinct loopback ports to the web API and job API.
  • Cap the push extra's newer cryptography release line below version 51,
    raise the binary acceptance tests' pytest minimum to 9.1.1, and update the
    CI artifact-download action to 8.0.1.

Performance vs 1.2.52

Gate: passed. Every metric stayed inside its regression limit.

Both versions ran interleaved on one runner. Time metrics compare the best round of each and memory metrics the median. A negative change means faster or smaller.

A regression gates only when it exceeds both its declared limit and 2 noise bands. The +- column is that band: the round-to-round scatter of the two sides, combined in quadrature.

All benchmark results (99 metrics)
Benchmark 1.2.52 1.2.53 Change Noise +- Gate (eff.)
mem.retired_output_1k 8.98 MB 0.17 MB -98.1% 0.0% 15%
schedule.duplicates_20k 18.94 ms 15.11 ms -20.2% 5.7% 52.8% (declared 15%)
cluster.parse_summaries_6k 72.25 ms 66.54 ms -7.9% 5.6% 15%
loop.stall_metrics_2000 29.11 ms 27.04 ms -7.1% 4.1% info
schedule.pressure_20k_48h 15.23 ms 14.19 ms -6.8% 5.8% 65.68% (declared 15%)
startup.validate_config_100 173.69 ms 180.55 ms +4.5% 2.4% 25%
prometheus.render_500 14.25 ms 14.86 ms +4.2% 15.3% 70.17% (declared 15%)
dag.list_dags_warm 799.8 us 833.2 us +4.2% 5.3% 250.1% (declared 25%)
cronexpr.test_match_200k 19.56 ms 20.38 ms +4.2% 2.6% 51.12% (declared 15%)
fingerprint.job_set_id_10k 215.79 ms 224.70 ms +4.1% 0.4% 15%
dag.plan_claim_10k 14.72 ms 15.31 ms +4.0% 3.8% 67.94% (declared 15%)
schedule.due_pass_100k 13.95 ms 13.40 ms -4.0% 7.4% 71.66% (declared 25%)
loop.stall_jobs_500 16.03 ms 15.47 ms -3.5% 1.5% info
state.gc_sweep_2k_streams 40.82 ms 39.51 ms -3.2% 2.5% 36.74% (declared 25%)
state.depends_on_past_gate 2.32 ms 2.25 ms -3.1% 4.4% 86.05% (declared 25%)
dag.finish_fanin_1k 3.75 ms 3.63 ms -3.0% 5.3% 133.4% (declared 25%)
schedule.suggest_slot_5k 3.54 ms 3.44 ms -2.9% 2.5% 282.1% (declared 15%)
dag.mapped_drain_256 26.58 ms 25.82 ms -2.9% 1.4% 37.62% (declared 25%)
state.append_1k 672.30 ms 653.92 ms -2.7% 19.8% 15%
state.list_documents_600 60.35 ms 58.84 ms -2.5% 4.4% 19.88% (declared 15%)
dag.build_layered_10k 39.50 ms 40.49 ms +2.5% 2.0% 25.31% (declared 15%)
state.lease_renew_200 112.83 ms 110.06 ms -2.5% 3.6% 44.32% (declared 25%)
webapi.jobs_payload_500 44.55 ms 43.47 ms -2.4% 2.6% 22.45% (declared 15%)
startup.import_config 82.20 ms 83.58 ms +2.4% 1.2% 25%
state.list_records_warm 105.38 ms 102.89 ms -2.4% 6.1% 15%
startup.import_cronexpr 24.94 ms 24.51 ms -2.3% 2.4% 25%
webui.render_fleet_15x400 19.01 ms 18.59 ms -2.2% 2.8% 25%
resources.monitor_stop_100 230.07 ms 226.49 ms -1.6% 8.2% 25%
startup.python_baseline 15.35 ms 15.14 ms -1.4% 1.6% info
startup.version 45.99 ms 45.39 ms -1.3% 1.1% 25%
startup.import_daemon 153.82 ms 155.32 ms +1.2% 5.0% 25%
cronexpr.next_simple 30.02 ms 30.39 ms +1.2% 1.9% 33.31% (declared 15%)
cronexpr.next_complex 12.39 ms 12.54 ms +1.2% 1.9% 80.68% (declared 15%)
webapi.sse_burst_20k 40.36 ms 40.81 ms +1.1% 1.8% 15%
state.fanout_gather_100 17.50 ms 17.31 ms -1.1% 5.3% 57.13% (declared 25%)
state.kv_roundtrip_200 161.39 ms 163.13 ms +1.1% 20.0% 15%
redact.adversarial_10k 29.22 ms 28.91 ms -1.1% 2.2% 34.22% (declared 15%)
job.report_noop_100k 39.20 ms 38.79 ms -1.1% 4.9% 15%
dag.adopt_scan_500 65.43 ms 64.76 ms -1.0% 0.7% 30.57% (declared 25%)
tui.log_search_20k 11.71 ms 11.60 ms -1.0% 0.2% 85.39% (declared 15%)
state.derive_max_cold 22.91 ms 22.69 ms -1.0% 0.7% 43.65% (declared 15%)
startup.job_set_id_100 176.37 ms 177.72 ms +1.0% 5.7% 25%
cronexpr.occurrences_1k 10.82 ms 10.71 ms -1.0% 4.7% 92.46% (declared 15%)
redact.secrets_5k 16.28 ms 16.13 ms -0.9% 2.3% 61.43% (declared 15%)
schedule.next_fires_2k 18.08 ms 17.92 ms -0.9% 4.0% 55.3% (declared 15%)
ical.render_500x7d 39.04 ms 38.68 ms -0.9% 1.7% 25.62% (declared 15%)
cronexpr.next_dst_2k 25.50 ms 25.72 ms +0.9% 1.9% 39.22% (declared 15%)
state.artifact_get_newest 13.60 ms 13.48 ms -0.9% 0.9% 36.77% (declared 25%)
tui.drawer_paint_5k 95.64 ms 94.88 ms -0.8% 1.4% 15%
config.interp_2k 61.33 ms 60.89 ms -0.7% 1.4% 16.3% (declared 15%)
loop.idle_wake_rate 12.12 ms 12.03 ms -0.7% 1.0% 41.27% (declared 25%)
schedule.lint_250_zoned 4.48 ms 4.46 ms -0.6% 0.7% 223.1% (declared 15%)
state.boot_rehydrate_populated 37.10 ms 37.33 ms +0.6% 0.9% 26.95% (declared 15%)
mem.gc_pause_100k 146.28 ms 147.16 ms +0.6% 1.8% 25%
dag.advance_quiescent_chain 57.39 ms 57.73 ms +0.6% 3.0% 25%
schedule.reseed_100k 159.66 ms 158.83 ms -0.5% 1.8% 15%
config.reload_warm_include_50 70.24 ms 69.90 ms -0.5% 3.2% 25%
state.list_records_2k 24.96 ms 24.83 ms -0.5% 0.3% 40.07% (declared 15%)
json.roundtrip_orjson_3k 162.95 ms 162.20 ms -0.5% 1.2% 15%
mcp.handle_200 96.81 ms 97.24 ms +0.4% 1.7% 15%
cronexpr.parse_complex 16.93 ms 17.00 ms +0.4% 0.9% 59.06% (declared 15%)
config.reload_warm_50 32.42 ms 32.31 ms -0.4% 2.1% 30.84% (declared 25%)
loop.stall_completions_500 6.74 ms 6.76 ms +0.4% 2.2% 74.22% (declared 25%)
cluster.fleet_view_15x400 68.08 ms 67.86 ms -0.3% 1.5% 25%
redact.clean_20k 16.10 ms 16.05 ms -0.3% 3.5% 62.11% (declared 15%)
schedule.cold_build_100k 366.37 ms 367.45 ms +0.3% 2.1% 15%
mem.rss_daemon_import 36.36 MB 36.47 MB +0.3% 0.3% 25%
config.jobconfig_3k 36.06 ms 35.96 ms -0.3% 1.2% 27.73% (declared 15%)
tui.log_restyle_5k 23.70 ms 23.64 ms -0.2% 3.4% 42.2% (declared 15%)
webui.render_rows_500 13.82 ms 13.85 ms +0.2% 4.8% 25%
tui.dag_graph_paint_2k 213.26 ms 212.83 ms -0.2% 0.8% 15%
job.stream_capture_120k 34.87 ms 34.80 ms -0.2% 1.6% 28.68% (declared 15%)
config.reload_gc_100k 1.469 s 1.472 s +0.2% 1.1% 25%
config.parse_crontab_1k 9.52 ms 9.50 ms -0.2% 1.9% 105% (declared 15%)
json.roundtrip_3k 438.20 ms 437.43 ms -0.2% 1.5% 15%
statsd.emit_2k 11.79 ms 11.77 ms -0.2% 0.2% 84.8% (declared 25%)
push.seal_500 70.86 ms 70.97 ms +0.2% 0.6% 15%
config.parse_yaml_3k 1.301 s 1.299 s -0.1% 0.6% 15%
schedule.reseed_local_20k 73.95 ms 74.06 ms +0.1% 2.5% 15%
mem.rss_version 14.64 MB 14.66 MB +0.1% 0.2% 25%
cluster.job_owner_2k 41.30 ms 41.25 ms -0.1% 1.1% 24.21% (declared 15%)
config.parse_yaml_300 130.66 ms 130.51 ms -0.1% 1.2% 15%
dag.advance_quiescent_1k 59.60 ms 59.55 ms -0.1% 1.5% 25%
state.artifact_list_churn 1.13 ms 1.13 ms +0.1% 4.6% 441.6% (declared 25%)
state.mutate_document_1k 180.05 ms 179.94 ms -0.1% 16.2% 27.77% (declared 25%)
dag.build_chain_10k 23.73 ms 23.71 ms -0.1% 5.8% 42.14% (declared 15%)
state.derive_max_warm 201.70 ms 201.59 ms -0.1% 0.5% 15%
webui.render_term_5k 110.10 ms 110.05 ms -0.0% 1.5% 25%
webapi.auth_scope_20k 71.51 ms 71.48 ms -0.0% 0.8% 15%
dag.list_runs_warm 9.44 ms 9.44 ms -0.0% 1.0% 25%
cronexpr.parse_simple 33.76 ms 33.76 ms +0.0% 1.0% 29.62% (declared 15%)
webui.radar_walk_500 290.0 us 290.0 us -0.0% 1.5% 689.7% (declared 25%)
webui.week_walk_500 2.80 ms 2.80 ms -0.0% 2.7% 71.43% (declared 25%)
webui.log_count_5k 70.0 us 70.0 us +0.0% 0.0% 2857% (declared 25%)
webui.append_line_5k 11.0 us 11.0 us +0.0% 5.9% 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%
mem.crontab_10k 2.80 MB 2.80 MB +0.0% 0.0% 17.85% (declared 15%)
mem.jobconfig_2k 1.56 MB 1.56 MB +0.0% 0.0% 32.12% (declared 15%)

What's Changed

  • Bump the python group with 2 updates by @dependabot[bot] in #16
  • Bump actions/download-artifact from 7.0.0 to 8.0.1 in the github-actions group by @dependabot[bot] in #15

Full Changelog: 1.2.52...1.2.53