Why: the earlier disable was a misdiagnosis — ActionRequiredError
looked like a monthly quota cap, but the real cause was the DM
executor not passing --model auto, so cursor fell back to a
quota-limited model. PR #644 (deps/development-manager) fixed the
executor; the quota itself was never exhausted.
Evidence: AGENT-EXECUTION.md validate ok; #644 in main since d2035c7.
Impact: restores cursor as first implementation/repair candidate.
Refs: AGENT-EXECUTION.md; PR #644
5.1 KiB
Project Agent Execution
Project-local execution routing configuration. This document is the single
authority for which Agent CLI profiles may implement, repair, test, or review
bounded units. Human-readable notes may appear outside the machine block; the
parser accepts exactly one agent-execution fenced block.
U3's execution controller and U4's project wiring are integrated. This file is
the execution-routing authority for implementation, repair, test, and review.
Normal implementation, repair, and test routes stay Cursor, Antigravity
(agy), and PI. Each of those profiles may be attempted up to
max_attempts_per_profile, which is exactly 3 whenever emergency_profile
is configured. Only after those candidates safely exhaust their attempts does
the enabled emergency codex profile run once. Codex remains out of the three
normal role lists and may also appear in review. fallback_to_host is
never: the controller does not emit host-fallback-authorized and does not
increment host fallback authorizations. Safe exhaustion without an emergency
candidate ends unavailable or blocked, and that result does not authorize
the host to write the unit. The legacy value all-unavailable remains
parseable and likewise grants no host write authority. Cursor uses
cursor-agent-stable. model: auto makes Cursor receive an explicit
--model auto; the other CLIs omit the model flag and use their configured
default. Any other value is passed to that CLI as its model selector. The
integration block declares the host-exempt paths and the transport, admission,
and cleanup entry points.
schema: agent-execution/v1
execution:
fresh_process_per_unit: true
permission: run-everything
fallback_to_host: never
max_parallel: 3
timeout_seconds: 7200
idle_timeout_seconds: 600
summary_bytes: 16384
raw_output_bytes: 10485760
max_attempts_per_profile: 3
emergency_profile: codex
roles:
implementation: [cursor, antigravity, pi]
repair: [cursor, antigravity, pi]
test: [pi, antigravity, cursor]
review: [pi, antigravity, cursor, codex]
profiles:
cursor:
adapter: cursor
executable: cursor-agent-stable
model: auto
# Re-enabled 2026-10-20: the earlier disable was based on a misreading
# of ActionRequiredError — the real cause was the DM executor not
# passing --model auto (cursor fell back to a quota-limited model).
# Fixed by PR #644 (deps/development-manager pin); quota itself is fine.
enabled: true
antigravity:
adapter: antigravity
executable: agy
model: auto
enabled: true
pi:
adapter: pi
executable: pi
model: minimax-cn/MiniMax-M3
enabled: true
codex:
adapter: codex
executable: codex
model: auto
enabled: true
integration:
exempt_paths: [".task/**", "docs/superpowers/specs/**", "docs/superpowers/plans/**"]
transport:
command: scripts/agent-exec apply
admission:
command: scripts/agent-exec admit
cleanup:
command: make task-finish
Model preferences (project choice)
Generic rules for bounded packets, context budgeting, phase handoff and requested-versus-effective model identity live in the shared standards/agent-execution.md and workflows/handoff.md; project procedure is in policy/delivery.md. This section records only this project's choices.
- Planning, design and implementation plans: Codex or Claude when available, in the host or a fresh CLI session. This is a preference, not a routing role.
- Bounded implementation, repair and test units: the existing normal
candidates in the configured role order above. Requested models:
- PI:
minimax-cn/MiniMax-M3, passed as--model provider/id. PI actual events have reportedminimax-cn/MiniMax-M3and the local offline catalog lists that profile; each run still records the effective model from that run's events. - Cursor:
auto, passed explicitly as--model auto(Cursor Auto). - agy: Gemini 3.8 Flash is requested, but its exact selectable model ID and
effective identity are
NOT_VERIFIED(theagymodels query needs a login that was not available). The profile therefore staysmodel: autountil an observed model ID exists; do not claim Gemini 3.8 Flash is active.
- PI:
- Assigning a different candidate or model to a unit needs a concrete,
task-specific reason recorded in the task record, and stays within the
existing roles and candidate lists. It is not a silent permission or routing
change. Role lists, attempt limits, timeouts, output limits, the single
Codex emergency attempt, stage isolation and
fallback_to_host: neverare unchanged by these preferences. - A requested model is prompt/config intent. Only the model reported in a
run's actual event envelope counts as effective; when the CLI does not report
it, record
not-observable. Unknown context capacity, a missing agy login or missing automatic compaction are recorded facts, not global fail-closed conditions.