Skip to content

pi-dispatch v1.5.0

Choose a tag to compare

@github-actions github-actions released this 30 Aug 05:42
· 288 commits to main since this release

pi-dispatch v1.5.0 ships scoped limits (issue #242): spend and concurrency bounds that attach to a repo or a folder instead of the whole deployment.

What is new

  • Per scope run caps. scoped-limits.json gives a repo or folder its own day, week and month job counts, checked beside the global windows and refused before any spend (reason scope-cap). A noisy repo can no longer empty the daily cap for everyone else, and its refusals never burn global slots.
  • Per scope concurrency. A concurrent ceiling per scope, enforced by deferral through the queue's delayed set: the extra job waits and runs, never dropped, never billed while waiting.
  • The folder guard, on by default. At most one local job per folder at a time, always, with no configuration and no off switch (within the worker process; one worker per docker daemon is the supported shape). Two agents editing one working tree race each other with no gate and no undo, and a cron trigger could reach that race by itself: the scheduler mints the next occurrence at pickup, so a slow run used to overlap its own successor. The specs claiming otherwise were corrected in the same change that closed the hole.
  • Editable live. The confirm gated dispatch_limit_add, dispatch_limit_edit and dispatch_limit_delete tools, the panel's m key, dispatch_limits with live used counts, a repo filter on dispatch_costs, scoped rows on the insights budget panel, and three new doctor checks.

Upgrading

npm install the worker and admin packages (the receiver is unchanged at 1.3.0 and needs nothing). The folder guard is active immediately with no action needed. To add scoped caps or concurrency, set PI_SCOPED_LIMITS_FILE to an absolute path (or press m in /dispatch from the deployment folder) and see docs/scoped-limits.md, including the note about setting the variable even though init and the panel behave as if you had.