Skip to content

SystemsLab 149.0.0 ​

Added ​

  • Experiments that sit in the work queue without ever being scheduled now time out and transition to a new Timeout terminal state instead of remaining queued indefinitely. The deadline is driven from inside the experiment workflow itself using a new queue_timeout config value (default 7 days), captured into each task at submission time.
  • The shell action spec gains a cgroup field. When set, the runner creates a named cgroup v2 sub-directory under the job's cgroup and moves the shell process into it, making it possible to isolate sub-processes for independent resource accounting.
  • Two new server-side MCP tools surface metric relationships: analyze_correlation computes Pearson cross-correlation (with detrending, normalization, and lag detection) between two PromQL expressions, and find_correlations sweeps all metrics in a time range and returns the top N ranked by absolute correlation with a target expression. Both honour the same experiment/job label scoping and idelta→irate rewrite as query_range.

Changed ​

  • OAuth tokens are no longer stored in the macOS Keychain. Tokens now live exclusively in ~/.config/systemslab/oauth/<host>.json (mode 0600), eliminating the repeated unlock prompts that previously fired on every read and write. Automatic refresh via refresh_token continues to work as before.

Fixed ​

  • The shell action binary now propagates the child process's exit code instead of always exiting 0, so failing shell commands properly fail their job.
  • CLI commands that take --systemslab-url now actually honour the flag. Previously the fallback URLs from /etc/systemslab/server.toml and /etc/systemslab/systemslab.toml were merged in a way that overrode the user-supplied value, so commands like systemslab logout --systemslab-url X would silently operate against a different host while reporting success.
  • The MCP submit_experiment tool now forwards the spec's priority field to the server, matching the behaviour of the submit CLI command. Previously priorities set in MCP-submitted specs were silently dropped.
  • The MCP get_logs tool no longer hangs when called on an experiment whose run is still Unscheduled or Scheduled, or whose run reached a terminal state without writing a logs.json artifact. Both cases now return zero events immediately instead of blocking the server.