Repository navigation
Armonia · Server-enforced campaign authorization and budgets #1880
Description
Important
Problem — Unattended campaigns are bounded only by prompts and opt-in launch-gate warrants. Cost is tallied after the fact, so a runaway agent spends shared inference and compute before anything stops it.
Approach — A campaign authorization record — owner, scope, budget, tool allowlist, device access level, stopping conditions — enforced by the server before every provider turn, tool call, and job submission. Exhaustion pauses the session and notifies its owner.
Scope — in: campaign record and lifecycle (create, approve, pause, resume, close), binding sessions to a campaign, pre-turn and pre-tool checks, consumption accounting, exhaustion behavior. out: delegation budgets (next slice), site-side enforcement (execution-site slice uses this check).
Assumptions — Sessions carry owner attribution; cost and turn counts are observable per provider call.
Acceptance Criteria
- A session bound to a campaign whose budget is exhausted does not start another provider turn, and its owner is notified.
- A tool outside the campaign's allowlist is refused even if the agent's own permissions allow it.
- A job submission whose device access exceeds the campaign's level is refused.
- A stopping condition (wall time or turn count) pauses the campaign when reached.
- Consumed totals match the sum of recorded provider and tool usage for the campaign.
- Only the owner can raise a budget, and the raise is recorded with who and when.
Testing Decisions
Extend the permission service tests and the session runner tests with a pre-turn budget check; extend capability-warrant tests for device access.
Key Decisions
- Enforcement is server-side; the model is told about limits but never trusted to honor them.
- An in-flight provider turn is allowed to finish; the next one is refused.
Data Contracts
- Campaign: id, owner, environment/project scope, budget (cost, turns, solves, wall time), tool allowlist, device access (none | ro | rw), stopping conditions, consumed totals, state.
Constraints & Invariants
- Sessions without a campaign keep today's behavior in single-user mode; in a team deployment, unattended mode requires a campaign.
Prior Art
- The Location-scoped permission service, subagent permission derivation, capability warrants and the launch gate, the coordination warrant stub.
Activity
docs(spec): rd-system v2.1 rev 5 — autonomy charter, critic panels as…
aarontrowbridge commentedon Oct 26, 2026
Shape note for this record: see the #1873 comment above. Campaign authorization becomes the shared Authority object (from #1891 A12), with three added fields:
charter_class,expiryandlease_generation.[-]Team engine · Server-enforced campaign authorization and budgets[/-][+]Armonia · Server-enforced campaign authorization and budgets[/+]