Skip to content

feat: autonomous orchestrators p4a — shadow shifts + pilot ledger #570

Closed

Description

@Jammy2211

Overview

Phase 4a of the autonomous-orchestrators epic. The pilot opens with two shadow shifts (the orchestrator proposes and digests, the human works as today) to set the baseline; this slice builds that mode and the ledger the pilot is measured in.

Plan

  • Brief key shadow: yes|no (brief --check refuses anything else). Under yes each tick plans inside the brief and records proposals (prompt, tier, pick reason, proposed: true) in counters.json — no lease, no worker — capped by max-sessions:.
  • Digest: proposals marked proposed (shadow) under brief work / backlog picks (backlog keeps its why:); proof packets "none — shadow shift"; every counter. brief --check does not want a packet for a proposal.
  • Pilot ledger at batches/pilot/pilot.md (subfolder: lifecycle.py, _batch.py and _brief read every batches/*.md as a record — human-approved deviation from the epic's batches/pilot.md). Created by the Mind PR; finish_shift appends one row per shift through the one Mind writer; review-minutes-actual and overrules land as ? for the human at check-in.
  • Docs: batches/AGENTS.md, conductor AGENTS.md, batch skill.
  • Witness: fake shadow shift → 0 workers, proposals with reasons, digest lists them; real-git → pilot.md gains exactly one row matching the header; second finish adds none; shadow: maybe refused; pytest green.

Tier: judge — merge mode: human /prm

Detailed implementation plan
  • PyAutoBrain: agents/conductors/batch/_brief.py (is_shadow, check), _orchestrator.py (_tick_locked shadow branch, finish_shift pilot row), _digest.py (proposal lines, packet exemption, pilot_row), tests tests/test_orchestrator_shadow.py.
  • PyAutoMind: batches/pilot/pilot.md, batches/AGENTS.md.

Suggested branch: feature/autonomous-orchestrators-p4a

Original Prompt

Click to expand starting prompt

Autonomous orchestrators phase 4a: shadow shifts + the pilot ledger (batches/pilot.md)

Type: feature
Target: PyAutoBrain
Repos:

  • PyAutoBrain
  • PyAutoMind
    Difficulty: medium
    Autonomy: human-required
    Priority: high
    Status: formalised
    Filed: 2026-11-04
    Epic: autonomous-orchestrators
    Phase: 4
    Consequence: judge
    Witness: a fake shadow shift (shadow: yes) spawns zero workers while its counters record what it would have dispatched with each pick reason; its digest lists those proposals; finish_shift appends exactly one well-formed row to a new PyAutoMind/batches/pilot.md table through the one Mind writer; batch brief --check accepts shadow: yes|no and refuses any other value; pytest PyAutoBrain/tests -q green
    Review-minutes: 20
    Unattended: never
    Lane: local-dev

Parent: draft/feature/pyautobrain/autonomous_orchestrators_epic.md, phase 4 ("Dev orchestrator pilot", "What the pilot measures", "Success measures (pilot)"); slice 4a of 4a–4c. Builds on phase 3 (complete/2026/11/autonomous-orchestrators-p3a.md … -p3d.md).

The pilot opens with two shadow shifts: the orchestrator proposes and digests, the human works as today, and the minutes are logged as the baseline. This slice builds that mode and the ledger the whole pilot is measured in.

  • shadow: yes (brief key, batches/AGENTS.md): the watcher runs the same plan inside the brief and records each proposal (prompt, tier, pick reason) in counters.json, but spawns nothing and takes no lease.
  • Digest: a shadow shift's digest lists the proposals under brief work and backlog picks (marked as proposals, not work), with every counter.
  • batches/pilot.md: one row per shift, appended by finish_shift through the one Mind writer. Columns are the epic's pilot measures: slot, shadow or live, review-minutes-planned, review-minutes-actual, verified merges, glance auto-merges, reverts, overrules, pushes, drafts filed, tokens, workers crashed. The human fills review-minutes-actual and overrules at check-in, so the row lands with those cells blank and a check-in step names them.
  • Docs: batches/AGENTS.md, the batch conductor AGENTS.md.

Tier: judge — merge mode: human /prm.

Activity

  1. Jammy2211 commented on Nov 4, 2026

    @Jammy2211
    ContributorAuthor

    Library PRs created — PyAutoLabs/PyAutoMind#532 (merge first) + #571. Judge tier, human /prm.

  2. Jammy2211 commented on Nov 4, 2026

    @Jammy2211
    ContributorAuthor

    Shipped — merged 2026-11-04 by human /prm: PyAutoMind#532 then PyAutoBrain#571. CI at head: Brain pytest 3.12/3.13 green; Mind dashboard refresh + privacy green, spawn-drift skipped (path-filtered).

  3. Jammy2211 commented on Nov 4, 2026

    @Jammy2211
    ContributorAuthor

    Correction: the comment above was posted early — PyAutoBrain#571 had not merged (GitHub returned errors on the merge). Re-opened until the merge is confirmed.

  4. Jammy2211 commented on Nov 4, 2026

    @Jammy2211
    ContributorAuthor

    Shipped — PyAutoMind#532 merged by /prm; PyAutoBrain#571 merged 2026-11-04T10:04Z via the GitHub UI after repeated GitHub server errors on the API merge path. CI at head green (Brain pytest 3.12/3.13; Mind dashboard refresh + privacy, spawn-drift skipped).

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions