Skip to content

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 13:06
· 8 commits to main since this release

loadmaster is made for AI agents as its users. Every line says what happened and, where there is something to do, exactly what to run next; the binary tells an agent how to use it here (loadmaster guide), checks that its tool lets loadmaster work (loadmaster doctor), and replays the machine's history with other weights before it changes them (loadmaster tune). Nothing it could do before was taken away.

Added

  • loadmaster guide: how an agent runs checks here, from the binary itself, so it matches the version installed: the rules (only through loadmaster, one command per call, waiting is normal, what each way a run ends means and what to do, how to stop one's own checks), the machine's capacity and mode, and this repository's tasks, one line each, with their weight, the cores they may start with, resources, the exit codes that pass, their usual run time and their description. It says the rules where there is no config, or a broken one. An instruction file needs one line: Run checks only through loadmaster: before running any, run loadmaster guide and follow it.
  • loadmaster doctor: whether loadmaster works for agents here, and what to change where it does not: this binary against the one on PATH, the configs, LOADMASTER_MAX_WAIT, whether this process may write to the state directory (run by an agent's tool, the sure test of its sandbox), the queue file, Claude Code's sandbox and timeout settings, Codex's sandbox, and whether AGENTS.md or CLAUDE.md tells agents of loadmaster. A finding is problem (exit code 1), note, unknown or ok, as sure as what it rests on, with the file and the snippet to change. It changes no settings itself. --json.
  • loadmaster tune: what other weights or min_weights of this repository's tasks would have done to this machine's checks, replayed through the admission rule itself: the current settings, measured weights (the 90th percentile of the cores each task's passed runs kept busy) and your own --set TASK.weight=N / TASK.min_weight=N. It compares waits, times from getting in line to the end, and the share of the time over capacity, prints the change to try, and states every assumption of its model. --json.
  • A task's description, one line, for the agent choosing a task (the guide, and the error for an unknown task).
  • report --json: the report as data, from the same rows as its table.
  • status --json: same_checkout and usual_run for each job, and recent: the checks of this checkout that ended in the last 30 minutes.

Changed

  • A run names its job and says how it ended: loadmaster: #42 test started, and last, loadmaster: #42 test failed in 2m03s (exit 1; waited 12s): a task's own exit code of 75 or 125 is no longer taken for loadmaster's. One that gives up says what to run, word for word: loadmaster: next: run loadmaster run test -- a.ts again from /repo within 120s: it resumes its place in line. Errors with one remedy end with a loadmaster: next: line (an unknown task gets the closest name).
  • A waiting run says less, but never nothing for long: when it starts waiting, when what it waits for or who holds it changes (at most every 15 s), and at least every 60 s (some tools end a command silent for 5 minutes), each time naming the running jobs it waits behind, how long they have run and how long they usually run. Before, a line every 10 s.
  • status speaks to agents: one line per job with what it needs (cores or weight, for how long and how long it usually runs, where from, (same checkout), and why it waits or how long a parked place is kept), no table padding, PIDs or long paths; then what ended lately from this checkout, for a run whose output was lost.
  • Usual run times and tune count a task by its repository, which all its worktrees share, and by its setting and arguments. The history records each check's checkout, workload and resource limits.
  • LOADMASTER_QUIET=1 leaves out the lines that only inform, so a task's stderr passes through as it is (for scripts: a tool that ends silent commands would end a quiet wait).

Breaking changes

  • The words of run, status (text) and errors changed. status --json keeps format 2 and only gained fields.
  • run's stderr now has two lines of its own around the task's output; set LOADMASTER_QUIET=1 for none.

Install

mise use -g github:ktanaka101/loadmaster@0.16.0

Or download the archive for your platform below: macOS (Apple Silicon and Intel) and Linux (x86_64 and arm64, statically linked).