Skip to content

anchored 0.2.0

Choose a tag to compare

@github-actions github-actions released this 02 Jun 10:15

Added

  • 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.