Skip to content

4.13.0: plans are short intents, the lead chooses where agents run - #328

Merged
cdowin merged 36 commits into
mainfrom
317-sdlc-4-13
Oct 16, 2026
Merged

cdowin merged 36 commits into
mainfrom
317-sdlc-4-13

Conversation

@cdowin

@cdowin cdowin commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Closes #317
Closes #316
Closes #310
Closes #311
Closes #299
Closes #318
Closes #319
Closes #320
Closes #321
Closes #322
Closes #323
Closes #324
Closes #325
Closes #326
Closes #327

What changes

Proof

Not verified

🤖 Generated with Claude Code

cdowin and others added 30 commits October 16, 2026 17:04
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…tched reviews

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…sk files

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…a string is refused)

Refs #316

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sts/flow-minors.js)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ch (#299)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…he task files

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…s restored

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
The escalation of the Spec phase now carries the spec of each chain that
passed, with tier_before and tier_after, so its spec/<task id> branch can be
seen and pruned. The oracle is tests/spec-escalate.js from
spec/311-plan-escalate-specs.

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
parallel() resolves a failed brief-writer to null, and the Briefs phase threw
on it. Each null brief now gets 1 retry with its own label, after the first
barrier. A brief still null is a problem and the plan escalates. A test in
tests/spec-gate.js covers a brief-writer that throws and one that returns null.

Co-Authored-By: Claude <noreply@anthropic.com>
verify, workerPrompt, staleAfter, resetup, makeWave, doNotTouch, isoSeconds, badSha and know
are written once in wave.js between the shared-helpers marker lines; node tests/workflows.js
--write copies the block into flow.js and the test fails on drift.
Differences stay as hooks each file defines: onBase/notBase (flow has no base-red list),
filesBeside (flow reads leases), redText/extraAsk (flow adds the findings ask), staleSkip,
briefOf and STALE (flow: landing, when it starts). merged, work, setupText, setupLine stay apart.

Co-Authored-By: Claude <noreply@anthropic.com>
namesTask lives in the shared helpers block: an id with a digit or a hyphen matches as a bare word;
any other id matches only after task/tasks, #, a backtick or a quote. flow.js gets it through --write.
The merge of spec/299-stale-short-ids kept the shared block; its stub moved there.

Co-Authored-By: Claude <noreply@anthropic.com>
asLead and LEAD_REQUEST sit in the shared block of plugin/contract/check.js and reach the five
workflows through --write; doc-sdlc.js carries the same text and a test pins it equal. wave and flow
wrap in call(); plan, split and review-batch wrap each agent( call. tests/workflows.js and
tests/doc-sdlc.js check that every stubbed prompt starts with the line, once.

Co-Authored-By: Claude <noreply@anthropic.com>
…lves (#327)

plan by default turns the lead's intents (args.intents) into the graph with no
agent, or lets 1 agent draft them from the goal. Each task has an intent (its
outcome), blockers or a chain, file hints, an oracle command and a tier, and no
brief. No brief-writer, spec agent, critic or redraft runs. heavy: true keeps
the old path for a one-way door.

wave and flow accept a task with no brief: its worker gets the intent and briefs
itself, with no brief-writer and no path or check agent before it, and returns
the brief in its report (report.brief, new in the schema).

The chief-of-staff agent, README and AGENTS-AND-MODELS.md describe this as the
default. Tests: plan scenarios for the light path, a wave task with an intent
and no brief, a flow task with only issue, parent, group, tier, files and oracle.
The heavy tests (tests/workflows.js, spec-gate.js, spec-escalate.js) now pass
heavy: true.

Co-Authored-By: Claude <noreply@anthropic.com>
With runtime.remote true the worker, sub-lead, integrator, fix, regression and oracle-check prompts of wave,
flow and split name the branch and its base and no path under worktree_root; the slot cap is
runtime.concurrency alone and flow reads no host load. A local runtime keeps every prompt byte for byte.
Also merges spec/316-runtime-contract, spec/316-prompts-no-place and the group branch for runtime.remote (#320).

Co-Authored-By: Claude <noreply@anthropic.com>
claude and others added 6 commits October 16, 2026 21:39
…views (#326)

runFix no longer pushes the group branch: the fix branch lands through integrate (gate and reach) and
heads[g] moves only on a validated merge; a refused landing holds the group. A fix landing has no task
entry, so integrate takes a spec and runs inside the lane the fix already holds. shipWhenDone waits for
the batched reviews that read a landing of its group, and the final partial batch starts before reviewsClosed
resolves. tests/flow.js sees the fix landing; tests/run.sh runs flow-minors and shared-helpers.

Co-Authored-By: Claude <noreply@anthropic.com>
# Conflicts:
#	plugin/workflows/plan.js
#	tests/run.sh
Plans are a short ordered list of intents; workers brief themselves (#327). The lead chooses where agents run: prompts name work, not places (#316, #320, #325). Prompts state the task is the lead's request (#310, #324). Flow and wave share one helpers source (#311, #319). A null brief retries once (#318). Plus #321, #322, #323, #326.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cdowin
cdowin enabled auto-merge October 16, 2026 21:49
@cdowin
cdowin merged commit da57d74 into main Oct 16, 2026
2 checks passed
@cdowin
cdowin deleted the 317-sdlc-4-13 branch October 16, 2026 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment