v0.104.0
Immutable
release. Only release title and notes can be modified.
Added
- Task-attributed commits are checked against the active task's declared files at commit time, with violations and accepted scope widenings carried into build_review evidence. (implementation PR #1534).
- Self-host dispatches now prove the live checkout is read-only with a two-sided bwrap probe, so concurrent operator edits during a contained build no longer halt the run; unproven or opted-out dispatches keep the prior fail-closed behavior. (implementation PR #1698).
- Build-review configuration accepts causalIntegrity as an input alias for rootCause. (implementation PR #1766).
- Adds
conduct-ts rewind --to <step>to return a halted feature to an earlier pipeline step, and rebase- or resume-invalidated test-suite and build-review proofs are now mechanically re-verified instead of halting the pipeline on a stale proof. (implementation PR #1741). bin/installgains a--channelflag andAI_CONDUCTOR_CHANNELenvironment variable to explicitly select the first-run update channel, with clear guidance when it silently falls back to stable. (implementation PR #1720).- build_review now treats infrastructure failures (mechanical rubric faults) as their own recoverable lane, with a bounded automatic retry and a new
conduct-ts build-review record-reduced-coverageaction for operators to record a reduced-coverage decision when retries are exhausted. (implementation PR #1734). - The daemon's IN-PROGRESS dashboard now shows live active-subagent counts and running input/output token totals for in-flight steps, sourced from a new throttled provider-stream observation and configurable via the new
provider_stream.min_interval_mssetting. (implementation PR #1742).
Changed
- Story artifacts under
.docs/stories/are now corrected in place during DECIDE instead of accumulating additive amendment blocks; all other accepted DECIDE artifacts keep the additive-amendment rule. (implementation PR #1539). - Acceptance-spec authoring is disposition-driven — criteria proven at a lower layer complete the acceptance_specs gate with grounded disposition records instead of fabricated specs, and BUILD prefers applicable local patterns. (implementation PR #1678).
- The plan skill requires every task to carry a "Done when:" block of falsifiable completion checks, closing unbounded outcome language at DECIDE so completion review has a definite stopping point. (implementation PR #1764).
- build_review rubric results are engine-stamped from findings-only provider payloads, with honest per-field rejection diagnosis and a behavioral (execute-the-parser) contract drift guard, ending the invalid-provider-result rejection loop. (implementation PR #1748).
- The
rootCausebuild-review rubric now ships disabled by default; enable it explicitly withbuild_review.rubrics.rootCause.enabled: true. (implementation PR #1816).
Fixed
- The FINISH publication retry budget no longer exhausts on verified transitions, and new halt reasons name a stuck PR-state check or an unmoved publication transition. (implementation PR #1565).
- The tautology rubric's counterfactual checkout now resolves the conductor's dependency installation, so changed suites execute instead of aborting at import. (implementation PR #1699).
- The opt-in Tautology build-review rubric now classifies counterfactual test runs by process exit code instead of parsing Vitest/pytest-shaped output, so it returns a real verdict on RSpec and other frameworks instead of always reporting an infrastructure failure. (implementation PR #1705).
conduct --update/bin/updatenow detect the real installed release from the checkout instead of misreporting an off-tag tagged-channel install as permanently up to date. (implementation PR #1578).- Fixed a stale manual-test verdict discovered at FINISH becoming unroutable, so the daemon no longer stalls on that SHIP validator instead of routing it back for retry. (implementation PR #1673).
- Provider token telemetry now reports fresh input consistently across Claude and Codex, with cached prompt volume shown separately in daemon logs and feature usage totals. (implementation PR #1689).
- Codex usage-cap exhaustion is now reported as usage exhaustion with an hour-scale wait instead of a misleading 300-second rate-limit retry loop. (implementation PR #1704).
- build_review finding identities are content-anchored, so re-worded findings can no longer escape their accepted dispositions across review laps. (implementation PR #1696).
- Self-host containment refuses itself on hosts where the wrap would deny a provider its own nested sandbox, instead of wrapping a dispatch that cannot write any file. (implementation PR #1719).
- A concurrent provider process's plugin lock markers no longer halt a self-host build. (implementation PR #1722).
- Shipped-record timing now reaches the
measuredstate instead of getting stuck atpartial/unavailable, and apartialstate's## Timeblock now names its downgrade reason. (implementation PR #1727). - A build_review pass no longer resets the cumulative kickback convergence cap by itself; the cap is credited back only when a rebase actually invalidates a judged build_review, closing a loophole that let build_review cycle indefinitely across passes. (implementation PR #1728).
- build_review findings anchored to dot-leading repository paths such as
.docs/plans/are accepted, so a scope violation in a plan file can be reported instead of looping until retries are exhausted. (implementation PR #1756). - build_review Scope no longer flags the engine's own appended remediation plan tasks as an unauthorized out-of-plan change. (implementation PR #1757).
- A Codex dispatch whose shell tool calls could not be spawned is now reported as a failed dispatch instead of a success, so a build_review rubric that could not read the diff raises an infrastructure failure rather than a hollow PASS. (implementation PR #1758).
- build_review rubrics no longer treat engine-appended remediation tasks as findings or as authority, so remediation laps converge instead of expanding their own judgement surface each round. (implementation PR #1761).
- Installed harness skills now stay explicit-only unless same-session workflow composition requires implicit invocation. (implementation PR #1762).
- Operators can accept build_review findings on every rubric; identity round-trip no longer rejects the engine's own output. (implementation PR #1770).
- FINISH no longer halts on genuine PR prose when the authoring pass leaves the engine's body-floor marker in place; a floored body is now recognized by its content, not by marker presence alone. (implementation PR #1773).
- prd-audit reads FR verdicts only from the report's Verdict Table section, so a prior-cycle history table can no longer block an all-ALIGNED audit. (implementation PR #1780).
conduct-ts plan-protected-targetsnow catches a protected-artifact reference named in a task's prose even when that task declares a**Files:**set, and.docs/decisions/is now a protected directory alongside architecture, plans, specs, and stories. (implementation PR #1750).- A conductor run no longer halts with a phantom "Expected to match before persist conductor transition" conflict after the engine skips a track- or tier-skipped gate mid-run. (implementation PR #1793).
- build_review no longer reuses a stale prior-lap FAIL verdict as the current lap's outcome, and mechanical-fault HALTs and
build-review findingsoutput now name the last recorded infrastructure fault. (implementation PR #1801). conductnow works when invoked through the~/.local/binsymlink created bybin/install, instead of failing to locate its own harness directory. (implementation PR #1814).