Skip to content

WS5 — Campaign machinery: ledger entity, warrant bounds, fleet dispatch, scheduled runs #373

Description

@aarontrowbridge

WS5 — Campaign machinery: ledger entity, warrant bounds, fleet dispatch, scheduled runs

Important

Problem — The unit of autonomy (parent #368) is the campaign, but the run ledger knows only plans and solves, warrants bind to launches not research programs, and fleet dispatch is a set of ad-hoc ssh-nohup scripts. Unattended research needs the campaign as a first-class, warrant-bounded entity.

Approach — Add the campaign entity to the run ledger with warrant-minted bounds (max samples, tier, spend; promotion always stage-only). Fleet dispatch verbs accept a campaign reference. Scheduled runs (Notturno) carry campaigns and produce staged, reviewable output. The slice closes with one QEC campaign running end-to-end through telaio (WS4), staging survivors for human review.

Scope — in: campaign ledger entity, warrant extension, fleet dispatch integration, scheduled campaigns, the end-to-end QEC campaign criterion · out: promotion automation (never in v1), concurrent scheduler work beyond what the campaign needs.

Acceptance Criteria

  • A campaign record exists in the ledger: hypothesis, search-space reference, budget, warrant reference, promotion rule, role→endpoint qualification snapshot
  • Launches outside a live warrant are refused with a one-line reason; warrant bounds are enforced at launch time
  • Fleet dispatch verbs accept a campaign reference and record dispatches against it
  • A scheduled campaign produces staged, reviewable output (survivor notes, gate verdicts) without human attendance
  • One QEC campaign runs end-to-end through telaio, staging survivors; promotion to the codes board requires human ingest

Testing Decisions

Extend the run gate's tests to campaign warrants (refusal paths first); scheduler tests for campaign jobs; the end-to-end criterion runs as a dry-run integration test plus one live gated run. Extends #372's campaign fixtures.

Key Decisions

  • Warrants mint campaign bounds, not just launches; the campaign record snapshots the qualification state it launched with (provenance for later trust audits).
  • Promotion is stage-only in v1 — no warrant may carry promotion rights (parent invariant).

Constraints & Invariants

  • Single-writer discipline on the ledger (existing pattern); fleet signal queues remain the only cross-machine control channel.

Prior Art

  • The warrant system and plan ledger; the fleet session registry and signal queues; the critic/planner subprocess machinery; the QEC hunt fleet scripts (the ad-hoc pattern being formalized); Notturno scheduled jobs.

Source

Part of #368 · Blocked by #369, #372 · design-of-record: vault spec note spec-20260813-162300-autoresearch-studio

Activity

  1. aarontrowbridge commented on Aug 17, 2026

    @aarontrowbridge
    MemberAuthor

    Design input from the Piccolo-2.0 / autoresearch design session (2026-08-17; vault memo note-20260817-autoresearch-pulse-stack-amico-run-rethink, v2.1): amico-run-the-launcher is dissolving — five verbs remain (AUTHOR · EXECUTE · VERIFY · REMEMBER · METER), the run-dir contract moves into the Piccolo spec runner, and the binary shrinks to amico cloud + bookkeeping. One load-bearing consequence for THIS issue:

    Anchor warrant enforcement where it survives the dissolution, not in the local launch path. 'Launches outside a live warrant are refused' should be refused at (1) the cloud service at submission (server-side budget metering is the METER verb — the one enforcement point that's real for remote fleets), and (2) the ledger/ingest gate (stage-only promotion already lives there). A local amico-run refusal is advisory at best — agents have shells; anything enforced client-side is honor system with extra steps. If WS5 wires refusal into the CLI launch path, the dissolution deletes it later; if it wires into server + ledger, WS5 survives untouched.

    Same for fleet dispatch: the durable shape is the researcher role's loop (Notturno scheduling) submitting specs/scripts through the thin cloud client — dispatch is an agent loop plus server-side budgets, not new launcher verbs. Campaign records should reference derived spec records (canonical projection hashed at run start — the record doctrine: scripts author, specs record); the Piccolo side lands derivation + ResultSpec as P6a of the 2.0 program, timed before the end-to-end QEC criterion here needs it. The pack table in the memo shows qec instantiating the same five verbs — your end-to-end criterion is the qec column of exactly that.

  2. jeonghun-jj-lee commented on Sep 12, 2026

    @jeonghun-jj-lee
    Contributor

    Closing — this Aug 13 workstream PRD has been superseded by more specific issue waves (the amicissimo split #747, director-core, codesign SEAMs, and the Sep 5-7 architecture issues). The work described here is tracked more precisely in newer issues.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    afkImplementable without human interaction

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions