pi-dispatch v1.5.0
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.jsongives a repo or folder its own day, week and month job counts, checked beside the global windows and refused before any spend (reasonscope-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
concurrentceiling 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_editanddispatch_limit_deletetools, the panel'smkey,dispatch_limitswith live used counts, arepofilter ondispatch_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.