Skip to content

docs: autonomous orchestrators p1 — shift brief doctrine (AUTONOMY.md 2026-11-03) - #552

Merged
Jammy2211 merged 1 commit into
mainfrom
feature/autonomous-orchestrators-p1
Nov 3, 2026
Merged

Jammy2211 merged 1 commit into
mainfrom
feature/autonomous-orchestrators-p1

Conversation

@Jammy2211

@Jammy2211 Jammy2211 commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Closes #551. Phase 1 of the autonomous-orchestrators epic — doctrine and formats only. Read together with PyAutoLabs/PyAutoMind#522 (merge that one first).

What changes

  • AUTONOMY.md — new H2 "Shift briefs and unattended glance — 2026-11-03" after "Merge authority follows Consequence", five dated H3 sub-rules, each ending in *Revert condition:*:
    1. Shift brief = launch — a brief with review-at: is the launch act; no open brief, no dispatch.
    2. Unattended glance merges — watcher-started close-out only with an independent-session witness, Heart not RED / YELLOW matched by expected-effects:, under merge-cap:, Shadow row appended; never judge, never decision-taken, never a release.
    3. One Mind writer per shift — cites the 09-30 reset --hard, 10-07 autostash markers and prompt_sync_push sweeps.
    4. Goal decomposition files drafts only.
    5. The push-notification test — four classes, ≈1 per shift, a second push is a digest finding.
      Plus a Consumers entry (batch, start_dev, prm) and the hard-invariants first bullet extended.
  • skills/batch/batch.md — brief rule replaces "do not silently substitute your own picks"; writing the brief is the dispatch; workers spawned from the orchestrator's session template, never bare; "Planned verbs" note (batch brief --check phase 2, dispatch / digest phase 3 — not code yet); digest as the review surface, HTML packet opt-in; the "Never" dispatch line admits an open brief.
  • agents/conductors/batch/AGENTS.md — "Brief scope" and "Merge cap" constraint rows; the brief sentence in "It proposes; the human launches".
  • tests/test_autonomy_doctrine.py — 5 new tests pinning the section position, the five dated sub-rules + five revert conditions, the never-judge/decision-taken/release guards, the launch rule, Consumers and the invariant.

Tier: judge — merge mode: human /prm. Never auto-merge.

Witness (run on both branches, laptop, 2026-11-03)

## (a) end_at_deliverable hook payloads (env -u PYAUTO_ALLOW_TIMERS)
{"tool_name":"ScheduleWakeup","tool_input":{"delaySeconds":600}} -> exit 2 | policy end_at_deliverable: sessions end at their deliverable — ScheduleWakeup would outlive the turn.
{"tool_name":"CronCreate","tool_input":{}} -> exit 2 | policy end_at_deliverable: sessions end at their deliverable — CronCreate would outlive the turn.
{"tool_name":"RemoteTrigger","tool_input":{"action":"run"}} -> exit 2 | policy end_at_deliverable: sessions end at their deliverable — RemoteTrigger would outlive the turn.
{"tool_name":"send_later","tool_input":{}} -> exit 2 | policy end_at_deliverable: sessions end at their deliverable — send_later would outlive the turn.
{"tool_name":"RemoteTrigger","tool_input":{"action":"list"}} -> exit 0 | 

## (a') policy/end_at_deliverable.md byte-identical to main
identical (no diff vs origin/main)

## (b) Revert condition count
main: 6  branch: 11
529:## Shift briefs and unattended `glance` — 2026-11-03
539:### Shift brief = launch — 2026-11-03
554:### Unattended `glance` merges — 2026-11-03
575:### One Mind writer per shift — 2026-11-03
590:### Goal decomposition files drafts only — 2026-11-03
601:### The push-notification test — 2026-11-03

## (c1) lifecycle.py check  →  DRIFT (pre-existing, not this task)
  - active/ prompt no registry entry claims: active/chapter2-explanations.md
  ! warning: batches/2026-08-31-pm.md: review-minutes-actual: empty (pre-existing)

## (c2) repos_sync.py --check (branch script, --root ~/Code/PyAutoLabs)
check generated smoke bootstraps: OK
check PyAutoHeart/config/repos.yaml: OK
check PyAutoHands/pre_build.sh: OK
check PyAutoHands/autohands/config/workspaces.yaml: OK
check ensure_workspace_labels.sh: OK
check hygiene conductor coverage: OK
check local checkout origins: OK
check workspace checkouts (manifest ↔ disk): OK
check tenant firewall (organ code): OK
check root AGENTS.md routing table (generated): OK
check WORKFLOW.md owner map (generated): OK
check organism-map blocks (generated): OK
check never-rewrite-history blocks (generated): OK
check remote-session blocks (generated): OK
check end-at-deliverable blocks (generated): OK
check shared-standards blocks (generated): OK
check where-to-file blocks (generated): OK
check public front-door organ tables (generated): OK
check hub organism blurb (organs present): OK
check CLAUDE.md → AGENTS.md pointers: OK
check generated hooks (session-start + end-at-deliverable): OK (50 of 50 checked out, 1 excluded)
check generated Codex hooks: OK
check target-repo layout lints: OK
exit 0
(from the worktree root the only ✗ is COWLS_COSMOS_Web_Lens_Survey, which worktree_create flattens from lens/ to the top level — a layout artifact; this diff touches no scripts/ or repos.yaml)

## (c3) pytest -q (PYAUTO_ROOT/MIND/BRAIN unset)
PyAutoMind:  711 passed in 37.66s
PyAutoBrain: 1409 passed, 1834 warnings in 86.91s (0:01:26)

(c3) note: with the per-task activate.sh env set, one test per repo fails
(test_repos_sync_root_default::test_a_root_that_does_not_hold_this_checkout_is_refused,
test_grouped_organ_consumers::test_hygiene_map_and_heart_board_find_grouped_checkouts).
Both fail identically on canonical main under that env and pass on this branch without it — they read the worktree's
PYAUTO_ROOT, they are not touched by this diff.

(d) PyAutoMind/batches/AGENTS.md now carries a fenced example shift brief, a fenced example digest and the proof-packet block — the phase-2 validator's target.

🤖 Generated with Claude Code

…tch brief rule

Autonomous orchestrators phase 1 (#551): five dated sub-rules each with a
revert condition, Consumers + hard-invariant entries, the batch skill and
conductor brief rule, and doctrine tests pinning the new section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Jammy2211
Jammy2211 merged commit c263c98 into main Nov 3, 2026
2 checks passed
@Jammy2211
Jammy2211 deleted the feature/autonomous-orchestrators-p1 branch November 3, 2026 13:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: autonomous orchestrators p1 — shift brief doctrine and formats

1 participant