Skip to content

Armonia · Server-enforced campaign authorization and budgets #1880

Open

Description

@aarontrowbridge

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.

Source

Activity

  1. aarontrowbridge commented on Oct 26, 2026

    @aarontrowbridge
    MemberAuthor

    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, expiry and lease_generation.

  2. changed the title [-]Team engine · Server-enforced campaign authorization and budgets[/-] [+]Armonia · Server-enforced campaign authorization and budgets[/+] on Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

hitlNeeds human review before merge

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions