Repository navigation
feat: autonomous orchestrators p3b — real dispatch (claude --bg workers, stall parking, token budget) - #558
Merged
Conversation
…n liveness, stall parking, token budget, sandbox fence until 3c Autonomous orchestrators phase 3b (#557). Worker permission mode default auto (human decision 2026-11-03); bypassPermissions refused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #557. Phase 3b of the autonomous-orchestrators epic — real
claude --bgworkers on the 3a watcher core. Read with PyAutoLabs/PyAutoMind#525 (merge that one first).What changes
worker_template.md(new) — the one prompt every real worker starts from:Use the start-dev skill. <path> --auto, the brief path, end-at-deliverable (no timers), never commit to PyAutoMind directly, write<lease>/<task>.donewith the PR URLs._orchestrator.py—session_command()→claude --bg --name shift:<task> --permission-mode <mode> <prompt>(a test pins it is never bare);RealSpawnerparses the printedbackgrounded · <id> · <name>id into the lease.AgentsViewreadsclaude agents --json --allonce per tick:working→ heartbeat;blocked→stalled_since, parked after 15 min (never killed, never re-dispatched);done+ marker → released;donewithout → crashed (3a's re-dispatch-once).transcript_tokens()sums input + output + cache-creation from the worker's local transcript (named by the fullsessionId); the brief'stoken-budget:refuses the next spawn once spent. Real dispatch requiressandbox: yesuntil 3c (one Mind writer)._brief.py—worker-mode:(defaultauto, human decision 2026-11-03;bypassPermissionsrefused by name) andsandbox:.AGENTS.md"The watcher" — real mode, stall parking, token budget, the trust requirement.tests/test_orchestrator_dispatch.py(17 + 1 opt-in live); the 3a "refused until 3b" test now asserts the sandbox fence.Found against the real CLI (2.1.316) while witnessing — already handled
claude --bgignores--session-idand assigns its own; workers are tracked by the printed short id, the fullsessionIdcomes fromclaude agents --json(only needed to find the transcript).working, notrunning; anything butblocked/donereads as alive.claude --bgrefuses an untrusted folder at once (exit 1, "Workspace not trusted") — a fast failure, never a stall; the spawn leaves no lease. Workers launch from the workspace root; task worktrees under the-wtroot are untrusted by default — trust that root once by hand if workers are ever launched there.Tier: judge — merge mode: human
/prm. Heart YELLOW reason set acknowledged by the human at ship.Witness
🤖 Generated with Claude Code