Repository navigation
1.2.53
·
177 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
- Fix
onMissedrecovery 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 satisfiesrun-once, including a failed
attempt;run-allexcludes 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
cryptographyrelease 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