Releases: chafoo/anchored
Releases · chafoo/anchored
Release list
anchored 0.5.1
Full Changelog: v0.4.0...v0.5.1
anchored 0.3.0
Added
/setupskill — a conversationalanchored.ymlconfiguration
assistant. Auto-triggers whenever the user wants to create, change, or
extend theiranchored.yml(add a step, wire an agent/skill into a
stage, tune a gate, set up commit/PR/TDD automation) — even without
naming the file. It translates the user's stated requirements into
correct, schema-valid config, writesname+instructionson every
custom step, and validates before finishing. It clarifies genuine
ambiguities with the user and advises on request (backed by
plugin/references/power-user-setups.md), but never pushes a setup the
user didn't ask for — no power-user onboarding funnel.- Custom steps gain
instructions(any step) +type(use steps), and
use:dispatch is now real. A lifecycle step
(plan/refine/build/wrap.steps) can now declare:instructions:— free-prose documentation of what the step does and
why, allowed on any step. The recommended base for every custom
step isname+instructions. On arun:step it self-documents
the shell (rationale + audit trail); on ause:step it is
additionally threaded into the invoked worker, the step-level analogue
of the reserved slots'instructions(build.implement.instructions,
…).type: agent | skill— on ause:step, picks the invocation
mechanism.agent(the default when omitted; back-compatible with
existinguse: anchored/implementsteps) spawns an isolated
subagent via the Agent tool;skillinvokes the worker via the
Skill tool in the orchestrator's own session. Rejected on arun:
step (no worker to type).- A single canonical dispatch contract
(plugin/references/step-dispatch.md) replaces the previously
unspecified "invoke the named tool … depending on how the user has
wired it" hand-wave; all four lifecycle skills now point at it. - See
plugin/EXTENDING.md→ "Add a custom step to any stage".
Changed
- Decluttered the shipped
default-config.yml— dropped the decorative
# ─── stage ───divider headers and the redundant schema line; the
inline per-slot explanations stay. Cosmetic; no shape change.
anchored 0.2.0
Added
- Dynamic Workflow executor — optional per-phase fan-out for
/impl-build. A phase can opt intoexecutor: workflow(default,
field-absent, staysimplement— 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
sequentialimplementagent.- New phase field
executor: implement | workflow(schema +
RESERVED_FIELD_NAMES), aphase.executor.setop, the
task__set_phase_executorMCP tool, and the
anchored phase executor set <slug> <phase-slug> <executor>CLI. - New
workflowagent: a fan-out unit-worker with the inverse
write-contract — it writes its own evidence/failures to the
task-file via theanchoredCLI (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-buildfeature-detects the Workflow runtime and falls back
to the sequentialimplementpath when it is unavailable — never
a hard error. Thetask-validate+code-validategates 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).
- New phase field
- 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 persistedtask.autonomy
field (ask_all/ask_high_only/decide_all) is gone. In its
place:/impl-refineStage 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-buildruns 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 inanchored.yml.build.stop
(shipped default: a single rule,'a decision deviates from the plan'), judged by the newstop-checkevaluator + the implement
worker's own self-report (double safety net). The old three-way
autonomy branch in the failures loop is removed./impl-wrapnow surfaces everysource='ai'resolution with its
reasoning, grouped by phase, as a decisions review.
- MCP tool surface: 38 typed tools. Net of this release: the
task.autonomyop was removed (build-autonomy rework) and
task__set_phase_executorwas added (workflow executor). Old on-disk
task-files carrying a top-levelautonomy:key still load — the
parser silently drops the legacy field.
Fixed
- Rule-file discovery no longer silently skips underscore-prefixed
directories. Therules+rules-checkagents 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
toGrep/ explicit subdir globbing before concluding the folder is
empty. /impl-buildflipsrefined → buildat entry. The forward-only
state machine made the terminalbuild → wraptransition illegal when
the task was left atrefined; the flip now happens up front.
anchored 0.1.3
Fixed
- MCP server reported itself as
v0.2.0regardless of the published
package version — a stale hardcoded string insrc/mcp/server.ts
left over from the V0.2 era. Server now reads its version from
package.jsonat startup viacreateRequire, so the
serverInfo.versionadvertised to MCP clients and the
anchored-mcp v<X> readystartup line stay in sync with the
published version automatically. No more manual sync on release.
anchored 0.1.2
First successful npm publish via CI. (0.1.1 tagged but never reached
npm registry due to npm CLI bundled with Node 20 not handling
trusted-publisher OIDC reliably.)
Fixed
mcp/package.jsonhad duplicate keys (keywords,license,
repository) from a botched merge. The duplicaterepository
carried the wrong URL (anchored/anchoredinstead of
chafoo/anchored), which npm normalized into the published
metadata for 0.1.0. Removed the duplicates; canonical
repository: chafoo/anchoredis the single source of truth now.
Changed
- CI publish workflow (
.github/workflows/publish.yml) switched
fromNODE_AUTH_TOKENto npm trusted publishing via OIDC. No
long-lived tokens; each release is authenticated by GitHub's
short-lived id-token signed against the workflow + repository
registered with npm. Removes the supply-chain attack surface
from stolen registry tokens. - CI now pins Node 22 (npm 11.x) and upgrades npm to latest before
publish — npm 10.x's trusted-publisher implementation had
intermittent registry-auth bugs.