Immutable
release. Only release title and notes can be modified.
Added
- Daemon OpenTelemetry traces now identify the feature branch and executing engine version. (implementation PR #2080).
- OpenTelemetry now exports cumulative per-feature cost and token gauges after each terminal step. (implementation PR #2104).
- Remediation findings owned by existing plan tasks route back to BUILD via the existing-task disposition, charging the gate lap allowance and never the plan-growth allowance. (implementation PR #2189).
- Adds a coverage-binding gate that verifies plan criteria against cited task completion checks. (implementation PR #2135).
- Daemon runs can now process multiple features concurrently within a single repository. (implementation PR #2075).
- The daemon prints a startup warning whenever its effective concurrency exceeds 1, describing the extra rebase churn and spend to expect and how to return to serial dispatch. (implementation PR #2240).
- The daemon and engineer workflows now require GitHub CLI 2.73.0 or later and clearly report unsupported JSON fields. (implementation PR #2243).
- Adds durable post-join build-review remediation adjudication that classifies joined findings and safely routes follow-up work. (implementation PR #2087).
- Gate verdicts are persisted and shown in daemon and interactive terminal output. (implementation PR #2375).
- Configure OTLP HTTP exporter headers from environment-variable references. (implementation PR #2369).
Changed
- Plans now declare only genuine task dependencies and tight file sets, so BUILD can fan out independent tasks instead of serializing them. (implementation PR #2073).
- The prd_audit remediation append allowance is raised from 5 tasks / 25% of the plan to 8 tasks / 50%. (implementation PR #2131).
- Plans now assign production-boundary integration ownership and must provide machine-grounded, semantically reviewed coverage for citable ADR decisions. (implementation PR #2183).
- Build skills defer aggregate verification to the dedicated test_suite gate and use its failure evidence for scoped repairs. (implementation PR #2232).
- The hosted documentation site now publishes from the
stablebranch at each release cut instead of from every merge tomain. (implementation PR #2363). - The pre-BUILD coverage-binding judge (
coverage_binding.judge.enabled) is now on by default. (implementation PR #2116). - The as-built architecture review now follows an explicit context budget (bounded diff/log/search reads, no re-reading policy text) to avoid mid-review compaction. (implementation PR #2379).
- The as-built architecture review and prd-audit now delegate evidence gathering to host-native subagents and grade from bounded digests, keeping the reviewer's context for judgement. (implementation PR #2380).
- Release publication now requires one successful live-provider E2E instead of every configured provider. (implementation PR #2438).
Fixed
- A build_review aggregate from a prior lap no longer replays its findings as kickbacks. (implementation PR #2094).
- build_review no longer stamps its aggregate with a stale lap identity when the test-suite evidence is reused. (implementation PR #2110).
- A remediation finding the planner dispositions as a human decision is no longer reported as a missing finding. (implementation PR #2112).
- Build-review cache entries now miss when the reviewer skill text or the engine build changes. (implementation PR #2115).
- A SHIP-tail verdict gate resumed as its group's last member no longer discards the verdict it just produced and retry until its budget is spent. (implementation PR #2117).
- The daemon's cleared-HALT watcher now carries a bounded polling fallback, so a halt cleared before the watcher is ready (or a dropped filesystem event) is still picked up within one poll interval, and watcher errors are logged instead of swallowed. (implementation PR #2118).
- PRD audit citations now accept every task identifier declared by the active plan. (implementation PR #2105).
- Configuration now prevents conditional or disabled gating and structural steps from bypassing required workflow enforcement. (implementation PR #2107).
- A remediation halt caused by a planner gap-id mismatch now reports the halt rationale the planner recorded, instead of only the id mismatch. (implementation PR #2129).
- Build review distinguishes counterfactual test sensitivity from infrastructure failures. (implementation PR #2109).
- A plan task citing a placeholder artifact path such as
.docs/plans/<slug>.mdis no longer treated as targeting another feature's sealed artifact. (implementation PR #2130). - A prd-audit Verdict Table row may cite every plan task its evidence spans, as a comma-separated list; a FIXABLE row must still cite exactly one owning task. (implementation PR #2134).
- Prevents approved ADRs without citable decisions from landing. (implementation PR #2133).
- ADR decisions numbered as
**1. Title.**are now citable as governing clauses, so a remediable as-built finding naming one no longer halts for a human. (implementation PR #2141). - Install and uninstall banners now say AI Conductor Harness. (implementation PR #2142).
- Operator over-scope decisions on no-owner (NC) findings now survive prd_audit lap renumbering and line-anchor drift instead of re-halting as unknown-criterion. (implementation PR #2144).
- Operator over-scope decisions on NC findings now survive laps that reword the evidence summary, not just renumbering and line-anchor drift. (implementation PR #2146).
- The prd_audit skill reuses recorded operator-decision wording for already-decided no-owner findings, so decisions keep matching across re-graded laps. (implementation PR #2148).
- Remediation gaps whose tasks merely cite a protected artifact as evidence stay dispatchable instead of halting as Missing. (implementation PR #2150).
- Custom steps with only a completion artifact no longer crash interactive conductor runs. (implementation PR #2136).
- Covers: story-criterion markers now resolve against positional criterion ids, so criterion-bound tests actually enter test-quality scope. (implementation PR #2182).
- Rejected remediation dispositions now halt with actionable details instead of being silently dropped. (implementation PR #2194).
- The daemon now safely recovers from failed project setup by quarantining residue and verifying one bounded repair attempt before parking. (implementation PR #2108).
- Criterion ids now carry the whole story heading id, so stories with non-numeric ids (
## Story 5a:) get distinct, addressable criterion keys instead of colliding with a numerically-adjacent story's. (implementation PR #2222). - The PRD-audit remediation path now derives criterion ids from the whole story heading id, so a story with a non-numeric id (
## Story 5a:) no longer has all of its criteria dropped from the expected set and reported as absent from the active stories. (implementation PR #2227). - Story criterion ids now count hard-wrapped Given/When/Then rows; previously a row whose "then" fell on a continuation line was silently dropped and later ordinals shifted, which could halt the prd_audit gate against a correct report. (implementation PR #2237).
- Remove redundant BUILD full-suite requirements and routine reviewer test reruns. (implementation PR #2236).
- Preserve routed BUILD gate verdicts before downstream gate selection. (implementation PR #2244).
- Halt-issue sweeps preserve precise UTC halt times and close issues only when newer shipping evidence exists. (implementation PR #2245).
- Rebase validation correctly preserves changes whose diff hunk content begins with file-header markers. (implementation PR #2247).
- The daemon retains protected-artifact halts through base-branch advances until an operator resolves them. (implementation PR #2248).
- The as-built governing-clause resolver accepts the
D<n>decision shorthand that ADR headings use, so a REMEDIABLE finding citingadr-x D3no longer halts needs-human. (implementation PR #2250). - Closeout event tailing now recovers from corrupt completed ledger records without hiding later valid events. (implementation PR #2241).
- Blocks destructive bare force pushes in compound commands while preserving safe force-with-lease pushes. (implementation PR #2221).
- Docs guard now blocks NUL-bearing, alias-root, and symlink-routed writes that could bypass protected documentation paths. (implementation PR #2242).
- Vitest global setup removes stale temporary run roots before they accumulate. (implementation PR #2249).
- Step and closeout duration histograms now bucket up to 8 hours, so p95 no longer saturates at 30 minutes for long build steps. (implementation PR #2360).
- Daemon as-built review halts now distinguish human decisions, repair-routing failures, and malformed reports. (implementation PR #2201).
- Revert the coverage_binding judge default to off; the judge-on default caused a daemon retry spin. (implementation PR #2370).
- Reopened remediation tasks now resume with fresh evidence instead of halting after prior completion. (implementation PR #2355).
- prd_audit and as-built verdicts are preserved across a SHIP-tail rebase rewrite and across a halt/resume when the reviewed code is unchanged; a review re-runs only when its surface actually changed. (implementation PR #2382).
- Resumed runs now return to an earlier runnable prerequisite instead of stopping without dispatching work. (implementation PR #2385).
- Prevent the daemon from automatically resuming HALTs that require operator action. (implementation PR #2398).
- Scrub TMUX and TMUX_PANE from provider and test child environments so a spawned tmux command cannot target the daemon's own pane. (implementation PR #2406).
- Daemon-dispatched features now honor open repair obligations when no active plan path was recorded, instead of halting as evidence-complete. (implementation PR #2411).
- Daemon logs no longer print a duplicate, untagged copy of each gate verdict line. (implementation PR #2412).
- prd-audit and the as-built architecture review are read-only validators: they and their subagents never run tests or project code, write only their own verdict artifacts, and never end a turn with delegated work outstanding. (implementation PR #2416).
- Live-provider release smoke token caps can now be adjusted through a GitHub Actions repository variable. (implementation PR #2432).