#[v2.0.1] - 2026-03-22
#Features
- Implement EPIC-072 coaching stories and multi-story dev progress
#Chores
- remove pycache from git tracking
- remove duplicate STORY-553 (completed version in archive/)
- remove tgz build artifacts from repo and gitignore them
- add NPM-Publish.md to gitignore
- Add src/devforgeai/specs/business/ artifacts
- Sync operational folders with src/ tree and update QA/workflow state
- Checkpoint before STORY-536 development
- Checkpoint before STORY-536 development WIP state from STORY-468, STORY-469, STORY-471, STORY-535, STORY-544 and related QA/workflow artifacts.
#Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
#[Unreleased]
Post-3.0.0-beta.11 changes accumulate here. Per ADR-104 D1 §"3-release rollout window": the v3.0.0-beta.x line ships on the @beta dist-tag → v3.0.0 GA (@latest) → v3.1.0.
#[3.0.0-beta.11] - 2026-06-27
Status: Eleventh
@betapre-release. The window covers 58 PRs (#908–#1026) since the beta.10 tag (2026-06-21 → 2026-06-27). The bulk is the subagent handoff-pipeline port (a data-driven protected-dispatch registry plus per-unit onboarding), the incident-recurrence / merit-gate subsystem (fingerprint, ledger, recurrence check, prioritization),import-claude-skillanalyzer evidence gates, continued/spec-sprintgate and contract hardening, and Codex-runtime parity. Tagv3.0.0-beta.11to publish to the@betadist-tag via.github/workflows/npm-publish.yml.
#Added
- Subagent handoff pipeline:
build-subagent-handoffCLI with Phase-04 scoped-context gates (#910), generalized into a data-driven protected-dispatch registry (#911, #915); onboarded the handoff pipeline across dev Phase-03 (#959), unit2 (#961), unit3 QA (#963), system-architecture (#965), dev Phase-04 (#967), and unit6 dispatches (#971); spec-sprint Phase-04 handoff protection (#969) and phase-D subagent out-attestation enforcement (#973). - Incident pipeline & recurrence (merit gate):
incident-fingerprintandincident-ledgerCLI commands (#924);incident-recurrence checkCLI (B1 mechanism) wired into 4 producers with a gated count surface (#931, #934, #935);incident-prioritizehit-ratio ranking CLI (#987) andincident-prioritize-planwith a daily schedule workflow (#992). import-claude-skillanalyzer: update-mode drift analysis (#977); Claude hook-settings parsing (#981); Claude agent-metadata parsing (#989); Claude command-conversion analysis (#999); import-strategy evidence (#1002); per-file remediation plans (#1023); analyzer evidence gates (#1026); the Codex Claude-skill import incident workflow (#939)./spec-sprint: backlog-readiness status (#975); Phase-00.5 merit triage (#976); Phase-04 custody commits (#953).- CLI / framework: prose-quality standard for agent prompts and hook messages (#994);
audit-overtriggernow detects COVERED via enforcement signals rather than a line registry (#995, #1011); added missingverify-source-ac-coveragetest scenarios (#998).
#Changed
- Retired the
spec-driven-researchhand-maintained checkpoint in favor of CLI phase-state (#1013). - Aligned the spec-sprint Phase-00.5 C1 verdict contract (#957) and clarified handoff test paths (#958).
#Fixed
/spec-sprint: detect output-nestedoverall_statusin completion Gates 3 and 4 (#922); harden dependencies and Phase-05 paths (#955); require evidence-backed closeout (#956); block Phase-06 when the CI-checks array is empty (#986); use--subagent coverage-analyzernot--cli-commandin phase-05-qa Step 3b (#887, #919); remove the Phase-05 three-dot precheck (#1021); bound test-automator context to prevent first-dispatch overflow (#1024); guard non-string conviction payload text (#954).- Incident pipeline: let symbol-bearing bugs reach
exact_matchinincident-fingerprint(#925, #927);incident-guardfails closed when the template guard cannot resolve the body (#926, #928); token-based--repo/--body-fileextraction in the template guard (#932). - Codex parity: refresh skill templates from Claude (#938); validate skill-loader metadata (#950); make spec-sprint dispatch reliable (#951); harden spec-sprint runtime gates (#952); fix spec-sprint lint wording (#1005).
- CLI / hooks:
--project-rootadded toquery-source-treefor argument parity (#914); dedupe velocity-monitor dual-path mirror writes to prevent false TOKEN-OPTIMIZATION-BIAS warnings (#916);coverage-record-resultwrites the full 64-char raw-bytesphase_state_checksum(#903, #918); allowsource_refs,source_ac_ids, andcommandin theac_listschema (#1000); relocatecontract.schema.jsonto the shipped CLI package (#982, #1004); makepre-cli-staleness-guard.shinstall-aware and exemptresolve-worktree-subcommand(#1019); correct staleextract_section###claims indiagnose_dod_failure(#1017).
#Documentation
- Persist the subagent handoff-pipeline port plan (#908); correct the stale "parser stops at
###" justification post-#787 (#996); document spec-sprint source-tree regeneration (#1022).
#[3.0.0-beta.10] - 2026-06-21
Status: Tenth
@betapre-release. The window covers 108 PRs (#702–#904) since the beta.9 tag. The bulk is Codex-runtime parity, native worktree-isolation hooks, continued/spec-sprintgate/contract hardening (Phase-04 Red-before-Green, refactor-surface, dispatch-ledger), the conviction-evidence subsystem, per-story PR lifecycle, a configurable friction-reporting gate, and the ADR-145 anti-skip-ceremony retirement. Tagv3.0.0-beta.10to publish to the@betadist-tag via.github/workflows/npm-publish.yml.
#Added
- Codex parity & runtime: dispatch-ledger runtime (#739) and runtime pre-tool hook (#740) for Codex;
collaborateresponse skill (#847); scripts-mirror guard registered for Codex commits (#841); spec-sprint completion gate registered for Codex hooks (#881). - Worktree isolation: adopted native
WorktreeCreate/WorktreeRemovehooks for session isolation (#859); Phase 05/06 worktree-anchoring guard added to/spec-sprint(#793);resolve-worktree-subcommandhelper for self-developed CLI subcommands (#758). /spec-sprintgates & contracts: enforce Phase 04 Red-before-Green (#761, #775, #778);check-refactor-surfacegate in Phase 04 (#759); gate mechanically-checkable ACs on test evidence not AC verdict (#902); dispatch-ledger gatesphase-completeon mandated subagents via Condition C (#862); Phase 05 scanner dispatch gated on thesource-code-changedpredicate (#861).- Conviction evidence:
emit-conviction-worklogphase-05 emit path (#794) and self-injected identity fields (#898). - CLI / framework: read-only
audit-overtriggersubcommand for ADR-076 emphatic-prose classification (#901);pre-cli-staleness-guardto detect staledevforgeai-validatecode (#899);derive-obs-iddeterministic CLI subcommand (#823);render-sprint-board --init-board(#817);phase-recordrejects the reserved--subagent=nonesentinel (#804);incident-guardgatesgh issue createon a recorded remote dup-scan (#904); severity-label resolution ingithub-incident-from-observation(#827); GitHub CLI added to the tech-stack.md Bash exception list (#883). - Per-story PR lifecycle: Phase 08 Step 4.5, Phase 06 Step 6.6, story template 3.2 (#860).
- Friction reporting: configurable hook-enforced friction-reporting gate (#792).
- Architecture / stories: solarch enforces
feature_decompositiontech-stack conformance at handoff (#863) and wires/create-uias a conditional producer dependency (#743);spec-driven-system-architectureStep 0.4d remote-posture check (#857);spec-driven-storiesPhase-00 optional worktree offer (#833) and RCA-007 pseudocode replaced with hook citations (#849). - CI: source-tree drift guard + re-baseline artifact (#879).
#Changed
lint-skill-ceremony.shis now forbid-only (ADR-145). Removed the ADR-118 REQUIRE-citation rule (Rule 2) and the cite-once rule (Rule 4); kept the banned-marker, inert## Reference Loading [MANDATORY], andSendUserFilerules; added a live-path FORBID that fails on any SKILL.md reference to the retiredanti-skip-behavior.md..github/workflows/hooks-lint.yml,tests/hooks/test_lint_skill_ceremony.sh,tests/devforgeai_cli/test_spec_sprint_phase_gate_emission.py, thespec-driven-agentsskill template, anddefer-classification-policy.mdwere updated to the new rule set. ADR-076 and ADR-118 remain unedited (append-only); their internal references are accurate historical record.- Retired
model: opusacross subagent definitions for cost reduction (#783); conviction + board-render now run before the audit hook in PostToolUse[Bash] (#782); friction reporting enabled with detailed tone in feedback-config (#822); array tech-stack fields normalized (#736).
#Removed
- Retire
anti-skip-behavior.mdand the behavioral-admonition ceremony it anchored (ADR-145, supersedes ADR-076/ADR-118). Deleted the canonical.claude/rules/core/anti-skip-behavior.mdrule file (and itssrc/claude/mirror), removed the## Execution Modelcitation blocks from every skill, and stripped theanti-skip-behavior.mdpointer + ceremony prose from each## Anti-Skip Enforcement Contract(the real deterministic-gate references are preserved). A single canonical home for unenforced behavioral admonition is still unenforced admonition; the audit record now lives in ADR-145 and the anti-regression mechanism in deterministic lints. - Removed the unenforced Success-Criteria + Reasoning ceremony from subagent definitions (#729); untracked
.claude/settings.local.jsonas a per-user local-settings file (#853).
#Fixed
/spec-sprint: non-CODE exemption for the Phase-04 tdd-order gate (#900); Phase-04 doc-card branch dispatches/anchors test-automator to reconcile with the dispatch gate (#778, #816, #807, #803); Phase-03 worktree create gated ongit-worktree-managerlimit_reached (#767); Phase-03 VERIFY uses token-grammar grep (#766); Phase-06 gated on all non-skipped CI checks (#821); Phase-07 closeout notes gated (#744); doc-card exemption clarified contract-only (#784); false LLM-proof labels on Phase-05 Gates 3+4 corrected (#884);dangerouslyDisableSandboxclause stripped from Phase-03 Step 1b (#795, #806).- QA / stories: dev-time vs qa-time qa-report routed to distinct paths (#836);
.dev.mdconsumer + Codex parity repaired (#864); Phase-01 steps preserved across qa-setup/phase-init ordering (#829); unconditional RECORD stanzas added (#824);qa-cleanuprequires gaps.json only for FAILED results (#791); detect-indicators cross-checked against tech-spec component types (#840);stories-inline-enforcementgates on active workflow not stale SC-* files (#831). run-tests/ coverage: subprocess-invoked coverage measured viaCOVERAGE_PROCESS_START(#895);--covtarget routed to the worktree source tree (#768); worktree-path installed-build warning (#811).- Hooks / CLI:
pre-tool-useblocks interpreter-mediated Bash writes to conviction-evidence dirs (#889); everyphase-recordinvocation anchored in a batched Bash call (#789);observation_json_refresolved against the active worktree (#796);source-code-changeddetects uncommitted work via merge-base (#869);phase-completewrites through to the stories workflow checkpoint JSON (#843); completion-gate detectsoverall_statusat root or.output.*(#842);resolve-worktree-subcommandforwards dash-prefixed flags via pre-parse argv split /parse_known_args(#858, #779);check-refactor-surfaceexcludes markdown/prose files (#880);extract_sectionstops at##not###subsections (#897);render-sprint-boardforwards--init-boardflags (#837);validate-sprint-closeoutverifies the Commit SHA exists in git (#850);sprint-resumeworktree-liveness guard (#845) + contract gaps closed (#799);create-incidentparses args via the CLI helper (#732). - Release / installer:
phase-09manual-publish fallback gated on publish-step failure, not any CI run failure (#809); installer next-steps use thenpxprefix for local installs (#810); stale OUTPUT goldens regenerated +_archivetrimmed to restore the tarball budget (#868);set -o pipefailon the golden step (#855).
#Documentation
- RESEARCH-013 ceremony-vs-enforcement prompt-engineering study (#788); reusable ceremony-removal subagent prompt (#769);
gh pr update-branchdocumented as a sandbox-safe PR base-update path in operational-safety (#876); issue #790 cross-reference inartifact-verification-gate.sh(#892);emit-conviction-worklogpayload envelope andcompletion_recordschema documented in phase dispatch prompts (#894, #896).
#[3.0.0-beta.9] - 2026-06-16
Status: Ninth
@betapre-release. The window covers 67 PRs (#569–#701) since the beta.8 tag (2026-06-13 → 2026-06-16). The bulk is continued/spec-sprintworktree-gate hardening,run-testsharness robustness, the gate-backedrelease-packageworkflow's own dogfooding fixes, and installer upgrade-path handling. Tagv3.0.0-beta.9to publish to the@betadist-tag via.github/workflows/npm-publish.yml.
#Added
/spec-sprintworktree gates & contracts: deterministic worktree gates for phases 03–06 (#631, #512); untracked-collision recovery in Phase-00 ff-sync (#611); content-assertion test path for non-code phase-04 cards (#641);tests/hooks/prescribed as the shell hook-test home in phase-04 (#574); spec-sprint checkpoint emission + sprint-resume rehydration entrypoint (#654, #557).run-testsharness:--test-commandflag for shell-based test suites (#672);--expect-failguarded against launch/collection failures (#660, #653); worktreesys.path.insertescape gated (#701, #601).- Release workflow: README version-marker sync added to phase-09 (#665, #583); clean fast-forward worktree base allowed in the phase-03 gate (#691).
- Stories / architecture: recommended metadata derived from the DEVARCH seed in
DEVARCH_SEEDmode (#696, #594); Phase 00 VCS-posture check added to spec-driven-system-architecture (#606) and spec-driven-ui (#648). - Framework / install:
subagent-unavailable-fallbackprotocol (#604, #500);parallel.yaml.exampledeployed with copy-if-absent semantics (#700); mirror guard extended tosettings.jsonandhooks/(#650, #582); non-Tailwind React token-extraction patterns in mockup-extractor (#619, #519); incident-template byte-identity guard (#613).
#Fixed
/spec-sprint: work contracts wired into phase-04 dispatches + gate consumption (#575); board-fill / card-id model reconciled to the PHASE_ORDER renderer (#662, #656, #647, #612); doc-card exemption narrowed to preserve the test-automator contract (#681, #668); Phase-03 fill VERIFY reconciled with hook-pre-render reality (#680); board filename pinned toissue-n.html(#645); completion_record append prescribed in phase-04 dispatches (#605); template-comment brace syntax stripped (#697).run-tests: no-tests-executed no longer accepted as a valid Red (#699); worktree-aware framework detection + Phase-04--frameworkflag (#596); jest/vitest cwd scoped to the nearestpackage.jsonancestor (#589); pytest duration canonicalized to stabilize the artifact sha256 (#607).- Hooks:
pre-dual-path-write-guard.shmade workflow-aware for spec-sprint Phase-04 worktree edits (#615);phase-completegated on dispatch success via the PostToolUse ledger (#658, #639); Stop block scoped to the session-bound workflow (#669, #652);worktree-identity-guard.shallows worktree-CWD → owning-main phase-state writes (#642); Phase-05 ac-verdict overwrite carve-out infeedback-artifact-write-gate.sh(#591); Phase-03 test-immutability narrowed to Red-snapshot-registered files (#632); session_id wired into the spec-sprint contract-consumption gate (#657, #644); story-self-validator allowed in Phase 07 ofstories-inline-enforcement.sh(#676). - CLI / contracts: bare integer step IDs auto-normalized to compound
NN.Nin phase-record (#670); nested tech-stack-detector output flattened inphase-set-tech-stack(#638); contract schema resolved from project root, fail-open when absent (#637, #624); AC parser extended for story-template v3.1 XML<given>/<when>/<then>(#635); single consolidatedtest_files_to_createentry for test-first mode (#649); test-file extension derived fromtest_framework(#590);extract_json_data_islandmade comment-aware (#587). - Release / build: release-branch preflight guard added to phase-09 (d60c01c); package-route gates added to phases 01 and 03 + loop RECORD step fixed (#675); Step 9.1 rewritten to preserve the
[Unreleased]placeholder during CHANGELOG promotion (#673, #586). - Install / misc: existing-install detection offers Upgrade over
E_TARGET_FOREIGN(#576); preflight error screen rendered in interactive--dry-run(#573); context-validator root-resolution contract made explicit (#572, #486);audit-gatefalls back to empty-tree SHA on greenfield repos (#640); render-sprint-board idempotency / attribute-order / no-op-when-absent fixes (#682, #678, #661); self-excludinggrep -v grepin Lock File Recovery (#663); staleindex.lockpre-flight added to Phase 08 (#646); bundleddevforgeai_clitest tree wired into the python-cli-tests gate (#602); github-incident BR-001 label sets reconciled with repo labels (#655, #634).
#Documentation
generate-qa-recommendationsinput schema documented in--helpand the authoring guide (#636);ai-companion-manifest.jsonschema documented in Phase-03 Step 3.2 (#597); README + website version markers synced to v3.0.0-beta.8 (#569).
#3.0.0-beta.8 - 2026-06-13
#Added
- Gate-backed
release-packagerelease workflow andverify-release-versionscoherence gate, enabling/release --package X.Y.Zto drive npm releases through a deterministic 4-phase (01/02/03/09) gated sequence. (#567)
#3.0.0-beta.7 - 2026-06-12
Status: Seventh
@betapre-release. The window covers 85 PRs (#386–#563) since the beta.6 tag (2026-06-05 → 2026-06-12). The headline is the brand-new/spec-sprintissue-driven sprint workflow and the framework-wide hook generalization its dogfooding forced (workflow-aware gates, worktree/session-scoped state resolution), plus run-tests harness upgrades, a deterministicaudit-fsengine, the archive quarantine lifecycle, and the/create-incidentobservation pipeline. Tagv3.0.0-beta.7to publish to the@betadist-tag via.github/workflows/npm-publish.yml.
#Added — /spec-sprint: issue-driven ad-hoc sprints (new skill)
- #391 (PR-1) + #402 (PR-2) —
spec-driven-sprintskill +/spec-sprintcommand. Turns a single GitHub issue into a hook-enforced, resumable sprint: plan-mode research → self-contained HTML spec with work cards + embedded resumption prompt → isolated worktree off the remote default branch → TDD per card → QA iteration loop against the spec's ACs → PR. No story file required (distinct from/create-sprint, which plans story sprints from a backlog). PR-2 also closes #398 (phase-05 test-result anchoring). - Dogfooding hardening wave (PR closes issue):
- #417 (#416) — prose-duplication strip + gate wiring +
ISSUE-*read tracking; #418 — phase-file-read telemetry coverage. - #460 (#448) — orchestrator owns Phase-03 worktree creation (git-worktree-manager is report-only); #509 (#490) — phase 04–06 file edits and commits anchored to the Phase-03 worktree; #545 (#536) — sprint worktrees relocated to
{project-root}/worktrees/and gitignored. - #529 (#494) — Phase 02 folded into Phase 01 (the harness plan-mode contract forces ExitPlanMode before the Phase-01 exit gate, leaving Phase 02 gate-only ceremony).
- Work-contract pipeline: #457 (#453) —
build-test-contract --workflow=spec-sprintfor story-file-free sprints; #470 (#463) — contract builder +phase-set-tech-stackwired into the phase files; #424 (#423), #505 (#465), #534 (#507) —ISSUE-NNNwork ids + the canonical AC-id grammar accepted acrosscontract.schema.jsonand phase prose; #554 (#469) —SPRINT_VALID_PAIRSenumerated in the sprint mismatch error; #528 (#485) —emit-conviction-worklogaccepts spec-sprint workflow ids. - Phase-05 verification: #532 (#489) — executable-AC evidence captured before verifier dispatch; #516 (#495) — run-tests path narrowed to
tests/${ISSUE_ID}/; #517 (#497) — anti-pattern-scanner + coverage artifacts gate-enforced; #548 (#546) — Gate-1 aggregator suite prescribed for code cards that edit existing tests; #555 (#549) — run-tests--frameworkwired into the Step-1 command. - #488 (#479) — default-branch fallback chain + structured
gh issue view(fixes failing prescribed detection commands); #550 (#544) — portable-core fallback dispatch requirement clarified. - #561 (#433) — backlog-triage mode + issue claim/release protocol (parallel sessions claim issues without colliding); #563 (#430) — the sprint HTML board is now rendered deterministically from phase-state by a PostToolUse hook, not hand-maintained; #562 (#474) — phase-04 Step 1b names the exact per-TDD-sub-phase contract pairs.
- #417 (#416) — prose-duplication strip + gate wiring +
#Fixed — hooks made workflow-aware
Most enforcement hooks hardcoded the /dev workflow registry; spec-sprint and strategic RCA exposed it:
- #395 (#392) — Stop-gate discovers
Sprint-*/RCA-*/MIG-*workflows (previously silently not Stop-gated); #429 (#425) then #496 (#476) — artifact-verification-gate skip-guards workflow-aware, generalized to all non-dev workflows; #434 (#426) + #537 (#510) — phase-gate-write permits spec-sprint Phase-04 test writes and Phase-06/07 src edits; #466 (#442) — phase-gate-commit; #491 (#478) — phase-context-injector; #552 (#539) — velocity-monitor phase-name lookup. - Strategic RCA route: #409 (OBS-1) —
rca-strategicworkflow key registered so strategic/rcalegally skips phase 03; #480 (#408) —rca-strategicblock added to the phase-steps registry; #482 (#407) —RCA-*phase-state discovery infind_active_phase_state+ RCA exempted from 3 enforcement gates.
#Fixed — worktree & session correctness (parallel-session safety)
- #420 (#414) — phase-state writes guarded against cross-worktree contamination; #455 (#450) + #456 (#452) —
find_active_phase_statescoped to the editing worktree and resolved by session binding instead of global newest-mtime; #435 (#432) — subagent-dispatch-ledger attribution scoped by session; #467 (#436) — spec-sprint completion-gate Block-B correlated to the PR's own sprint, not all sprints; #441 (#427) —find_repo_root_forprefers.gitoverCLAUDE.mdso worktree markers resolve to the worktree root. - #458 (#451) + #504 (#471) —
.claude/worktrees/exempted from pre-test-target-guard and post-bash-test-check; #527 (#511) — pre-commit guards inspect thegit -Ctarget repo's staged index; #431 (#421) — conviction-postrecord evidence paths resolved from the project root, not CWD; #525 (#473) — loss-reason breadcrumbs added to subagent-dispatch-ledger silent-exit paths.
#Fixed — hook matcher anchoring (false-positive blocks)
- #445 (#399) — pre-test-target-guard runner matcher anchored to command-segment boundaries; #538 (#508) — post-bash-test-check operational-dir match anchored to the command verb; #551 (#542) — pre-tool-use ADR-062 hook-invocation deny anchored to the command-segment verb.
#Added — enforcement & conviction gates
- #404 (gh#393) — conviction-gate blocks
/devphase-complete on a non-PASS ac-compliance-verifier verdict (verdict-content gate gap); #412 (#405) — D6 attempts-log verdict coupled to every exit-2 path; #483 (#410) — CI lint enforcing that invariant. - #419 (#413) — subagent dispatch ledger + reconcile gate:
phase-record --subagentclaims must be backed by realTask()dispatches (the RCA-070 record-fabrication class). - #481 (#415) — phase-init gated on stale-main behind-count; #444 (#443) — safe Bash commands auto-approved via
permissionDecisionin pre-tool-use.sh; #464 (#459) — pre-commit guard for hook exec bits (100644 staged on WSL DrvFs); #454 (#449) — pre-commitsrc/claude/scripts↔.claude/scriptsmirror-drift guard; #503 (#400) —gh issue create/editgated to the incident-template schema.
#Added — tooling
audit-fsengine: #447 (#437) — deterministicdevforgeai-validate audit-fsCLI replaces the LLM-executed readonly-fs-scanner agent; #472 (#440) —--baselinedelta mode with severity escalation; #446 (#438) — audit-wiring now detects dangling repo-local imports in test files as GROUNDED findings.- run-tests harness: #468 (#422) — Bash
.shsub-runner; #547 (#428) —--frameworkoverride decoupling framework selection from glob-order detection; #556 (#530) — worktreePYTHONPATHinjected for worktree test paths, so the Python SUT comes from the worktree under test, not main's editable install; #560 (#461) —--record-resultfails fast (exit 2) instead of silently falling back to the globaltests/tree when the story test dir is missing and no--pathwas given. - Archive quarantine lifecycle: #559 (#439) —
archive/<date>/<original-path>quarantine layout, append-onlyARCHIVE-MANIFEST.mdschema, 30-day delete-eligibility window, and the read-onlydevforgeai-validate archive-sweepverdict CLI (see.claude/rules/workflow/archive-lifecycle.md). - #522 (#401) —
github-incident-from-observationskill +/create-incidentcommand: spontaneous live-found bugs flow through the same templated incident pipeline. - #484 (#406) — spec-driven-rca persists
composition_stateto a durable per-phase checkpoint (strategic RCA survives session loss).
#Fixed — other skills
- spec-driven-ui: #543 (#518) — single-batch mockup-extractor replaced with a per-cluster split so large mockups no longer overflow Phase 02a; #541 (#521) — Phase 08 check-hooks passes valid
--status=success(feedback hooks now fire from/create-ui); #553 (#523) — design.md consumer count corrected from 6 to 4 (aspirational cross-skill prose removed). - #492 (#475) — spec-driven-ideation PM-plan frontmatter keys aligned with
ideation-output.schema.jsonv1.0; #487 (#477) — spec-driven-system-architecture phase-03 Step 3.1 writes context files via Bash heredoc, not nativeWrite(); #540 (#531) — test-automator bash hook tests useBASH_SOURCE[0]-relativePROJECT_ROOT.
#Internal / chores / docs
- Python CLI version 0.1.0 → 0.2.0 —
devforgeai-validate --versionnow reports0.2.0, reflecting the window's CLI feature additions (audit-fs, run-tests--framework+.shsub-runner,build-test-contract --workflow=spec-sprint). Bumped indevforgeai_cli/__init__.py(read bysetup.py) + thecli.pyargparse string, in both thesrc/claude/scripts/and.claude/scripts/copies. - #558 (#462) — the 54-test
build-test-contractsuite (tests/STORY-647) added to the requiredRun Python CLI TestsCI gate; #397 (#396) — hook-test T1 real-corpus canary skips when the reference-reads corpus is absent (un-reddens every PR after #390); #390 — generated operationaldevforgeai/runtime data untracked; #394 — stalesrc/devforgeaisource mirror removed; #389 — disconnected dead-weight source silos pruned; #388 — unused vendored 20 MBbin/actbinary removed; #403 — skills/commands pinned to theopusmodel alias (wasclaude-opus-4-7). - #386 — beta.5/beta.6 provenance chain + Cause C (Python CLI install) + publish gotchas recorded in
docs/installer/; #387 — installer wizard-gap remediation spec + live dashboard + gaps analysis; #411 — RCA-068 REC-2 linked to Issue-410.
#[3.0.0-beta.6] - 2026-06-05
Status: Sixth
@betapre-release. A focused fix release: the optional Python CLI now actually installs. This is the first@betabuild wheredevforgeai-validateis usable after a fresh install. Single change since the beta.5 tag (#384).
#Fixed
#384 (closes #383) — the Python CLI's scripts are now copied before pip;
.claude/scripts/was never created. Thepython-clicomponent declaressources: [{ from: "src/claude/scripts/", to: ".claude/scripts/" }]but its handler ispython-venv-install(notfile-copy), and the engine dispatches each component to its single handler — so the sources were never copied, andpip install -e .claude/scriptsran against a non-existent directory (is not a valid editable requirement). i.e. the Python CLI had never installed for any consumer; beta.5's #380 graceful-degrade made the failure visible and skippable, which surfaced this true cause.python-venv-install.execute()now delegates the source copy to thefile-copyhandler before venv/pip — creating.claude/scripts/withsetup.py(and exec bits on copied.py/.shviafile-copy's_effectiveMode), sopip install -eresolves. A genuinely missing source still surfaces loudly asE_SOURCE_MISSING.rollback()now reverses both the venv (rm -rf) and the copied scripts. Verified end-to-end: a real install populates.claude/scripts/with the fulldevforgeai_clitree (was empty). Every othersrc/claude/*directory already installed (they usefile-copy); onlyscripts/was affected.
#[3.0.0-beta.5] - 2026-06-05
Status: Fifth
@betapre-release. Makesnpx devforgeai installactually work end-to-end after the distribution defects that made beta.3 un-installable from a clean npm download, then hardens the install experience — more recovery/conflict screens, in-wizard UX polish, graceful degradation when the optional Python CLI can't install, and the richer designed channel/component screens.3.0.0-beta.4was an interim installer-fix republish (the distribution/packaging fixes below, #369–#374) published with no separate changelog entry; beta.5 supersedes it and documents the whole window. Bundles PRs #342–#381 since the beta.3 tag (2026-06-04 → 2026-06-05). Tagv3.0.0-beta.5to publish to the@betadist-tag via.github/workflows/npm-publish.yml. (In-flow verify #300/#340, the Retry/Skip/Abort loop #305/#344, the A/B detectors #339, and C2/C1/D8 #318/#338 shipped inside the beta.3 tag — they are beta.3 content, not re-listed here.)
#Fixed — distribution & packaging (the reason a clean npm i → install failed on beta.3/beta.4)
- #369 — nested
src/.npmignorestripped 4 manifest-required sources from the npm tarball. The nested ignore overrode the rootfiles[]allow-list, so a freshnpx devforgeai installhitE_SOURCE_MISSING. Nested ignore removed; apack-manifest-sourcesguard now asserts every manifest source is actually packed (packed == tracked). - #370 — ~30 operational
.pyhelpers were type-stripped from the tarball. The completesrc/claudeoperational tree (incl. thedevforgeai_clihelpers) now ships. - #379 — removed an accidentally-committed 20 MB
nektos/actbinary fromsrc/bin/that was bloating the package. - #374 — unblocked the beta.4 publish: trimmed dead weight and raised the ADR-100 tarball budget (+200 → +400 KB) so the publish gate stopped failing on size.
- #371 — quiet postinstall hint pointing at
npx devforgeai install(later superseded by the #378 root-help CTA, since npm suppresses allpostinstalloutput).
#Added — install resilience, recovery & conflict screens
- #349 (#334) — Category-B pre-flight conflict gates B3/B4/B7 wired to reachable terminal exits.
- #352 (#343) — Category-A per-screen recovery variants A3/A4/A7/A8.
- #361 (#350) — B8 component-drift preview on
--switch-channel(shows what a channel switch would add/remove before committing). - #365 (#356) — interactive D2/D3 recovery wiring for in-flow auto-rollback.
- #351 — flag-gated silent auto-rollback on an in-flow install failure.
- #348 (#322) — status
S7/S9/S10manifest fields captured +manifest-sbom.jsonemitted.
#Added — in-wizard UX
- #378 (#376) — pre-flight/input UX: a git-init pre-flight prompt for non-git targets, a plain-language pre-flight mutation summary (
hook_installs→git_hook_installsrename), project-name auto-normalization to the npm package-name shape, and the root no-arg help now leads with thedevforgeai installsetup CTA. - #381 — wizard fidelity chrome for Steps 4–5: the ratified channel screen (context line,
●non-stable markers, red "Unstable", "switch later via" hint) and dim per-component blurbs that the design specified but were never wired into the live flow. Interactive-only; silent NDJSON output unchanged.
#Changed
- #380 —
E_PIP_INSTALLdegrades gracefully. The optionalpython-clicomponent failing topip install(offline/proxy/permissions) no longer hard-blocks the core install: it surfaces the pip stderr tail + an actionable hint, skips that one component (exit 0), and prints the single command to retry it later. Silent mode emits awarn(noterror) event. - #358 (#355) —
--componentsis honored (unioned with the required set) instead of being ignored; #364 (#359) — unknown--componentsids now warn instead of silently no-op'ing. - #368 (#360) — standalone
--verifyscopes to the consumer-manifest installed components rather than the full framework set. - #362 —
ManifestManager.updatenow unionsmodules[]to stop the #322 manifest clobber; #367 (#363) — the migration test is scoped to migration semantics and records themodules[]last-run contract. - #342 (ADR-137) — surgical reinstall install-mode + framework file-inventory (re-copy framework, remove stale framework files, keep customizations +
devforgeai/). - #347 (#323) —
status --jsonemitsupdate_available: nullwhen the channel hasn't been checked (instead of a misleadingfalse).
#Fixed — behavior
- #357 (#354) — non-TTY
--interactiveno longer hangs: the Step 7 pre-flight prompt is guarded behindisInteractiveTTY, so piped/CI invocations don't block on a prompt that can never be answered.
#Internal / docs / tests
- #353 (#329) — interactive NO_COLOR golden-screen gates (AC2 from the #278 dogfood gate).
- #366 — troubleshooting spec for the PR #349 v3 coverage gate.
- #375 — recorded the distribution/packaging troubleshooting + open follow-ups (
docs/installer/installer-distribution-troubleshooting.md). - #377 — README above-the-fold install block + beta.3 → beta.4 doc bump.
- #373 — interim
3.0.0-beta.4version bump for the installer-fix republish.
#[3.0.0-beta.3] - 2026-06-04
Status: Third
@betapre-release. Completes the designed v3 installer wizard and makes it the default-and-only interactive installer, fixes the Pre-flight Summaryfile_additions: 0preview bug (#270), removes the--legacyv2 installer, and validates the whole thing with a real-subprocess beta dogfood gate (#278). Bundles the installer-wizard completion program #269–#279 plus framework phase-state / hook / CI hardening that landed across PRs #267 through #337 since beta.2 (2026-06-03 → 2026-06-04). Tagv3.0.0-beta.3(matchingpackage.json) to publish to the@betadist-tag via.github/workflows/npm-publish.yml.
#Installer wizard — rich designed flow (now the default and only installer)
- Pre-flight Summary
file_additions: 0fixed (#270 / #287) —src/cli/v3/planner.jsnow computes a real per-stepfile_count(walks eachfile-copysource at plan time viahandlers/file-copy.js countFiles) and aggregatesplan.files_total, so the Pre-flight Summary panel reports the true file count instead of always showing0. Foundation A0/A1/A2 also lands the ADR-102/104 amendment and a 10-step design reconciliation. - Screen-renderer foundation + silent-parity fence (A3 / #272 / #291) — the shared renderer underpinning the rich wizard, fenced so the
--silentNDJSON contract stays byte-stable. - Interactive input screens, Steps 1–7 (B1 / #273 / #298) — directory, detection, components, project name, channel, and confirmation screens.
- Install + completion screens, Steps 8–10 +
copy.progress(B2 / #274 / #302) — live install-progress and completion-summary screens; per-filecopy.progressevents. - Recovery screens — failure A1–A10 + pre-flight conflict B1–B8 (C1 / #275 / #306), channel/version C1–C6 + operational D1–D8 (C2 / #319), and the clean-verify success render (D2 / #276 / #320).
- Status / help / check-updates layouts, S1–S14 (D1 / #277 / #321).
#Installer — engine & CLI
install --to-version→ C6 version-pin conflict screen (#316 / #333).uninstall --purgeremoves.venv/(D7 purge variant) (#317 / #331).- v3 manifest + settings-merge result detail surfaced (#301 / #337).
context-files/claude-md/claude-settingsmarked required so--exclude-componentscannot drop the constitutional files (#295 / #336).output-formatterinfo()uses›/--/meta glyphs per design Amendment A (#290 / #335).
#Removed
--legacyflag and the v2 imperative installer removed (F1 / #279 / #332) —npx devforgeai installnow runs the v3 declarative engine exclusively. Deletedsrc/cli/commands/install-legacy.jsand its now-orphaned v2-only modules (install-wizard.js,installation-config.js,config.js,signal-handler.js,prompt-service.js,lib/banner.js,lib/copier.js,lib/components.js,lib/ide/). Shared modules reused by v3 (output-formatter.js,progress-service.js,lib/detector.js,lib/manifest.js,lib/claude-md-installer.js,lib/settings-merger.js) are preserved. Pulls the v3.1.0-scheduled removal forward into the beta cycle per ADR-104 D2 (#269/A0 amendment).
#Added — framework enforcement & CI hardening
- Real-subprocess beta dogfood gate (E1 / #278 / #330) —
tests/npm-package/integration/v3/beta-dogfood-gate.test.jsspawns the genuine CLI against a fresh dir and asserts NDJSON structural parity, non-TTY-no-hang, and realfile_additions > 0(guards the #270 regression). Runs ininstaller-testing.yml. - Phase-state boundary gates wired across the front-of-pipeline skills — system-architecture (#280 / #289), development-architecture (#281 / #296), solution-architecture (#282 / #299), ideation (#283 / #307), and brainstorming (#284 / #308); real PreToolUse boundary-block enforcement (#293 / #303, ADR-132).
- Constitutional
.yamlreference reads gated; dev-arch phase-06 promoted to[MANDATORY](#297 / #310, ADR-135).
#Fixed
- npm publish gate unblocked (gh#268 / #286) —
.github/workflows/npm-publish.ymlStep 4 andscripts/release.shnow run the authoritative scoped test subset (npm run test:unit+npx jest tests/npm-package/integration/v3/) instead of the fullnpm testsuite, which carried the gh#154 ~26% baseline-failure rate and permanently skipped thePublish to NPMstep. Tag-triggered,--provenance-attested publishing now works without depending on the separate gh#154 full-suite cleanup. - conviction-gate inline-string false-positive (#312 / #326 / #328, ADR-136) — the shared
command_invokes()matcher now anchors to string-start, so a literalphase-complete/phase-recordinside a quotedgh/git/echoargument no longer trips the gate and blocks the host command. phase-check --from=00returns 0 entering a workflow's first phase (#311 / #327).- Skill manifest / template cleanups — inert phase-state placeholders retired from the agents skill-template (#285 / #309); inert
governance.jsonline removed from 4[MANDATORY]manifests (#313 / #325). grep -cdouble-zero normalized + never-loaded boundary downgraded to WARN (#292); smoke-harnesslib/provisioning fixed (gh#314 / #324).
#3.0.0-beta.2 - 2026-06-02
Status: Second
@betapre-release. Bundles the complete v3.x declarative installer engine (ADR-100 through ADR-105, shipped in beta.1) plus the hardening, framework-rot tooling, hook-helper consolidation, and CI-gate work that landed across PRs #169 through #266 since beta.1 (2026-05-28 → 2026-06-02). This section continues to accumulate as open GitHub bug/enhancement issues are worked; tagv3.0.0-beta.2(matchingpackage.json) to publish to the@betadist-tag via.github/workflows/npm-publish.yml.
#Installer (v3 engine) — carried + hardened
- Full v3 declarative install engine bundled —
src/cli/v3/**(Parser → Validator → Planner → Executor → State Manager + Rollback), 8 handlers, JSON-Schema manifests (ADR-100 through ADR-105). Unchanged since beta.1; repackaged in this pre-release. install --helpEXAMPLES block +--versionchannel annotation wired per ADR-102 D7/D9 (#214, gh#202).- Operational paths resolve to the consumer root, not the
src/tree (#170). - v3 install path-safety unit coverage (#209, gh#203), engine branch-coverage mock-isolation fix + un-skip (#208, gh#206), CLI startup perf threshold loosened to 500 ms + WSL-skip restored (#207, gh#205), orphaned v2 installer tests retired + installer-testing gate tightened (#204).
@betainstall instructions added to README + stale "in design" phrasing refreshed (#169).
#Added
audit-wiringCLI +framework-rot-auditskill +/audit-rotcommand — file-level wiring-rot audit engine detecting orphans/dangling references (ADR-116; #229 PR-1, #230 PR-2).- audit-wiring sub-audits —
.pycode-file unreferenced detection (5th sub-audit, ADR-120; #241); retired-artifact reference detection + registry (6th sub-audit, ADR-122; #245); consumer-configurable reference corpus via--corpus-root/--corpus-suffixes(ADR-121; #244, gh#236). - Framework ceremony-to-gate CLI —
verify-prerequisite-pr(Gate-1; #196),verify-deletion-safety(Gate-2; #197), andpre-commit-pr-scope-guard.shhook (Gate-3, ADR-108; #199). pre-protected-path-write-guard.sh— Edit/Write guard for.git/hooks/+ system/tmp/,/var/tmp/(ADR-113; #223).- jq-required runtime contract (ADR-107) +
lib/tool-input-helpers.sh::extract_file_pathhelper with 18 callers migrated (#186 PR-1, #187 PR-2, #188 PR-3; planning #184/#185; gh#141). - Framework Incident Policy codified in CLAUDE.md +
src/mirror (#181). - CI gates —
python-cli-tests.ymlrunning the green CLI-gate pytest suites (190 tests; #232) promoted to a required check + restructured always-run (#239, ADR-119, gh#220); skill--workflowvalue lint (#213) backed by fullWORKFLOW_SCHEMASregistration (#210) incl. spec-driven-ui extract mode (#215, gh#180);devforgeai/**/*.shexec-bit lint + chmod-fix of 36 scripts (#256, gh#254); forward-only ADR-number uniqueness lint (#228); skill-ceremony lint (#233) + Execution-Model citation requirement (#258, gh#247).
#Changed
- Anti-skip ceremony consolidation — 16 skills now cite
.claude/rules/core/anti-skip-behavior.mdinstead of duplicating the ceremonial triad (#233, gh#221); verbose Anti-Skip Enforcement Contract blocks trimmed to a one-line pointer across 26 skills (#262, gh#248); redundant phase-loading "Do NOT skip" prose retired in 4 hook-backed skills (#257, ADR-124/126); 7 inert Reference-Loading[MANDATORY]manifests retired (#266, gh#259); stray propagating exhortations removed (#243, gh#221 follow-up). - Completed ADR-071
source-tree.ai.mdconsumer migration (#231). - Relocated
spec-driven-architecture/assetsto itsspec-driven-system-architectureheir + fixed render-template portability (#249, gh#238). - Hook tool-input extraction harmonized onto the shared
extract_file_path/ command-and-content helper (#217, gh#190). - Hook output + context-token hygiene — a hook context-token usage audit with recommendations (#191) motivated routing PostToolUse warnings to
additionalContextand block reasons to stderr (#193, gh#192). - Claude Code Review CI gated behind an opt-in
full-reviewlabel (#178).
#Fixed
- Pattern-A marker WSL DrvFs mtime-rounding bypass anomaly —
-ge -5floor (ADR-109; #201, withphase-gate-write/phase-gate-commitbypass marker, gh#179). render-ai-companionmanifest drift repaired +--checkCI gate added (#225, gh#189).- epic-coverage parser now recognizes integer
### Feature N:headers (#260, gh#253). _validate_story_idaccepts skill-identifier patterns (#219, gh#212).- w3-compliance derives a per-run timestamp session id, ending W3-AUDIT collisions (#222, gh#218).
- stale-QA D8 drops only its own contribution, not global block state (#176); dev step-ratio block scoped to step-tracked phases (#174).
- 30 reds repaired across
devforgeai_cli+commandssuites, folded into the Python CLI gate (#255, gh#224/ADR-120); 11 obsolete tests retired + their suite folded into the gate (#250, gh#227); audit-module tests decoupled from a legacy story fixture (#194, gh#142). verify-deletion-safety --internal-callers-allowedexemption covered + caller-path semantics disambiguated (#216, gh#200).- audit-wiring global-sorts matched corpus files to preserve
cited_inorder (#251). - Dead Edit/Write branches removed from
pre-tool-use.sh(#182, gh#140/ADR-106); diagnostic tracer stripped frompre-dual-path-write-guard.sh(#265); rc-reset lint fortests/hooksrc-bleed (#171, #177, gh#131-class).
#Deprecated / Removed
- Retired the
_archiveskill, scraper eval scratch,skill-creator, and a legacy site page (#172). - Retired F-1 test-plan pipeline modules (#195, ADR-094 follow-up).
#Spike / Research
- audit-wiring TypeScript code-rot resolver feasibility → NO-GO — AST is sound, but no language-agnostic GROUNDED-vs-INCONCLUSIVE mention-routing sweet spot exists for glob-loaded source trees (#252, ADR-123 / RESEARCH-012).
#Architecture Decision Records
| ADR | Subject |
|---|---|
| ADR-107 | jq-required hook runtime contract |
| ADR-108 | pre-commit-pr-scope-guard (framework Gate-3) |
| ADR-109 | Pattern-A marker mtime floor + phase-gate bypass marker |
| ADR-112 | Hook scratch-copy lib-dependency provisioning |
| ADR-113 | pre-protected-path-write-guard (.git/hooks + /tmp) |
| ADR-116 | audit-wiring engine + framework-rot-audit skill |
| ADR-118 | Skill-ceremony consolidation + lint |
| ADR-119 | Run Python CLI Tests required status check |
| ADR-120 | CLI test repair + code-file (.py) unreferenced sub-audit |
| ADR-121 | Consumer-configurable reference corpus |
| ADR-122 | Retired-artifact reference detection sub-audit |
| ADR-123 | TS code-rot resolver spike (NO-GO) |
| ADR-124 / ADR-126 | Phase-loading prose retirement |
| ADR-125 | Fold CLI command suites |
ADR housekeeping: concurrent-merge number collisions were renumbered — ADR-117 → ADR-118 (#237), ADR-124 → ADR-125/126 (#261, #263, #264) — and a forward-only ADR-number uniqueness lint added to prevent recurrence (#228).
#3.0.0-beta.1 - 2026-05-28
Status: First public pre-release of the v3.x installer modernization arc on the npm
@betadist-tag. The declarative install engine (ADR-100 through ADR-105) is implemented across phase PRs #155 through this PR. Tag av3.0.0-beta.1to publish via.github/workflows/npm-publish.yml.
#Highlights (Phase 10 — Integration + Release Prep)
- v3.x engine arc is COMPLETE. Schemas (Phase 2, PR #155), parser/validator (Phase 3, PR #156), engine core (Phase 4, PR #157), 8 handlers (Phases 5-6, PRs #158-#159), migration + back-compat (Phase 7, PR #160), channel detection (Phase 8, PR #163), dual-mode UX (Phase 9, PR #165), and integration + release prep (Phase 10, this PR).
- 5 end-to-end integration tests cover the full install flow:
golden-install,resume-flow,rollback-flow,verify-flow,legacy-equivalence-final(per ADR-101 §Verification). - CI enforces 90% coverage on
src/cli/v3/**(all 4 metrics: statements / branches / functions / lines) per ADR-101 D8. - STORY-048 Python contract runs on every PR (closes the PR #148 closeout addendum gap).
- Cross-platform CI matrix (Linux + macOS + native Windows) exercises the
python-venv-installhandler (ADR-103 §Verification). - npm-publish workflow ships v3.x-beta.* tag pushes to the
@betadist-tag (stricter regex per ADR-104 D1). - Tarball slimming — deleted
src/claude/skills/spec-driven-web-scraper-seo/web-scraper-seo-workspace/(~26 MB scraped fixtures) and tightenedpackage.jsonfilesto exclude deprecateddocs/Optimization/,docs/assets/,docs/demo.html,docs/index.html,docs/stories/. Tarball delta vs v2.0.2 baseline: -254 KB (within ADR-100 §Verification ≤ +200 KB budget). - Capability flag wiring closed — Phase 10 wires the previously unwired
--rollback,--resume, and--verifyflags from install.js to the orchestrator entry points; replaces Phase 7E_NOT_IMPLEMENTEDstubs with real implementations honoring ADR-101 D2 + ADR-101 D10 + ADR-102 §"Exit code contract" codes 6 / 7 / 8 / 5.
#Highlights (Phase 9 — Dual-mode UX, PR #165)
- First-class
--silentwith NDJSON event stream (ADR-102 §"NDJSON event envelope" schema_version "3.0"). - First-class
--interactivewith bicameral 10-step footer (ADR-102 D1). - Step 7 Pre-flight Summary confirm gate (ADR-102 D3).
- Per-component deterministic events (
copy.start/copy.completeregardless of duration per ADR-102 D12). - 30-second heartbeat cadence on long-running phases with 60-second liveness invariant (ADR-102 D13).
- 14-code exit contract (codes 0-12 + 130 SIGINT per ADR-102).
- Curated help-text style guide (ADR-102 D7): MODE / INPUT / CAPABILITY / PYTHON / UPDATE / OUTPUT / DEPRECATED ordering.
- One-time
-y/--yesdeprecation overlay (ADR-102 D8; removal v4.0). - One-time
-q/--quietdeprecation overlay (ADR-104 D8; removal v4.0).
#Highlights (Phase 8 — Channel detection, PR #163)
version-detectormodule querying npm registry + GitHub releases + GitHub main HEAD with 24h cache + offline-safe fallback (ADR-105 §"Decision").channel-switcherhandler orchestratesnpm install -g devforgeai@<channel>+.venv/rebuild on channel transitions (ADR-105 D9).- 8 new install flags + 3 new status flags + standalone
check-updatescommand surface (ADR-105 §Implementation). - Exit code 12 (UPDATE_AVAILABLE) emitted by
devforgeai status --check-updates --silentwhen install is stale (ADR-105 D8). - 3 channels:
stable(npm@latest),beta(npm@beta),edge(GitHub main HEAD) per ADR-105 D1. - Privacy-first — no phone-home; checks happen only on explicit user command (ADR-105 D4).
#Highlights (Phase 7 — Migration + back-compat, PR #160)
install-legacy.js— verbatim v2 imperative installer preserved behind--legacy(ADR-104 D2).install.jsshim routes default path to v3 engine,--legacypath to v2 imperative.manifest-migrate-v1-to-v2handler (9th handler) — runs early on FIRST v3 invocation against v2 consumers; backs up v2 manifest to.devforgeai-manifest.v1.backup.json, writes v3 schema withmanifest_schema_version: 2,channel: "stable",source: "npm",channel_history: [],installed_at_v2: true(ADR-104 §Decision).engines.nodebumped to ≥20.0.0,engines.npmto ≥9.0.0 (ADR-104 D7).--legacyflag emits one-time[DEPRECATED]warning per process; removed in v3.1.0 (ADR-104 D2).
#Highlights (Phases 5-6 — Handlers, PRs #158-#159)
- 8 handlers implementing the 4-method contract (
plan/execute/verify/rollback) per ADR-101 D2:file-copy(streaming-aware for >1 MB files including tree.json)template-substitute({{KEY}}substitution)directory-createsettings-merge(wraps existing SettingsMerger; consumer-wins on conflicts)claude-md-import(wraps existing claude-md-installer)python-venv-install(per ADR-103: cross-platform path resolution, 5 structured error codes,python.mode: venv|globalswitch)pre-commit-hook-installmanifest-write(v3 schema with all new fields)
#Highlights (Phase 4 — Engine core, PR #157)
- 5-layer engine architecture (Parser → Validator → Planner → Executor → State Manager) + Rollback engine per ADR-101 §Decision.
- State journal at
tmp/devforgeai-install-${SESSION_ID}/state.json(project-scoped per operational-safety Rule 2). - Pre-flight write-probe catches sandbox EROFS BEFORE handler.execute() runs (ADR-101 D12).
- Topological sort by
depends_on(ADR-101 D5). - Failure policy per component (
required→ fail-fast; non-required → handler'sfailure_policyper ADR-101 D11).
#Highlights (Phases 2-3 — Schemas + parser, PRs #155-#156)
- JSON Schema Draft 2020-12 framework manifest at
src/cli/manifests/install-manifest.json+_schema/install-manifest.schema.json(ADR-100). schema_version: "1.0"strict equality enforced via Ajvconst: "1.0"(ADR-100 D2; ports ADR-086/087 policy).additionalProperties: falseat every object level (ADR-100 D3).- YAML user-facing install config at
.devforgeai-install.yaml(ADR-100 D1). - Cross-reference validator detects cycles, missing handlers, immutable-path double-claims (ADR-101).
- NPM dependency count: 7 — added
ajv@^8.x(~120 KB) +js-yaml@^4.x(~30 KB) per ADR-100 D10. Previously 5 (chalk, ora, cli-progress, inquirer, commander).
#Highlights (existing arc, unchanged)
(Unchanged from the prior "Unreleased (Proposed)" entry below — preserved for completeness.)
Earlier-arc status: This release covers PR #8 through PR #138 (2026-05-05 → 2026-05-25), the broader v3.x modernization arc covering Spec-Driven Pipeline + ceremony-to-hook conversion + source-tree decomposition. v3.0.0 will ship as
v3.0.0-beta.1on the npm@betadist-tag, then GA on@latest. The installer engine rewrite (ADR-100 through ADR-105) is now IMPLEMENTED across PRs #155 through this PR (vs "in design" at the time the original entry was written).
#Highlights
- Spec-Driven Pipeline broken into 5 first-class skills — spec-driven-brainstorming (Business Analysis), spec-driven-ideation (Project Management), spec-driven-system-architecture, spec-driven-solution-architecture, spec-driven-development-architecture (ADRs 065-070).
- Ceremony-to-Hook conversion — ADR-076 codified the policy; ~12 new hooks now enforce what was previously prose-only across
.claude/agents/,.claude/skills/,.claude/rules/, and ADR/manifest paths. - v3.x Installer Modernization (in design) — Declarative install engine, dual-mode UX (interactive ↔ silent NDJSON), update channels (stable/beta/edge), cross-platform Python venv ownership. Documented in ADR-100 through ADR-105; not yet implemented.
- Source-tree as decomposed JSON artifact —
source-tree.mdmonolith replaced bydevforgeai/specs/context/source-tree/(schema-validated JSON folder; ADR-071/072). - 40+ new ADRs ratifying architectural decisions across ADR-065 through ADR-105.
#Added
#v3.x Installer Modernization (Design Only — Not Yet Implemented)
- Declarative install manifest schema (ADR-100) — JSON + JSON Schema Draft 2020-12 framework manifest at
src/cli/manifests/install-manifest.json; YAML user-facing install config; Ajv + js-yaml dependency proposal. - 5-layer install engine architecture (ADR-101) — Parser → Validator → Planner → Executor → State Manager + Rollback engine + 8 built-in handlers. 90% coverage target on
src/cli/v3/. - Dual-mode UX contract (ADR-102) — Interactive wizard and silent CI mode as co-equal first-class use cases; NDJSON event stream with
schema_version: "3.0"; 14-code exit contract (0-12, 130); bicameral 10-step footer + 13-screen design catalog. - Python end-to-end ownership (ADR-103) — Cross-platform venv management (POSIX
bin/+ WindowsScripts/); 5 structured error codes (E_PYTHON_MISSING, E_PYTHON_VERSION, E_VENV_CREATE, E_PIP_INSTALL, E_ENTRY_POINT);python.mode: "venv" | "global"switch. - Backwards compatibility & migration v2→v3 (ADR-104) —
manifest_schema_versionfield, v1→v2 migration handler,--legacyflag with one-minor-cycle deprecation,engines.nodebump from ≥18 to ≥20. - Version detection & update channels (ADR-105) — Three channels (stable / beta / edge);
version-detectormodule querying npm registry + GitHub releases + GitHub main HEAD; 24h cache at~/.config/devforgeai/version-cache.json; offline-safe fallback; exit code 12UPDATE_AVAILABLE; no-phone-home privacy guarantee. - Design source-of-truth at
devforgeai/specs/design/installer/— 5 markdown files (260 KB) covering foundation tokens, 13 happy-path screens, 32 recovery/edge-case screens, 14 status/help layouts, NDJSON event sequences. - Interactive visual prototype at
docs/installer/preview/— React/Babel canvas rendering all 75 designed screens with three rendering variants (default color, NO_COLOR=1, TERM=dumb ASCII fallback). - Hand-off prompts at
.claude/prompts/installer-wizard-design-*.md(5 design briefs) +.claude/prompts/installer-modernization-continuation-2026-05-26.md+.claude/prompts/website-readme-redesign-2026-05-26.md.
#Spec-Driven Pipeline Skills (PRs #55-#67)
- spec-driven-brainstorming rewritten as 11-phase Business Analysis skill (#55, ADR-065).
- spec-driven-ideation modernized into the Project Management phase (#57, ADR-066).
- spec-driven-system-architecture (#59, ADR-067) — System Architect skill producing the System Architecture Document + 6 constitutional context files.
- spec-driven-solution-architecture (#60, ADR-068) — Solution Architect skill producing feature decomposition.
- spec-driven-development-architecture (#61, ADR-069) — Development Architect skill producing DEVARCH documents whose paths populate story
source_devarchfrontmatter. test-plan.ai.yamlwired through system-architecture generation and QA validation (#62, STORY-634).- DEVARCH story seeds wired through
/create-story+ backend-architect (#63, FU-1 / FU-2). - Brainstorming Stream C methodology — Z14-Z18 additions (#29).
#Hooks & Enforcement
- Pattern A marker-file bypass mechanism for
pre-dual-path-write-guard.sh(#85, #87, #90, #97, #112, #138; ADR-081). Single-shot, < 30s fresh, consumed on bypass, audit-logged todevforgeai/logs/post-edit-write.log. pre-tree-json-read-guard.sh— blocks wholesale Read of multi-megabytesource-tree/tree.json(#113, ADR-092).pre-tmp-path-block.sh— blocks writes to system/tmp/(#115, ADR-093).pre-phase-record-reference-check.sh— phase-record reference validation hook (#105, #114, #129, ADR-091).pre-adr-append-only-guard.sh— blocks Edit/Write to existing ADRs withouttmp/_adr-status-update.markerbypass (#122, ADR-096).post-audit-attempt-counter.sh— C11 audit-attempt escalation hook mechanizingdiagnosis-before-fix.mditem 5 (#125, ADR-098).pre-qa-recommendations-fidelityhook (#79, ADR-075).- 3 enforcement hooks + git-ops completion — rules → deterministic gates (#52).
- SessionStart sandbox-state verifier hook (#19, RCA-067 REC-4 / Issue #12).
- Conviction-gate bypass user-approval gate (#21, RCA-067 REC-6).
- Single-line canonical JSON contract for evidence-log writers (#18, RCA-067 REC-3 / Issue #11).
- Conviction worklog Rule-16 validator (#88, ADR-083 PR-B).
- Hook test harness CI workflow + closes
pre-dual-path-write-guardtest gap (#133). - Hook infrastructure refactoring —
find_repo_root_for()extracted tolib/repo-root-helpers.sh(#134); 5 inlinefind_project_rootcopies migrated tophase-helpers.sh(#135); sharedparse_flag+find_repo_root_foradoption (#136); ADR-081 marker-bypass extracted tolib/marker-bypass-helpers.sh(#137). - Phase helpers infrastructure (
phase-helpers.sh) + AI companion regeneration (#26).
#CLI Validators
validate-devarch-seedCLI gate — H5 / ADR-082 — replaces prose-only Phase 01 structural validation in spec-driven-stories (#84).- Architecture CLI gates —
validate-pm-plan+validate-system-architecture-output+validate-solution-architecture-output+_schema_check.pyhelper (#92, ADR-084). - H5 harmonization —
devarch_seed_validatorcomposed into_schema_checkhelper +schema_version == "1.0"strict equality (#96, ADR-086). - CLI validator schema_version audit — closure-only audit, 0 in-scope drift (#99, ADR-087).
verify-story-creationsubcommand (#118, ADR-094).diagnose-dod-failuresubcommand v1 (#120, ADR-095).dev-preflightexit 4 —source_devarchvalidation per B2 (#128, ADR-099).
#RCA & Feedback Modernization
- /rca + spec-driven-rca modernized with hook-backed enforcement (#75, ADR-074).
- rca-document-composer subagent for spec-driven-rca phases 04-07 (#47, OPP-8).
- github-incident-from-rca + create-stories-from-rca aligned with ADR-074 contract (#78).
- github-incident-from-feedback added; spec-driven-feedback modernized (#76, ADR-074).
- QA recommendations fidelity —
/create-incident-from-recommendations+ generator fidelity fix (#22, ADR-075); silently-blocked Edit replaced with posting-manifest link-back (#81); SKILL.md doc tables aligned with manifest pattern (#83). - /recommendations-triage retired; /create-incident-from-queue added (recs → GitHub issues, not stories) (#98).
- /feedback-export-data folded into
/DF:feedback export-datasubcommand (#91). - ADR-074 RCA traceability markers rendered into story Provenance (#80).
#Documentation Modernization (Coaching Entrepreneur Stream)
Original [Unreleased] content from prior CHANGELOG state:
Coaching Entrepreneur — Emotional State Tracking (STORY-468)
- Updated
docs/api/API.md(session log schema, tone mapping, business rules BR-004/BR-005) - Updated
docs/architecture/ARCHITECTURE.md(data flow, check-in flow diagram, design decisions) - Updated
docs/guides/DEVELOPER-GUIDE.md(session log schema, extension points, STORY-468 tests) - Added troubleshooting entries 21-24 in
docs/guides/TROUBLESHOOTING.md(session log, tone adaptation, override, enum validation) - Added roadmap section in
docs/guides/ROADMAP.md(3 feature items) - Updated
README.mdmodule blurb with new doc links
- Updated
Coaching Entrepreneur (STORY-467) — API, architecture, developer guide, and module blurb updates.
Assessing Entrepreneur (STORY-465, STORY-466) — 6 module docs covering README, API, architecture, developer guide, troubleshooting, roadmap; updated for adaptive profile generation,
/assess-mecommand, recalibration support, and business rules.Hook-Based Phase Enforcement (EPIC-086, Sprint 22) — Phase Steps Registry (STORY-525), SubagentStop hook (STORY-526), TaskCompleted hook (STORY-527). Eliminates undetected phase skipping through automated validation.
#Source-Tree & Migration
source-tree.mdmonolith replaced bydevforgeai/specs/context/source-tree/AI-optimized decomposed folder artifact (#68, ADR-071 / ADR-072).- spec-driven-migration skill + 2 terminal-worker subagents (#69, ADR-073). Reference-sweep migration workflow.
- spec-driven-migration dogfood + sweep of source-tree.md residuals (#70).
- spec-driven-migration vacuous-pass dry-run pattern (#71).
- source-tree.md → source-tree/ via spec-driven-migration (#72).
- source-tree decomposed artifact regeneration — drift 1642 → 0 (#94); drift 324 → 0 (#104).
- migration-cluster-worker tool-whitelist expansion (#95, ADR-085).
#Subagents
- 8 reference-file frontmatter
name:fixes (#30, Wave 1). - Wave 2: qa-executor + spec-driven-rca + dead-code-detector + REF-002 hook (#32).
- Wave 3: readonly-fs-scanner + audit-orphans/budget + F07 documentation-writer reuse (#33).
- Wave 4a: mockup-extractor terminal subagent + phase-02a refactor (#35).
- Wave 4b: story-self-validator terminal subagent + phase-07 refactor (#36).
- Wave 4c: custody-chain-auditor terminal subagent + validate-stories refactor (#38).
- Wave 5: MISSING-004 + MISSING-005 placeholder renames (#39).
- story-requirements-analyst modernized (597 → 169 lines; #43, pilot).
- custody-chain-auditor trimmed under 600-line CI gate (655 → 572; #44).
- 4 pseudocode-dominant subagents modernized (2181 → 508 lines; #45).
#Other Skills
- spec-driven-qa prose reduction (~11%) matching sibling pattern (#74).
- spec-driven-ui PR-A modernization — canonical form + Phase 00 inline +
/create-uislim (#73, ADR-074). - spec-driven-stories SKILL.md + 8 phase files modernized (#77, PR-A).
- spec-driven-stories honest C-1 prose audit (#101, ADR-088, closes ADR-080 §FU#3).
- spec-driven-stories references investigation (#102, ADR-089, closes ADR-080 §FU#1).
- spec-driven-stories defensive-wrappers investigation — H8-CLI ship + 7 drops (#103, ADR-090).
- spec-driven-dev ADR-076 ceremony-to-hook modernization (#106).
#Research
- RESEARCH-011 — fresh AI file-format evaluation, post-2026-05-20 evidence only (#89).
- RESEARCH-007 committed as superseded by RESEARCH-011 (#93).
#Other
- STORY-667 genesis epoch support for evidence chain verification (#16).
- PyYAML permitted for CLI use (#124, ADR-097).
- GitHub Workflow for Claude Code (#8).
- Template-version detection + spec-driven-remediation template upgrade (#25).
- Test-plan-generation thesis codified (#119, ADR-094); subagent-based implementation (#127).
#Changed
- Plan-file-archive policy + ADR-064 amendment (#24).
- DevForgeAI.md extracted as framework steering + installer auto-import (#31).
- Always-loaded session context reduced 41.7K → 19.2K (-54%) (#54).
- Operational-safety.md Rule 4 expanded — sandbox policy (#20, RCA-067 REC-5 / Issue #13).
- DEVARCH seed prerequisite documented for
/dev(#117, PR #106 B2). coverage-analyzer+contract-specload thresholds fromtest-plan.ai.yaml; documenttest_plan_subset(#121).- Settings.json sync (#107 / #108 attempted
CLAUDE_CODE_WORKFLOWS=1then reverted — env var removed by Anthropic). - Rules-hooks modernization — hook hygiene chunks 1-2 of 4 (#49); chunks 3-4 of 4 (#50); plan archived (#51).
- test-folder-protection.md HALT ceremony trimmed to hook pointer (#53).
#Deprecated
spec-driven-architectureskill — superseded by 3 sibling skills (system / solution / development architecture) (#64, ADR-070)./recommendations-triagecommand — superseded by/create-incident-from-queue(recs → GitHub issues, not stories) (#98)./feedback-export-datastandalone command — folded into/DF:feedback export-datasubcommand (#91).source-tree.mdmonolith — replaced bysource-tree/decomposed JSON folder (#68, ADR-071).-y/--yesand-q/--quietinstaller flags — aliased to--silent/--output=text --verbose=0respectively in proposed v3.x; removal scheduled for v4.0 (ADR-102 D8, ADR-104 D8).- Imperative
src/cli/commands/install.js9-phase wizard — proposed v3.x replaces with declarative engine; retained behind--legacyflag in proposed v3.0.0; removal scheduled for v3.1.0 (ADR-104 D2).
#Removed
__pycache__from git tracking.- Duplicate STORY-553 completed version in archive (preserved before v2.0.1).
devforgeai_cli.egg-info/pre-existing.gitignoreviolation (#28)..claude/memory/Constitution/deprecated mirrors (#41).- Ephemeral
STORY-*-session.mdremnants untracked + gitignored (#37). - Orphan
internet-sleuth-integration/completing ADR-045 (#40). .claude/memory/files pruned 25 → 4 (#48).- Dead Registry Drift block from pre-commit hook (#34).
- Retired skill/command references in research skill + framework context files (#67).
- Repointed retired
spec-driven-architectureskill + command references (#66).
#Fixed
spec-driven-ui validate_context.py— source-tree migration + path bug + folder handling + dual-path repo-root detection (#110).spec-driven-system-architecturephase-03 — source-tree generation + obsolete template retirement + noun-swap residuals (#116).- Multi-match-safe hook flag parser implementation plan (#17 → impl across hook PRs).
- Pattern A marker repo-root resolution from editing file's path (#112) — closes the
$CLAUDE_PROJECT_DIRenv-propagation gap. pre-dual-path-write-guard.sh— removed silentDEVFORGEAI_DUAL_PATH_GUARD_ENFORCEgate that didn't propagate into hook subshells (#109); follow-up housekeeping (#111).- PR-#114 diagnostic tracer — stripped after mystery closed (#129).
spec-driven-cc-guidereference files — typo filenames + orphan duplicates (#56).subagent-size-check—set -ebug + orphan-audit tracking (#46).- ADR-074/075/076 collisions renumbered to ADR-077/078/079/080 + ADR-081 bypass-mechanism proposal (#82).
- ADR-097 audit-attempt-hook renumbered to ADR-098 (collision with PR #124 PyYAML ADR) (#126).
- ADR-094 status flipped to Accepted post-merge (#123).
#Security
- Conviction-gate bypass requires user approval (#21, RCA-067 REC-6).
- Single-line canonical JSON contract for evidence-log writers — prevents log corruption / injection (#18, RCA-067 REC-3).
- SessionStart sandbox-state verifier — detects partial-state at boot and emits recovery commands (#19, RCA-067 REC-4).
- ADR append-only enforcement —
pre-adr-append-only-guard.shblocks ADR mutation without marker bypass (#122, ADR-096). - No-phone-home guarantee in proposed v3.x version detection (ADR-100 + ADR-105) — user-initiated checks only, 24h cache, offline-safe.
#Architecture Decision Records
40+ ADRs ratified during this arc. Notable clusters:
| Cluster | ADRs | Subject |
|---|---|---|
| Spec-Driven Pipeline (Stream A) | ADR-065 to ADR-070, ADR-074 | 5 first-class architecture skills + RCA modernization |
| Source-Tree Decomposition | ADR-071, ADR-072, ADR-073 | source-tree.md → JSON folder + migration skill |
| Ceremony-to-Hook Policy | ADR-076, ADR-081, ADR-091, ADR-092, ADR-093, ADR-096, ADR-098 | Convert prose enforcement to hooks |
| CLI Validator Family | ADR-082, ADR-084, ADR-086, ADR-087, ADR-094, ADR-095, ADR-099 | Binary-gated workflow validation |
| Operational Safety | ADR-081, ADR-085, ADR-090, ADR-097 | Marker bypass + tool whitelist + PyYAML permission |
| v3.x Installer Modernization (Proposed) | ADR-100 to ADR-105 + ADR-004/009 amendments (later reverted) | Declarative engine, dual-mode UX, channels |
See devforgeai/specs/adrs/ for the full ADR set.
#Notes & Open Items
- v3.0.0 ships as
v3.0.0-betaon npm@betadist-tag first, then GA on@latest. Beta window: ~4 weeks (per ADR-104 D1). - The
release/v2.5.0branch was merged to main but never tagged or documented — intermediate state folded into this v3.0.0 entry. - ADR-004 and ADR-009 received in-flight amendments during the v3.x design session (2026-05-26) that were subsequently reverted by user direction. The amendments documented post-publication discoveries (Python venv ownership, pre-commit hook auto-install, undocumented
status/uninstallcommands, thecontext-filesAS-IS gap). These discoveries are still planned for documentation in the forthcomingINSTALL.md(PR-1 of v3.x docs work). - Three v3.x installer ADRs (ADR-100 through ADR-105) remain in
Proposedstatus pending implementation. Status flips will occur as implementation phases ship.
#1.0.0 - 2026-03-03
#Added
Core Framework
- 44 specialized subagents for architecture, testing, QA, security, documentation, and more
- 26 inline skills covering the full software development lifecycle
- 46 slash commands from
/brainstormthrough/release - 6 constitutional context files (tech-stack, source-tree, dependencies, coding-standards, architecture-constraints, anti-patterns)
- 4 sequential quality gates blocking progression until standards are met
TDD Workflow (
/dev)- 10-phase development cycle with mandatory Red-Green-Refactor
- Phase 04.5 and 05.5 AC compliance verification
- Test folder write protection (only authorized agents in designated phases)
- Coverage thresholds: 95% business logic, 85% application, 80% infrastructure
Configuration Layer Alignment Protocol (CLAP)
- 15 validation checks across contradiction, completeness, and ADR propagation categories
/audit-alignmentcommand for on-demand validation
Hook-Based Phase Enforcement (EPIC-086, Sprint 22)
- STORY-525: Phase Steps Registry with 72 steps across 12 phases
- STORY-526: SubagentStop hook for automatic invocation tracking
- STORY-527: TaskCompleted hook for step validation gates
- Eliminates undetected phase skipping through automated validation
Root Cause Analysis System
/rcacommand with 5 Whys methodology- diagnostic-analyst subagent for cross-reference investigation
/create-stories-from-rcafor converting findings into actionable stories
Feedback System
- 7 commands for capture, search, export, import, and reindex
- AI analysis and observation extraction from subagent outputs
Sprint Planning
/create-sprintwith automated story selection and capacity planning- Dependency graph analysis with cycle detection
Cross-AI Collaboration
/collaborategenerates portable documents for sharing with external LLMs
CLI Validation Tools
devforgeai-validatePython CLI for phase management, DoD validation, and story checks- Pre-commit hook integration for commit-time validation
Documentation
- API reference (docs/api/API.md)
- Architecture guide (docs/architecture/ARCHITECTURE.md)
- Troubleshooting guide (docs/guides/TROUBLESHOOTING.md)
- Developer guide (DEVELOPER.md)