You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two peer agent loops have no concept of a stop that bars retry, and neither
treats a tool-using run with no net file diff as a failure. This project had
five: no-ship, no-progress, never-acted, never-edited, and repetition all
hard-blocked identical re-dispatch for the rest of the session. A worker
sharing a directory can issue real edits that a concurrent lane absorbs,
leaving no net diff — the never-edited class read that as "did nothing" and
discarded the worker's real work while also blocking retry.
Deletes HARD_BLOCK_SALVAGES/isHardBlockSalvage and the fingerprint-refusal
logic in brief-dispatch.ts (the ledger now always admits), the requireEdit
branch and the consecutive-identical no-progress check in stop-policy.ts
(with their bookkeeping: DEFAULT_SUBAGENT_REPEAT_LIMIT, ToolCallStreak,
nextToolCallStreak, subAgentNoProgress), and the four now-false "it will be
refused" parent hints. shell-evidence.ts's write-detection existed solely to
feed requireEdit and is now dead; shrunk to reads-only (still feeds the
CritiqueDirector requireEvidence gate). editedPaths bookkeeping in thrash.ts
stays for intervention-log diagnostics only.
repetition keeps its detector (a sibling change owns deleting that) but loses
its hard-block membership here, matching every other salvage class: it ends
the run and reports the loop, but does not refuse a later re-dispatch.
Copy file name to clipboardExpand all lines: src/agent/prompts.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -153,7 +153,7 @@ export function buildGuidelines(
153
153
"- Prefer the typed spawn contract on every worker: `intent`, `success_criteria` (done-when), `do_not` (scope fence), and `report_focus` so workers finish instead of thrashing. Free-form `prompt` alone is weaker.",
154
154
"- After workers return, merge their Summary/Findings into a coherent answer for the operator; do not paste raw sub-agent dumps.",
155
155
"- Pass `maxTurns` on `task` when a job needs a larger inference budget (default 30, no hard upper cap). On turn-budget salvage, re-dispatch with continuation context and a higher maxTurns only a few times on the same brief — after the re-dispatch cap, change approach instead of bumping turns again.",
156
-
"- After thrash / no-progress / repetition / never-acted salvage, do not re-dispatch an identical brief (prompt/agent/intent/success_criteria/do_not) — it is refused. Change the brief to force a re-run; maxTurns alone does not unlock it.",
156
+
"- After a repetition salvage, re-dispatching an identical brief (prompt/agent/intent/success_criteria/do_not) unchanged will likely loop again — change the brief before retrying.",
157
157
"- Use manage_tasks for your own coordination checklist; spawning workers is `task`, not manage_tasks.",
158
158
"- If context is compacted automatically, do not stop tasks early due to token fear; persist progress via manage_tasks and worker reports.",
0 commit comments