Skip to content

Unified autonomous steering — Reference ​

See Bounded autonomy, same-author context fallback and human escalation for the shared visual model.

See Persisted feedback, explicit decision and confirmed effect for the shared visual model.

Reference for the coordinator-owned steering path. Every correction signal is persisted, surfaced, decided by the coordinator, and then executed according to that decision.

For the implementation flow, see the deep dive. For operator behavior, see the experience guide.

Routes ​

Method & pathBodyReturnsNotes
POST /api/runs/{coordinatorRunId}/steerkind, optional target_child_run_id, instructionSteering directive viewHuman steering entry point. pause is not supported.
POST /api/runs/{coordinatorRunId}/assembly/reviewapproved, request_changes, declined, feedback, optional target filesAssembly review decisionHuman review still posts to the review gate, but correction feedback is routed through unified steering.

The separate Assembly Gate route was removed; correction feedback uses unified steering through the coordinator.

Steering signal fields ​

SteeringSignal is the internal normalized contract (apps/Agentweaver.Api/Coordinator/SteeringSignal.cs:29).

FieldValues / typeMeaning
CoordinatorRunIdstringCoordinator run that owns the decision.
Sourcehuman-review, rai, rubberduck, build-test, agent, coordinator, stepWhere the feedback came from.
TargetScope{ kind, subtaskIds?, childRunId? }Run, work-plan, or subtask target.
FeedbackstringReasoning context for the coordinator; not parsed for hidden routing.
Severityadvisory, request-changes, blockingHow strong the signal is.
Verbstop, send, redirect, amend, dispatch-freshDelivery verb.
TreeHashstring or nullAggregate tree hash the feedback was produced against.
TargetFilesstring array or nullExplicit hints only; never inferred from prose.
CreatedBystringUser, agent, or gate id.

Decision directions ​

DecisionMeaningEffect
in_place_steerA: context-preserving correctionResume the same child run/session/worktree with revision feedback.
dispatch_freshB: conscious fresh dispatchReset selected subtasks and launch fresh child runs. Always preceded by coordinator.steering_decision.
proceedC: proceed or terminalContinue to review or record a terminal/blocked result.
advisoryD: no-opSurface the signal and take no corrective action.

A released pod can make a child non-resumable, choosing fresh dispatch over in-place steering. Lack of another author does not itself force escalation: with accumulated feedback/context, a fresh same-author run can preserve prior work without changing lockout. Without context, escalate to human review. Autonomous budgets still bound retries.

Events ​

EventWhen it firesPayload
coordinator.steering_receivedA signal from any source is persisted and queued.directiveId, source, severity, verb, targetScope, feedback, treeHash
coordinator.steering_decisionThe coordinator records its A/B/C/D decision before executing the effect.directiveId, decision, rationale, subtaskIds, attempt
coordinator.steeringLegacy directive lifecycle event for human steering.directiveId, kind, targetChildRunId, status, instruction

The decision values distinguish a fresh dispatch, an in-place steer, normal progress, and advice that takes no action. Clients can use the rationale and target subtask ids to explain the result.

Failure and recovery semantics ​

CaseObservable resultRecovery behavior
Transient in-place revision commit failureThe child stays on the same run/worktree while commit is retried.AgentTurnExecutor retries CommitChanges up to 3 attempts before surfacing failure.
Persistent child executor failure during in-place revisionChild run terminalizes with run.failed reason the bounded { message, errorCode, retryable } public failure contract and the corresponding workflow.step is failed.The coordinator preserves the steering instruction and emits a visible dispatch_fresh steering decision for failed targets.
Crash before revision launch or before first confirmed effectThe steering directive remains outstanding; it is not marked applied.Recovery re-drives unconfirmed targets. Confirmed child effects are skipped so successful children are not re-injected.
Successful in-place revisionSame child run/worktree re-enters assembly after reaching assemble_ready or completed.The directive is marked applied only when every target is assembly-eligible and every target child has a confirmed SteeringRevisionExecution marker.

the bounded { message, errorCode, retryable } public failure contract is terminal for coordinator child runs. It replaces the previous uninformative watch_stream_completed_without_terminal_event path for child executor throws, so operators see the executor that failed and the timeline gets a failed workflow.step.

Budgets ​

BoundDefaultSource
Per-subtask recovery attempts3CoordinatorSteeringService.MaxRecoveryAttempts
Per-plan steering iterations6CoordinatorSteeringDecider.DefaultMaxPlanSteeringIterations

When autonomous budgets exhaust, the decider chooses proceed and assembly escalates durably to in_review, stage review, with the run awaiting review. It does not latch terminal assembly-blocked. Human request-changes resets the autonomous budgets as a new supervised mandate; HumanReviewRoundTrips is telemetry, not a cap.

Status and persistence ​

State / recordPurpose
SteeringDirectiveStores the signal, status, chosen action, attempt, source/severity/scope, and tree hash.
assembly_steering work-plan statusDecision-in-progress lease for assembly-originated feedback.
SteeringRevisionExecutionAttempt-specific marker proving an in-place revision effect ran.
RecoveryAttempts on subtaskPer-subtask loop bound.
SteeringIterations on work planPer-plan loop bound.

A human redirect/amend/send sent to POST /api/runs/{id}/steer while the coordinator is parked at the assembly human-review gate (awaiting_review) is delivered straight into the review gate rather than the child-turn queue (#226): redirect/amend become a request-changes decision on the same path as POST /assembly/review (settling relayed), and send becomes an advisory note (settling applied). When the gate is armed on a different API replica the directive is durably persisted with the terminal status deferred for the owning pod's poller to drain, and the endpoint answers 202 Accepted. See resilient assembly review.

See also ​

Diagram details and constraints
ElementContract
titleRejected work keeps useful context
takeawayA steering decision chooses the effect; rejection does not always rotate the author.
group-title-0FEEDBACK AND SCOPE
group-title-1BOUNDED DIRECTION
group-title-2AUTHOR CONTINUITY AND HUMAN ESCALATION
Gate request-changesGate request-changes
Gate request-changesStructured target-file hints
Gate request-changesnot prose-inferred blame
Implicated + dependentImplicated + dependent
Implicated + dependentRebuild closure without blame
Implicated + dependentstructured TARGET_FILES
Signal + decisionSignal + decision
Signal + decisionPersist explicit direction
Signal + decisionaccumulated context
In-place revisionIn-place revision
In-place revisionSame author and session
In-place revisionno reset-to-pending
Fresh dispatchFresh dispatch
Fresh dispatchScoped author selection
Fresh dispatchhandoff with context
No alternate authorNo alternate author
No alternate authorContext permits same author
No alternate authorbounded conscious fallback
Human escalationHuman escalation
Human escalationNo context or budget left
Human escalationdurable review request
Human decisionHuman decision
Human decisionApprove, change or decline
Human decisionno wall-clock timeout
Fresh autonomous budgetFresh autonomous budget
Fresh autonomous budgetOnly human changes reset it
Fresh autonomous budgetno human-round-trip cap
e0scope
e1signal
e2resume
e3fresh
e4no alt
e5context
e6no context
e7Proceed
e8await
e9changes
e10retry
groupsFEEDBACK AND SCOPE; BOUNDED DIRECTION; AUTHOR CONTINUITY AND HUMAN ESCALATION
Diagram details and constraints
ElementContract
titleOne signal, four explicit effects
takeawayDurable decisions choose resume, fresh dispatch, human escalation or advisory continuation.
group-title-0NORMALIZED FEEDBACK AND DURABLE DIRECTIVE
group-title-1DECISION AND RESUMABILITY
group-title-2ALTERNATIVE EFFECTS
Gate feedbackGate feedback
Gate feedbackImplemented assembly sources
Gate feedbackstructured scope
SteeringSignalSteeringSignal
SteeringSignalNormalize reason and targets
SteeringSignalone decision contract
Persist directivePersist directive
Persist directiveReceived event is visible
Persist directivequeued / durable
Bounded deciderBounded decider
Bounded deciderBudget + attempt resumability
Bounded deciderhuman-only budget reset
Persist decisionPersist decision
Persist decisionDecision event follows commit
Persist decisionexplicit direction
In-place steerIn-place steer
In-place steerKeep author and session
In-place steerattempt-specific proof
Fresh dispatchFresh dispatch
Fresh dispatchConscious fresh execution
Fresh dispatchbounded same-author fallback
Durable human parkDurable human park
Durable human parkProceed / exhausted budget
Durable human parknot a failure terminal
Advisory continuationAdvisory continuation
Advisory continuationNo child-state reset
Advisory continuationseparate from in-place
e0normalize
e1submit
e2decide
e3commit
e4resume
e5fresh
e6Proceed
e7advisory
groupsNORMALIZED FEEDBACK AND DURABLE DIRECTIVE; DECISION AND RESUMABILITY; ALTERNATIVE EFFECTS