Releases
DevArch evolved from itself.
Every shipped change, newest first. The rules were forged building the thing that enforces them — so the changelog is the case study.
v5.5.0Current
2026-07-29
The plan gate actually blocks
DevArch's brand claim is gates that hold. For the entire namespacing era, the plan gate held nothing. plan-gate-check.sh exited 0 on every path and wrote its banner to stderr — and under Claude Code's PreToolUse contract, exit 0 lets the tool call proceed while stderr on exit 0 never reaches the model. The Edit went through, and the release instructions, including the rm line that clears the gate, were addressed to the one party that never received them: a gate only the user can see but only the model can clear cannot be cleared. Underneath sat a second defect — session-start.sh wrote the namespaced gate file while all three plan-gate hooks read the unsuffixed one, so the check hook never once saw the gate the start hook set; it only ever fired on stale pre-namespacing files that nothing cleared. Found by external review, using DevArch's own event spine as the forensic record. Exit 2 is now the block (ADR-0015) — the only PreToolUse code that both stops the call and delivers stderr to the model, which makes every DevArch gate self-releasing by construction, since the model finally learns what clears it. A new hooks/gate.sh owns the gate path and state vocabulary outright, so no hook carries its own copy of the string; emit-event.sh, which had been reading the namespaced file all along while the enforcement hook read the unsuffixed one, now reads through the same accessor. Enforcement fails open on any gate it cannot tie to the current session — load-bearing precisely because the gate now really blocks, since a stale file that was merely noise under exit 0 would wedge every Edit under exit 2. Session id generation moves from xxd to od and refuses loudly rather than writing state under an empty id. New tests/test-gate-pairing.sh (43 assertions) drives the real hooks and asserts the file one writes is the file another reads — the plumbing no test covered — with falsifiability verified by mutation on each mechanism independently. Enforcement and instruction are now two layers: Session Start gains step 4a, clear the gate, because the sequence never said to and the clearing instruction lived only in the banner that arrives after a block — so every session, including a fully compliant one, used to pay a blocked-Edit round trip. A compliant session now clears the gate before its first Edit and never sees a block, which means a block signals a genuinely skipped process. The two states stay asymmetric on purpose: plan-review guards a user decision and blocks unconditionally, while session-init guards a process step and blocks only as the backstop to a guide step that now exists. A valve bounds the failure mode this release introduces — after five consecutive blocks against an unchanged gate the hook clears it itself, records the auto-release, and lets work proceed, so the first release with real blocking ships with its own kill switch. Session end now clears the session's own gate, and devarch update sweeps dead gates across every registered repo, using event-log absence as a race-free liveness signal. This is a behavior change, not just a fix: sessions that skip the session-start steps are stopped at their first Edit rather than nagged. In one recorded session the old gate fired 40+ times over 50 minutes while work proceeded normally, and a sensor that cries wolf every minute trains every observer to tune out the glyph.
v5.4.0
2026-07-28
Objectives: business outcomes that can actually be evaluated
Every DevArch artifact so far took the work as its unit — proposals capture intent-to-do, plans decompose it, ADRs record decisions. None captured what must become true outside engineering, or what evidence would settle it. /devarch:objective (ADR-0014) fills that gap, and it exists to prevent one specific irreversible failure: an objective stated as an adjective, pursued for months, and evaluated at the end against a baseline nobody captured. Once work begins, the before state stops being observable, and no later diligence recovers it. Each outcome is a Behavior Statement one level up — becomes true, by when, because, falsified when, with the falsification condition stated before the work starts — and from it a measurement plan is derived: baseline, evidence source, cadence. The baseline is asked as its own dedicated intake question because it is the one field that cannot be recovered later. Outcomes grade RED/YELLOW/GREEN against an evaluability rubric, and may only go ACTIVE on GREEN: the outcome names a value an outsider could check, the baseline is recorded with its capture date, the evidence source already produces data and is independent of the party being judged, and a falsification condition exists that events could plausibly trigger. Closure distinguishes UNRESOLVED — the named evidence source produced nothing usable by the deadline — from MISSED, because a failed measurement is not a failed objective. A business-readable brief projects the GREEN outcomes into plain language for the person the objective is for, with field labels, status tokens, and DevArch vocabulary barred by a mandatory no-jargon check, and a requirement that it state what would count as failure. Deliberately not built: no objective-review skill, no planner integration, and no auto-firing closure rule.
v5.3.0
2026-07-26
Quality-weighted test coverage assessment
A new assessment-family skill answers the question line coverage can't: how much of a codebase's state-changing behavior is actually verified? /devarch:test-coverage-assessment (ADR-0013) builds a side-effect function inventory, runs the repo's own test tooling with coverage — invocation is consent, failures become labeled degraded runs, nothing is ever installed — and grades each function's best covering test RED/YELLOW/GREEN. The headline is the verified-behavior ratio: the share of side-effect functions with at least one GREEN test asserting on their actual mutation, a number a mock-only test cannot move. Findings live in a committed SQLite store (docs/context/test-coverage.db, append-only) with the report as a derived projection; runs can be scoped to a subtree, and the skill closes by offering its top gaps as candidate proposal items. Verified real-path against this repo's own website: a 14.3% verified-behavior ratio against 92.3% statement coverage — the factor-of-six gap is the reason the skill exists. Also in this release: /devarch:adr-interview now runs adr-review before offering acceptance, so the verifier informs the decision.
v5.2.0
2026-07-24
Fix commit-script crash when no sessions are pending archival
git-commit.sh runs under set -euo pipefail. Its session-archiving pass built the candidate file list with an unquoted glob piped through ls -t | tail -n +6 | while read; when zero docs/context/session-*.md files existed to archive, the glob failed to expand, ls errored on the literal pattern, and pipefail propagated that failure straight through set -e — aborting the entire commit (staging, message, and push) with no clear signal why. The archive step is advisory, not commit-critical, so a missing or empty session directory should never have been able to kill a commit. Session-file discovery is now a null-glob array (shopt -s nullglob), gated on an explicit count check before ls/mapfile ever runs — no behavior change when session files are present.
v5.1.1
2026-07-23
Namespaced command names in the docs
Claude Code added a built-in /recap command, claiming the bare name DevArch's docs still told users to type. Nothing in DevArch broke — its skills ship as a plugin and have always been namespaced /devarch:<skill> — but several documents advertised the unprefixed form, which now lands on the built-in instead. The lifecycle rules, the website terminal, and the CLI-in-action page now cite /devarch:recap and /devarch:finalize, restoring the ADR-0009 pairing between the installed rules and the base template, which had drifted. The README's inventory is corrected as well: 18 skills, 14 agents, 10 hooks, with namespaced examples and the retired /da-status reference dropped. No payload change — the installed rules, hooks, agents, and skills are byte-identical to v5.1.0. Bare command names are not DevArch's to hold; the /devarch: prefix is the only durable form.
v5.1.0
2026-07-20
Team mode: per-developer session context
DevArch learns to share a repo. A new team capability (ADR-0012) namespaces session context per developer — summaries and the .current-plan pointer move to docs/context/<user>/, keyed by a slug derived from git config user.email, so n developers can finalize in the same minute on the same branch without a collision, and a pull of a teammate's summaries can never hijack your recap or your plan. The mode lives in the committed .devarch descriptor, so every clone resolves it identically; activation migrates existing summaries in the same step, and a missing user.email is a loud refusal, never a silent fall-back to the flat layout. One sessions-root resolver holds the only mode conditional — hooks source it, agents and skills follow the same documented procedure, and solo repos are byte-for-byte untouched. The new read-only /devarch:team-standup rolls up every developer's stream and flags blocker classes hitting more than one dev, and capability-sniffer suggests (never auto-activates) team when history shows multiple committers.
v5.0.0
2026-07-14
The harness spine: always-on event log and inline banners
The per-session event log becomes the harness's source of truth (ADR-0011): every session writes an append-only log with no setup step, attributed per-event through the hook payload's session UUID — safe under concurrent sessions, with subagent events tagged into the spawning session's log and archival at session end. Every hook now reports through a unified emit layer that renders the JSONL row and a grammar-conformant banner from one call, per a documented seven-family banner grammar that rule 17a extends to main-session lifecycle announcements. A new PostToolUseFailure hook finally observes failing test/build runs, and the demo-events page is promoted to a live companion page that follows the active session. Breaking: native Windows support is retired (ADR-0010) — the PowerShell hook harness and Windows installer are removed; Windows is WSL-only via the universal installer.
v4.8.0
2026-07-14
Proposals and the ADR open-questions interview
Two gaps in the decision pipeline are closed. /devarch:proposal captures a work-set — a client punch list, a triaged issue set, a PRD's feature list — as a proposal in docs/proposals/, with per-item ids, a checkable "done when", and accept/reject/defer tracking; /devarch:proposal-review runs automatically and checks every item against the decision record, and accepted proposals feed the session-planner as its fifth reference source (ADR-0008). And ADRs can now carry open questions: an ADR with unresolved questions stays a draft, and DevArch asks — never assumes — whether to run /devarch:adr-interview, which resolves them one at a time, folding each answer back into the record until the ADR can be accepted (ADR-0009). Rule-firing validation coverage grew from 17 to 28 fixtures.
v4.7.0
2026-06-30
Canonical plan storage with a current-plan resolver
Plans now live in exactly one place. Each plan is written to docs/work/<feature-slug>/plan.md, and a docs/context/.current-plan pointer lets every consumer — plan-review, the standup and dashboard skills, and the session hooks — resolve the active plan without a hardcoded path. This retires the old split where a live copy, a timestamped archive, and the native plan-mode plan all landed in different places under colliding names. Recorded in ADR-0007.
v4.6.0
2026-06-09
The rule-firing validation harness is now real
This release promotes the rule-firing validation harness from a design sketch to a runnable SDK driver, with a full fixture suite you can baseline against any model — 17/17 on the current baseline, with no rule language changed. The prompt-literalism note now states validation-based coverage: rules are re-validated against each new model and each new model line, rather than assumed to only get more literal over time.
v4.5.0
2026-06-09
DDD with three ways in — and a way to model from the code you already have
The domain-modeling capability now meets you wherever you start. Three entry paths — a facilitated knowledge-crunch from a brainstorm, automated extraction from an existing codebase, or a primer loop that turns your notation into plain-language questions for a subject-matter expert and folds their answers back in. Two engines sit underneath: Engine 1 facilitates the crunch, Engine 2 reads your code and proposes a glossary, structure, and a strawman behavior model — every element tagged with how confident it is (observed, inferred, or proposed). SME replies auto-confirm the elements they affirm, with the git diff as the audit trail. See ADR-0006.
v4.2.0
2026-06-06
Installer hardening + Unix hidden-file fixes
v4.1.0
2026-06-05
Decision-aware planning
session-planner now reads your recorded decisions first — ADRs, the project profile, DDD notation, and the last session's open items — and lets them shape the plan. Every plan carries a “References consulted” list, and the new /devarch:plan-review skill adversarially checks each phase against them.
v4.0.0
2026-06-01
Self-contained installer, registry, and offline licensing — DevArch is now a product
One-command, no-clone install (devarch-universal.sh) to ~/.devarch; a single global ruleset via @import; a certbot-style registry; offline ES256 licenses verified with no phone-home; an isolated container kit; and seat-based purchase through Polar.
v3.3.0
2026-05-30
Tuned and validated for Claude Opus 4.8
Extends prompt-literalism guidance through Opus 4.8 and adds a rule-firing validation harness so each new model is a re-validation, not a guess. No rule changes — a sharpening pass.
v3.2.0
2026-05-09
Session isolation and per-session file tracking
A 6-char hex session ID namespaces gate and state files so concurrent sessions never collide, and per-session file tracking gives the work-summary-writer an authoritative list of changes.
v3.1.0
2026-05-08
Finalize skill audit and fix
v3.0.0
2026-05-05
Tuned for Claude Opus 4.7
Retunes the rules for a model that follows instructions more literally — triggers, overrides, and templates sharpened for prompt literalism.
v2.5.0
2026-05-01
Multi-ADR review mode
v2.3.0
2026-04-24
Rule 8b — Co-Located Wire-Type Sharing
v2.2.0
2026-04-23
Integration Reality — the No-Stub-Under-Test rule
A phase named after an integration must have a test that drives the real subprocess, runtime, or migration. A stub of an owned dependency can't be the acceptance gate.
v2.1.0
2026-04-23
Boundary Statements and the boundary-check hook
v1.8.0
2026-04-19
Trial license with IP protection
v1.7.0
2026-04-13
Deprecate project-level hooks in favor of user-level hooks
v1.6.0
2026-04-13
Hook paths resolved at install time
v1.5.0
2026-04-11
ADR conversation gate and /architect-review
v1.4.0
2026-04-06
Behavior Statements, Test Derivation, and Test Grading
Every side-effect function gets a structured statement before any test is written, tests are derived from it, and the suite is graded RED / YELLOW / GREEN.
v1.3.0
2026-03-19
Progressive Capability Activation
Activate DevArch's deeper capabilities (e.g. DDD) only when a project's complexity demands them, rather than carrying everything from day one.
v1.2.0
2026-03-14
Audit and cleanup
v1.1.x
2026-03-06 — 2026-03-14
Skills, hooks, and the plan-mode gate
v1.0.0
2026-03-05
Initial release — CLI, agents, and the lifecycle rules