Skip to content

A spending cap can only be set on the command line: not in the builder, on a host, or shown on the job page #45

Description

@aitianshi

Priority

high

Components

  • app/nullius (backend)
  • app/web (routes)
  • templates and static files
  • docs and the site
  • catalogue (benchmarks, agents, capabilities)
  • the standard (ports, kits, relay, runs)
  • CI, workflows and skills

Today

A spending cap exists only on the command line: nullius standard run --max-usd USD (#14). A run started from the builder's Review step has no cap, on this machine or on a host. A capped job's result.json carries budget (the cap, what was spent, whether it stopped the run, the units cut off and those not run), but no page shows it: a unit the cap cut off reads as an API error with SpendingCapError beside it, and the units never begun appear nowhere. With shards, each shard's cap is its own and merge drops budget from the merged result.

Wanted

  • A cap in the builder for a Nullius recipe, sent with the run on this machine and on a host; not offered for a Harbor recipe, whose calls do not pass the relay.
  • One cap for the whole run: its jobs that call a model (each dataset with each participant, on each machine) take equal shares, and Review says the cap and each job's share.
  • The merged job of a launch says the cap and what all its shards spent.
  • The job page says the cap stopped the run, what was spent, and which units were cut off or not run.

Acceptance

  • A Nullius recipe can be given a spending cap in the builder, and the run it starts, here or on a host, stops at it as the command line's does.
  • A Harbor recipe is not offered the cap.
  • A run of several jobs (participants, datasets, shards) shares the cap in equal parts, and the merged job's result carries the cap and the total spent.
  • The job page of a capped run shows the cap, what was spent, and, when the cap stopped it, the units cut off and those not run.

Dependencies and related

Follows #14 (the cap on the command line) and #38 (the user's price list, which a cap books calls from). A cap per unit is #47: it changes how a unit counts, which is to be decided first.

Activity

  1. self-assigned this
    on Nov 10, 2026
  2. changed the title [-]A spending cap can only be set on the command line: not in the builder, on a host, per unit, or shown on the job page[/-] [+]A spending cap can only be set on the command line: not in the builder, on a host, or shown on the job page[/+] on Nov 10, 2026
  3. aitianshi commented on Nov 10, 2026

    @aitianshi
    CollaboratorAuthor

    Implemented in #48, stacked on #46: the cap in the builder's Limits step, shared in equal parts by the run's jobs, on this machine and on a host; the job page and the live board saying it; merge adding the shards' up.

    #48 targets #46's branch, so this issue's Development panel will show it once it targets main. The cap per unit is now #47.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions