feat(dispatcher): opt-in sequential plan-and-execute strategy #254

Merged
severus-snape merged 2 commits from feat/sequential-planned-dispatch into main 2026-11-04 19:52:43 +00:00
Collaborator

Opt-in built-in dispatcher strategy sequential v1 (smallest end-to-end slice). direct stays default and behaviourally unchanged (worker turn extracted to runTurn).

  • Tool-free ephemeral planner (assessmentPurpose: dispatch-plan) on the exact dispatcher role; closed JSON plan, 1-6 steps, lowest adequate role per step; single simple step allowed; malformed -> visible block.
  • Plan/index/outcomes persisted in the execution checkpoint before execution; per-step unsafe intent with exact route.
  • Sequential worker turns through the existing task-bound bridge: original task as authority, deadline/parent stop/ownership checked per step, approvals keep trusted parent routing; prior outcomes passed as untrusted data.
  • Final result only if every step ends with STEP-STATUS: complete; requested vs observed model per step in trace.
  • Exact roles via modelPreflight: unavailable/unconfigured cheap role blocks visibly, no silent default. Technical failures never upgrade.
  • One escalation level only on explicit inadequacy with zero tool calls; otherwise visible limit.
  • Restart: no replan; unresolved intent uses existing transcript reconciliation, otherwise blocks.

Gates: full serial suite 1449/1449, typecheck, build; persistent plugin_review passed (fingerprint 1610880a…, 0 findings). Source delivery only; activation requires dispatcher.strategy: sequential via authorized rollout.

Not included: parallel steps, replanning, HTTP planner adapter (session planner only; HTTP classifier unaffected), plan approval.

Opt-in built-in dispatcher strategy `sequential` v1 (smallest end-to-end slice). `direct` stays default and behaviourally unchanged (worker turn extracted to `runTurn`). - Tool-free ephemeral planner (`assessmentPurpose: dispatch-plan`) on the exact `dispatcher` role; closed JSON plan, 1-6 steps, lowest adequate role per step; single simple step allowed; malformed -> visible block. - Plan/index/outcomes persisted in the execution checkpoint before execution; per-step unsafe intent with exact route. - Sequential worker turns through the existing task-bound bridge: original task as authority, deadline/parent stop/ownership checked per step, approvals keep trusted parent routing; prior outcomes passed as untrusted data. - Final result only if every step ends with `STEP-STATUS: complete`; requested vs observed model per step in trace. - Exact roles via modelPreflight: unavailable/unconfigured cheap role blocks visibly, no silent default. Technical failures never upgrade. - One escalation level only on explicit inadequacy with zero tool calls; otherwise visible limit. - Restart: no replan; unresolved intent uses existing transcript reconciliation, otherwise blocks. Gates: full serial suite 1449/1449, typecheck, build; persistent plugin_review passed (fingerprint 1610880a…, 0 findings). Source delivery only; activation requires `dispatcher.strategy: sequential` via authorized rollout. Not included: parallel steps, replanning, HTTP planner adapter (session planner only; HTTP classifier unaffected), plan approval.
Tool-free planner on the exact dispatcher role produces a bounded closed
plan with the lowest adequate role per step. Plan, index and outcomes are
persisted before execution; steps run sequentially through the existing
task-bound worker bridge with original authority, deadline and stop
checks. Missing roles, malformed plans and technical failures block
visibly; one effect-free escalation at most; restart resumes without
replanning and reuses intent reconciliation. Direct remains default.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
harness/core!254
No description provided.