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
Dynamic Workflow executor — optional per-phase fan-out for /impl-build. A phase can opt into executor: workflow (default,
field-absent, stays implement — byte-identical to before) to run as
a Claude Code Dynamic Workflow: its acceptance criteria fan out across
parallel unit-workers (≤16 concurrent / 1000 total) instead of one
sequential implement agent.
New phase field executor: implement | workflow (schema + RESERVED_FIELD_NAMES), a phase.executor.set op, the task__set_phase_executor MCP tool, and the anchored phase executor set <slug> <phase-slug> <executor> CLI.
New workflow agent: a fan-out unit-worker with the inverse
write-contract — it writes its own evidence/failures to the
task-file via the anchored CLI (invoked as npx -y -p @chaafoo/anchored-mcp anchored …, the same
package-resolution that loads the MCP server — no global install or
PATH entry needed).
/impl-build feature-detects the Workflow runtime and falls back
to the sequential implement path when it is unavailable — never
a hard error. The task-validate + code-validate gates run once
over the merged phase result, and the failures-driven retry loop /
retry-limit are unchanged.
See plugin/EXTENDING.md → "Running phases as a Dynamic Workflow"
(incl. the CLI allowlist note for background workflows).
Behavioral eval suite (evals/). An LLM-in-the-loop harness for
the lifecycle skills (plan / refine / build / wrap), with per-stage
task-file fixtures reusable as seeds.
Changed
Build autonomy reworked from persisted levels to ephemeral
walk-style + global stop-conditions. The persisted task.autonomy
field (ask_all / ask_high_only / decide_all) is gone. In its
place:
/impl-refine Stage 0 now picks an ephemeral walk-style
(AI-all / high-together / all-together) that governs only that
one Q&A walk — it is never written to the task-file. /impl-build
runs the same ephemeral walk to clear any still-open questions
before its run (open-question detection is programmatic).
/impl-build runs maximally autonomous over emergent
build-time decisions: retry → decide → document via question_resolve(source='ai', reasoning). It halts ONLY when an
emergent decision matches a rule in anchored.yml.build.stop
(shipped default: a single rule, 'a decision deviates from the plan'), judged by the new stop-check evaluator + the implement
worker's own self-report (double safety net). The old three-way
autonomy branch in the failures loop is removed.
/impl-wrap now surfaces every source='ai' resolution with its
reasoning, grouped by phase, as a decisions review.
MCP tool surface: 38 typed tools. Net of this release: the task.autonomy op was removed (build-autonomy rework) and task__set_phase_executor was added (workflow executor). Old on-disk
task-files carrying a top-level autonomy: key still load — the
parser silently drops the legacy field.
Fixed
Rule-file discovery no longer silently skips underscore-prefixed
directories. The rules + rules-check agents relied on a
recursive glob (.claude/rules/** / **/*.md) that can return zero
files when rules live under _concern/ / _pattern/, making an agent
report "no rules exist" and drop all rule-coverage. Both now fall back
to Grep / explicit subdir globbing before concluding the folder is
empty.
/impl-build flips refined → build at entry. The forward-only
state machine made the terminal build → wrap transition illegal when
the task was left at refined; the flip now happens up front.