Skip to content

wave: worker self-gate, close and prune at validated merge, fix lane, stale-brief and caller checks, merge reach - #300

Merged
cdowin merged 19 commits into
mainfrom
sdlc-reflect-1
Oct 16, 2026
Merged

cdowin merged 19 commits into
mainfrom
sdlc-reflect-1

Conversation

@cdowin

@cdowin cdowin commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Lessons from one day of production waves (reflect).

Closes #293
Closes #294
Closes #295
Closes #296
Closes #297
Closes #298

Late fix after the end review: a reach red no longer commits, pushes or closes; a closed task that is later escalated is reopened; an empty brief check escalates; the two check agents are one.

Proof: sh tests/run.sh 291 passed; node tests/workflows.js 1003 passed; wave-reach 10, wave-prune 40, wave-stale 20, wave-setup 16. Each changed test fails on the old wave.js.

Not verified: a live wave run with real git and gh. Follow-ups: #299.

🤖 Generated with Claude Code

cdowin and others added 19 commits October 16, 2026 12:50
When args.gate is set, the worker prompt asks for one gate run after the
focused test, the report carries gate {command, line, passed, red}, and
verify() escalates a report whose gate is missing or red before any
integrator runs. check.js refuses status done with a red gate.

Refs #293

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…runed (#298)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…idated merge; prune chain branches after the converge (#298)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…R closes only the parent issues (#298)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Refs #294

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A CRITICAL end-review finding, a guard major or a red converge gate with
no rework left spawns 1 fix agent on <wave>-fix with the involved tasks'
briefs, reports and diffs, merges it, and runs the converge gate again.
It counts no rework round. With fix_lane false nothing changes.

Refs #294

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ange (#296)

An optional oracle.reach template runs once per test folder outside the
focused oracle at each merge; a reach red refuses the merge. The worker
report gains unverified, and verify() refuses it when the task has reach.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rts (#297)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…es at the Brief phase; brief-writer lists removes (#297)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d merged; brief check for every task (#293-#298 review fixes)

- merge: step 5 is green only when every reach run passed; a red aborts with no commit, push,
  close or prune. merged() also refuses a reach red, so the record never counts it (#296, #298).
- A task issue closed at a validated merge reopens, with the reason, when the task does not
  end merged; rows record reopened and drop closed_at (#298, #294).
- One brief_check agent and shape ({task, missing, hits}) replaces path_check and caller_check.
  It runs for every task: with no brief-writer, it reads removes from the brief text. Graph
  tasks may list removes (#297, #295).
- No answer: the brief check escalates the task; the Check-phase path check marks the tasks
  unchecked and the wave goes on (#295, #297).
- verify() no longer refuses unverified suites: the merge runs reach (#296).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cdowin
cdowin enabled auto-merge October 16, 2026 17:51
@cdowin
cdowin merged commit dac1318 into main Oct 16, 2026
2 checks passed
@cdowin
cdowin deleted the sdlc-reflect-1 branch October 16, 2026 17:51
This was referenced Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment