Skip to content

Releases

adw 3.5.12

Choose a tag to compare

@ryanmat ryanmat released this 08 Nov 22:12
6918d7e

The 3.5.12 engine: the two defects the unattended runs of November 2026 found, then the items the 3.5.11 release sitting queued.

Install or move to this release:

claude plugin marketplace add ryanmat/adw@v3.5.12
claude plugin install adw@adw --scope user
  • The red proof attributes a bare Python module to the step when a changed .py file carries its name: a module the step adds under a root the tree arranges through conftest.py's sys.path no longer reads as a foreign module, so the check is red where it should be rather than CHECK APPARATUS; the eval harness gains the scripts-root scenario for it.
  • A committed step always reaches wrap-up: when the budget cannot carry the review, the coordinator runs wrap-up --review-skipped <budget|turns|context>, the title, the body and the RUN STOPPED line all carry the marker, a re-run after a failed push keeps it, and the flag is refused on a run that committed no step.
  • A turn-limit stop is resumed once, with one message asking for the report, and a second turn-limit note on the same step reverts it and hands back a decision.
  • A re-review approves with Minors open: the fix-round verdict has three forms, verdict --open-minor <label> records what was left, and Minor findings never block.
  • One fix round for the chunk, at the chunk's last commit, committed as commit N --fix "<summary>", which writes fix(chunk L): <summary> or fix(step-N): <summary> and refuses a step with no prior feat(step-N) commit on the plan's branch.
  • migrate prints how the tree gets clean: next: remove <plan>.bak then python3 $AUTO boundary-commit --title "migrate into the grammar", the backup first because boundary-commit refuses an untracked path.
  • The verdict filter reads only direct bullets as findings: a margin prose line under a severity header ends that section's plain bullets, so a reviewer's evidence sub-bullets are no longer dropped as findings without a file:line; a bullet that itself starts with file:line still counts.
  • The plan grammar ignores fenced code blocks in every header scan, and an append to Decisions or Findings lands above a fenced ## line so an approved plan's hash holds.
  • The eval harness clears the fixture clone's .remember/ before git clean and retries the clean once.
  • The curated engine keeps two blank lines before a top-level def or class that follows a stripped definition, so ruff format --check passes on the public tree.
  • README.md: the logo asset and the install line name this release, the drift-check example names the newest earlier tag's commit (v3.5.11 is 4a182d2), and the runbook's description appears once.

Curated from the maintainer's development repository after the engine merge 580c016 at f0112f5; every release gate passed (banned-token scan, gitleaks, the 2772-test suite, ruff, plugin validate), and the ten-scenario unattended eval passed 10 of 10 on the engine head.

adw 3.5.11

Choose a tag to compare

@ryanmat ryanmat released this 06 Nov 14:32
4a182d2

The 3.5.11 engine: the items the 3.5.10 release left open, two of them filed here as #7 and #8.

Install or move to this release:

claude plugin marketplace add ryanmat/adw@v3.5.11
claude plugin install adw@adw --scope user
  • set N done exempts a comment-only fix round of a Mutation: required step from the mutation-killed claim when the check record carries red_reason: comment-only fix round, and commit N records mutation: n/a for that round; the refusal on a required step names the step's mutation controls and their re-run on a fix round (#7).
  • validate names a near-miss trailing header in the section's place (missing section: '## Decisions' (found '## Decisions open' at line N; rename it)), and migrate renames the first near miss of each absent section with a .bak beside the plan, refusing one that stands beside the section's own header (#8).
  • set N <state> on a step with a build record keeps it in every state but done: ; record: <note> after a wrapped state's own note, or (record: <note>) alone on in-progress and pending; a note that itself holds record: is refused.
  • check N ends check-N.log with a stamp line naming HEAD, the base, the Test exit, the counts and the time.
  • commands/next.md: the mutation-check item says to delete __pycache__ after a same-size mutant, the boundary paragraph says the .orig.md copy is written when the verdict filter dropped a finding, and the stop and on-red sentences say the record is kept.
  • The changelog pin in the maintainer's tests anchors at the first heading, and the step-reference grammar states its closing-word rule in its comment.

Curated from the maintainer's development repository after the engine merge b4b84f6 at 13d6c1c; every release gate passed (banned-token scan, gitleaks, the 2718-test suite, ruff, plugin validate), and the nine-scenario unattended eval passed 8 of 9 on the engine head, the one failure the recorded capability case.

adw 3.5.10

Choose a tag to compare

@ryanmat ryanmat released this 05 Nov 22:05
468a0f6

The 3.5.10 engine: the hardening items the 3.5.9 release left open, and a README that leads with the intent.

Install or move to this release:

claude plugin marketplace add ryanmat/adw@v3.5.10
claude plugin install adw@adw --scope user

The hardening items the 3.5.9 release left in its plan's Findings:

  • renumber reads a plural list as comma entries closed by one and or to entry, so a count after the list (Steps 7 to 9, 12 tests red) is no longer a step number; it rewrites references in the plan's preamble too, counted under a preamble key.
  • boundary-commit skips a plan kept out of git by design with an exit-0 line instead of refusing with a false reason, and reads a corrupt run marker as the error it is.
  • next-guard keeps its denials from Python 3.9 and its body runs there; the three import-bound hooks and the four scripts still stand down below 3.12 with one line.
  • set N done on a step already done appends a fix round after the step's record (; fix round: <note>; <clause>) instead of replacing it; a corrected note against the same record replaces that round's note, and the plan's own note passed back changes nothing.
  • The eval graders share one Decisions condition, and the projection's --text test reads a token per query shape from the answer itself.
  • Removed: the unread leftovers of evals/lib/record.py in the public cut (the shebang, SUPPORTED_AGGREGATE_SCHEMA, DEFAULT_LEDGER, the plugin-eval divider, CORRECTION_SCHEMA).

Documentation: the README leads with the intent (the four phases intent, spec, plan, run; the intent file and its commit first in Usage), and the changelog marks removals under a Removed: bullet, one item per surface, starting with the 3.5.9 entry.

Curated from the maintainer's development repository after the engine merge da4a370 at bbd4a7a; every release gate passed (banned-token scan, gitleaks, the 2673-test suite, ruff, plugin validate), and the nine-scenario unattended eval passed 9 of 9 on the engine head.

adw 3.5.9

Choose a tag to compare

@ryanmat ryanmat released this 05 Nov 13:28
5538290

The 3.5.9 engine: the install sweep's fixes and the carries from unattended use.

Install or move to this release:

claude plugin marketplace add ryanmat/adw@v3.5.9
claude plugin install adw@adw --scope user

Engine fixes from the install sweep:

  • merge requires a refs/notes/preflight note on the head only under ADW_PREFLIGHT_NOTE=required; unset, the gate reads no notes.
  • start checks the owner allow-list before it reaches GitHub; the unused open-pull-request probe is gone.
  • boundary-commit commits the plan alone at a chunk boundary and refuses anything else staged.
  • Every hook and script prints one line and stands down below Python 3.12 instead of raising.
  • The classifier probe and the projection's two ledger sources are gone; the public tree is cut with the plugin-eval functions stripped by name.
  • Wrap-up writes the Intent: trailer from the plan header.

Carried from unattended use under a scheduler:

  • A run that commits no step hands back: no push, no pull request, RUN STOPPED <reason> NO PR: no step committed, the plan brought home and the local run branch kept for the morning read.
  • One [run <id>] tag per entry; the appender puts a bullet on its own line after an unterminated last line.
  • validate warns when an open step names pyproject, conftest, pre-commit-config or tox without the file's basename; preflight prints each warning once as PREFLIGHT WARN.
  • next_plan.py renumber <plan> --from <n> --by <k> relabels the PENDING steps and every Step <n> or Steps <n>, <n> and <n> reference, extends the Legacy step map line, and refuses a non-positive shift, a start above every step and a step in range that is not PENDING.
  • The ninth eval scenario, decision-stop-empty, grades the hand-back live.

New documentation: docs/intent.md, the intent artifact and its Intent: header line and trailer.

The full entry is in CHANGELOG.md.

adw 3.5.8

Choose a tag to compare

@ryanmat ryanmat released this 03 Nov 15:38

First public release, curated from the maintainer's development repository at commit ab2b2d1.

The engine as it runs in production: the three commands, the run and spec-mining agents, the guard, Stop, ruling-log and ruling-recall hooks, the plan grammar and auto-run scripts, the delivery projection, the Markdown skill, the suite, and the next-auto eval harness.

Changes against the development tree, made for a public audience:

  • The owner allow-list and the never-run set are read from ADW_OWNERS and ADW_NEVER_AUTO, with no default owner. Preflight, start and merge refuse until ADW_OWNERS is set.
  • The done-check reviewer a verdict record names is ADW_DONE_REVIEWER, default done-check.
  • The ruling hooks are opt-in: ruling-log.py records a dialog only in a project that already has .next-auto/rulings/.
  • The plan grammar's trailing section is ## Decisions; the Eval-codes value for the 0 pass, 1 fail, 2 and 3 apparatus convention is apparatus.
  • The eval harness names its fixture repository through ADW_EVAL_FIXTURE_REPO.
  • Test fixtures are synthetic: the structure of real plans, records and pull requests with their free text regenerated.
  • The source is ASCII throughout.

Install, pinned to this tag:

claude plugin marketplace add ryanmat/adw@v3.5.8
claude plugin install adw@adw --scope user