Skip to content

Releases: mfittko/dev-loops

v1.0.9-pre.4

v1.0.9-pre.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Nov 14:52
v1.0.9-pre.4
e97b63b

Added

  • emit-fixer-work-order.mjs --review-id accepts a human or Copilot review body as a fixer work-order source, verified by a dev-loops:review-body-disposition marker comment (#2548)
  • Add the sanctioned unresolve-review-thread.mjs wrapper; the hook allows only the main agent and the dev-loop coordinator and denies every other agent type (#2577)
  • Add GATE-EXEC-ROUND-CAP-NO-DECLINE-RESOLVE: fix high and medium cap-round findings via the thread route; the resolved-thread refusal names the unresolve script (#2577)

Changed

  • The checkbox-row grammar lives in one core constant shared by the tick, the live preview and the edit-pr untick guard (#2898)
  • The edit-pr untick guard and its usage text now name a heading edit that moves a checked row out of its AC/DoD scope (#2898)
  • The unified row grammar also accepts a row ending in U+2028 or U+2029 on the tick side, so the tick now flips such a row when its label is reviewer-verified (#2898)
  • The reviewer-verified tick docs describe the dry run before composing and the write before the post (#2898)

Fixed

  • Thread replies carry the full 40-character commit SHA; a resolved thread with a short-SHA reply is refused with the unresolve remedy (#2548)
  • gate-evidence accepts a .devloops key that only the PR's own schema declares; a key declared by neither schema still fails (#2662)
  • A work order pulled by another dev-loops code tree now refuses with both roots, both versions and the rerun command, not a bare semantic_identity_mismatch (#2662)

v1.0.9-pre.3

v1.0.9-pre.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Nov 07:29
v1.0.9-pre.3
ec2da95

Changed

  • Logic-change draft rounds now run the state-concurrency review angle, extended with precondition, ownership-binding and liveness checks (#3005)
  • The gate reviewer brief now asks for a sibling sweep after a finding: the opposite direction, concurrent invocation, alternate input forms and every call site of a fix (#3005)
  • The gate context adds importers and sibling functions of a changed exported function, state writer or guard, within the gates.contextExpansion cap; the briefing lists dropped files (#3005)

Fixed

  • The pre-push delta input accepts the cap-round findings log across the sealed fixer chain plus a base-only merge, and its refusal names the remedy (#2462)
  • Fixer join is final on write; a notification fallback waits for the final notification; wait-for-units --artifact needs --after to reject a stale file (#2462)
  • An installed dev-loops CLI runs the source checkout's CLI for gate, loop and pr, and names a version difference on stderr (#2662)
  • Judge work order carries the verdict schema, the denial names Read, and the pull owns the digest check so Pi and Claude judges compute none (#2678)
  • The judge no longer acts on removing a slice PR's only closing reference (#2883)
  • A PR runner claim is released at hand-back with an explicit run id, status reports owner liveness, and takeover refuses a live owner (#2884)
  • A terminal stop on Claude Code releases the PR runner claim with an explicit run id, and the takeover pin payload has one shared helper (#2884)
  • Closing an abandoned fix sequence is atomic with fixer pull admission; liveness uses branch activity. close-sequence --head must be a full 40 or 64 char lowercase hex SHA (#2999)
  • Gate coordination at the Copilot round cap returns wait_for_ci or the thread route, not a remedy-less report_blocked; an orphaned cap-round baseline names the restart (#3002)
  • pr waive-adr-tripwire accepts the cap-round-fixed proof, gate extend-cap-round-chain extends the sealed chain over docs/tests-only commits, refusals name remedies (#3010)

v1.0.9-pre.2

v1.0.9-pre.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Nov 17:53
v1.0.9-pre.2
833c1de

Changed

  • Coordinators now continue across phase transitions: the unit-boundary field is reportAfter, and the 150K peak-context figure is an advisory retrospective diagnostic, not a cap (#2955)

Fixed

  • Cap-round blockers: a base merge after the cleared fix reaches ready, refusals name one condition and remedy, no-commit sequences close, and wait-for-units --artifact joins one child (#2462)
  • Deliver unchanged thread sites at descendant heads; identify changed sites for full-gate input. Unresolved gate-thread recovery admission is deferred until PR #2990 merges (#2787)
  • upsert-checkpoint-verdict ticks verified rows after all refusal checks, leaves act-named rows unticked; edit-pr refuses a silent untick without --allow-untick (#2898)
  • dev-loops gate close-sequence closes an abandoned gate fix sequence marker with a recorded condition, so a push is no longer locked out until the operator deletes a file (#2999)

v1.0.9-pre.1

v1.0.9-pre.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Oct 13:32
v1.0.9-pre.1
b0252e7

Added

  • Fan-out, judge and fixer emitters take --operator-focus-file, a typed, bounded, digest-pinned operator focus rendered as an "Operator focus" section (#2635)
  • The gate fix loop is one state machine with a sanctioned exit from every state, registered in the conformance harness and State atlas; later-slice transitions are known gaps (#2787)
  • Configure Codex worker and pre-push reviewer model/effort through role and tier settings with gate resolve-role --role (#2914)
  • A gate findings log that fails integrity can be quarantined with quarantine-gate-findings-log.mjs, which unblocks the next round without deleting evidence (#2969)
  • The keyed fan-in ledger and the gate findings log carry a seal; an out-of-band write fails the next read with gate_artifact_out_of_band_write (#2971)

Changed

  • merge-pr and the CI gate-evidence check accept a cap-fixed PR from a cap-round marker plus resolved round threads; cap-fixed hardening lands (#2462)
  • After the draft_gate cap round's fixer pass lands the PR goes ready and round N+1 is refused (#2462)
  • Gate coordination records a base-merge verdict carry in a PR comment, and merge-pr and gate-evidence accept it after recomputation, so a base-only merge needs no new gate round (#2752)
  • Test runs now refuse to start when a worktree resolves its core package from another checkout, and the inline-interpreter hook also blocks bun -e and bun stdin scripts (#2941)
  • The release runbook defines the recurring post-release audit, memory and prose cleanup steps and the combined release retro (#2941)
  • Pi model tiers moved off the rate-limited Fast snapshot to the non-Fast V4.1-Flash-1017 snapshot, then split across two rate-limit buckets (#2975)
  • Pi tiers split over two rate-limit buckets: bulk roles take the floating V4.1-Flash alias, review, judge, refiner, gate angles and the pre-PR reviewer stay on V4.1-Flash-1017 (#2978)
  • Gate light mode caps weighted logic LOC and non-doc file count, so small fixes with a test and doc note stay inline (#2982)
  • Lightweight startup eligibility uses the shared light-mode cap (weighted logic LOC, non-doc files, config-source floor) (#2985)
  • Lightweight startup counts both endpoints of a rename in the changed-file list (#2985)
  • Lightweight startup fails closed with size_outcome_unavailable on a missing or failed size capture, a block size outcome or a failed changed-file read (#2985)
  • A --base-only gate dispatch run resolves size_outcome_unavailable (#2985)

Fixed

  • A Copilot review with findings no longer counts as converged below the round cap before the Copilot gate passes; the loop re-requests Copilot on the fix head (#2445)
  • Carry complete fixer checkpoints to descendants and close authenticated no-commit or foreign-head pre-push sequences; bind THREAD delta records to the committed candidate (#2787)
  • Authenticate empty-range delta exits and canonical handback heads, close sequences after baseline amendments, and align no-commit and THREAD instructions (#2787)
  • A retro checkpoint cannot be recorded complete without a record that names the merge commit, and the CLI wrapper reports oversized child output instead of truncating it (#2887)
  • Restore the repository's Codex worker and review tier mappings, guarded by live configuration structure checks (#2914)
  • The inline-interpreter hook refuses sudo/xargs/timeout wrapped heredocs, $(...) and backtick substitutions, and python3 -Ic flag clusters (#2943)
  • The inline-interpreter hook fails closed on nested heredocs and decodes ANSI-C $'...' quoted option values (#2943)
  • A non-empty CODEX_THREAD_ID (without OMPCODE=1) requires the Codex trailer instead of the Claude trailers, including without CLAUDECODE (#2980)

v1.0.8

Choose a tag to compare

@github-actions github-actions released this 28 Oct 08:10
v1.0.8
c093f95

Added

  • Runner coordination handoff atomically releases the verified owner's claim and records its exit signal; older signals cannot displace a later claim (#2893)
  • Runner-coordination supersede takeover reports typed recovery evidence (exit_signal or stale_max_age with the displaced run id and stale window); explicit takeover reports none (#2893)
  • gates.draft.maxReviewRounds (default 4, 0 disables) caps draft_gate rounds and limits the verdict post to the judged ledger (#2462)
  • Map changeset fragments to docs checks and run literal referencing tests for skill contracts (#2508)
  • Handoff envelopes carry unitBoundaries, the target- and strategy-derived points where a unit coordinator hands back and a fresh successor resumes (ADR 0181) (#2532)
  • dev-loops loop implementation-brief prints a spec body's review expectations offline (#2588)
  • loop implementation-brief lists a helper inventory and importers of each touched source module; when git ls-files fails, importers is null with an importers_unavailable finding (#2588)
  • Claude Code coordinators make one SubagentHandback per run and pause in plain text; the orchestrator reads the coordinator output file (#2611)
  • On Claude Code the dev-loop coordinator never calls SubagentHandback while a child is in flight; it pauses in plain text and names each child (#2611)
  • Add opt-in Codex conductor model and reasoning settings to initial and resumed native coordinator dispatch (#2913)
  • Capture authenticated supplemental residual assessments as unqualified snapshots; delivery, CI, full-gate acceptance and thread closure remain dependent work (#2918)
  • The standalone review gate runs the judge between fan-in and the post; upsert-checkpoint-verdict.mjs --gate review takes --judge-spec-source (#2540)
  • Base-merge verdict carry classifier and evidence CLI (classify-base-merge-carry.mjs); carry takes effect once merge-pr and gate coordination consume it (#2752)
  • Grilled issues and slices need a ## Simplest design section; spec-lint flags a missing one, and the judge caps doc-lag and coverage findings on correct code at low (#2839)
  • loop validation-record runs the validation profile at a clean head and writes a head-pinned validation record (#2866)
  • resolve-angle-carry-forward.mjs --rerun-angle <angle> forces a named angle to re-review at the current head (reason operator_rerun) (#2895)
  • emit-coordinator-work-order --input <resolver-output.json> --harness <claude or pi> --entry <queue or direct> prints a compact pull-pointer dispatch payload (#2483)
  • The c coordinator execution identity prefix is recorded in ADR 0164, which amends ADR 0115 (#2483)
  • The subagent dev-loop contract row emits the coordinator work order for resumed queue and direct entries (#2483)

Changed

  • Copilot body-only feedback no longer blocks gate entry; the judge adjudicates it, and a numeric-id marker is refused as review_id_mismatch (#2937)
  • dev-loops states its purpose in one owning rule, PURPOSE-HIGHEST-SAFE-AUTONOMY; the README hero line and the package description carry it, and the #2937 rules cite it as their parent (#2937)
  • The draft round cap counts only rounds whose ledger was written after the cap landed, so in-flight pull requests get a fresh budget (#2462)
  • Past the draft round cap, a medium the judge rejects with a reason or defers to an issue is final and raises no blocker (#2462)
  • The findings-log writer derives a fan-out round's mode, provenance, verifiedItems and verdict from the keyed emit plan and fan-in ledger (#2526)
  • At pre_approval_gate, a round of only low and nit findings composes clean in every round, and the fixer refuses a low-only act list with low_fix_until_cap (#2724)
  • Fold prerelease CHANGELOG sections into one section on a stable version bump and use annotated tags in the release runbook (#2804)
  • A validation block that differs from the base only in paths no longer blocks the gate; mode and fullCommand differences still refuse (#2852)
  • A stale PR base now fails fast with base_stale_integrate_first; every gate-context run checks the PR base, with or without --base (#2885)
  • The judge owns every finding disposition, the review verdict and the next action; fan-in leaves findings unjudged (#2903)
  • The standalone review gate never resolves the gate-evidence angle, and the judge rejects template-only findings (#2903)
  • @dev-loops/core/loop/gate-fanin no longer exports deriveDisposition or isDefaultDeferrableSeverity; fan-in leaves findings unjudged (#2903)
  • The fixer fixes lows until the draft-gate round cap; a nit is fixed in draft round 1 and rejected from round 2 on, and at or past the cap lows defer and a low/nit-only round composes clean (#2937)
  • The autonomy principles are contract rules with one owner each, and the low/nit refusal at the cap carries the typed code low_fix_until_cap (#2937)
  • At the draft round cap, judge-acted findings with a specified remedy are fixed and one closure round verifies the fix delta; a later act item blocks (#2937)
  • Validate changelog fragments before PR creation and fragment-touching fix pushes; refresh the PR base and anchor local diff bases to origin (#2335)
  • Show the comparison base SHA when decision-record validation passes (#2335)
  • Reject empty or nonliteral PR bases before fetching; use effective head and base flags in preflights (#2335)
  • A draft gate round with only low or nit act items now converges after one fixer pass and a clean pre-push delta review (#2462)
  • With --emit-plan, consolidate-fanin derives ledger provenance, writes the keyed fanin-ledger.json, and fails closed on fresh units with no dispatch-prompt records (#2526)
  • Fixer full-phase orders state numbered push, CI, --construct and verify steps; the verifier builds the THREAD report, refuses hand-written ones and red CI (#2787)
  • The verifier CI guard judges only PR-rollup check runs like wait-pr-checks; the verifier posts one residual reply on bounded_out deferred threads (#2787)
  • Add native Codex resumed coordinator dispatch with verified pull-first role/runtime bootstrap (#2843)
  • The delta pre-push review input now carries a written patch path and a read-only evidence rule, so the reviewer needs no shell (#2854)
  • This repo now validates through current-head CI (validation.mode: ci-only) instead of local full validation (#2873)

Fixed

  • A read-only adapter reports verified terminal execution evidence from an owned Codex journal, so an execution that finished after its worker stopped reports completed (#2886)
  • An encoded path separator in a recorded file: cwd URI is rejected instead of decoded into a real separator, so it can no longer bind an expected cwd and clear the cleanup blocker (#2886)
  • Terminal records are counted across the journal, so a second contradictory terminal under another thread reports conflicting_terminal_records (#2886)
  • gate judge-pass expands a cluster-keyed spec-authority decision to its member findings, so one defect from two angles no longer refuses (#2903)
  • A base-only merge after the draft gate cap round no longer blocks the closure fixer order; the closure diff holds only PR-own changes, else closure_delta_no_pr_own_change (#2937)
  • A PR-side revert or delete toward the base now counts as a PR-own change in captureMainRelativeChangedFilesSince, so angle carry-forward lists it in its delta (#2937)
  • The inline-interpreter guard now refuses a heredoc or stdin script after interpreter flags (python3 -I - <<EOF), and the retro check uses the same matcher (#2943)
  • The shared segment separator keeps the & of a redirection (2>&1, &>f) in its segment so a redirection before a heredoc reaches the scan; every segment-splitting gate shares it (#2943)
  • Unit coordinators hand back only on routes that own a phase, and a phase-only target resumes by phase (#2532)
  • A handoff envelope keeps a Windows drive or network-share worktree root, and one root has one cwd spelling (#2532)
  • A resume identity rejects a non-string branch or phase instead of accepting malformed authoritative state (#2532)
  • Run threat-model on a SECURITY_SENSITIVE_SEAM diff in a draft_gate round, or in a pre_approval_gate round at a head where no draft round ran it, even when config disables it (#2899)
  • Combine targeted validation checks across fully mapped change sets while preserving full validation for unmapped or unsafe paths (#2508)
  • Verify native Codex child context and stable run identity; keep MAIN joining children to mitigate idle-parent wake limits, with shared artifact and protected-Git guidance (#2836)
  • Tracker-backed local handoffs use the sanctioned issue worktree path while preserving explicit phase and branch identities (#2845)
  • Accept the empty string and keep padding verbatim in matcher acceptedForms and rejectedForms so the spec-authority ledger write no longer fails (#2853)
  • Pi child agents no longer request the unavailable, redundant execution tool; contract checks guard supported tools and Claude capability parity (#2854)
  • The Pi pre-push reviewer selects the enabled Codex model instead of a stale model id (#2854)
  • ensure-worktree reports a typed dirty_after_provision warning whenever git status --porcelain is non-empty after provisioning (#2854)
  • The Pi render pins every rendered agent to its resolved tier model (the .devloops change adds dev-loop and gate-coordinator), and the preflight refusal names the project-trust ceiling (#2854)
  • ui-review: lockfile-aware frozen install, boot log with early-exit stop, axe resolved from the reviewed worktree with a stated skip, per-state screenshots in the report (#2855)
  • ui-review: the deck-fit harness skips per-slide axe for deck suites (timeout budget) and the drive logs one stderr line when axe is skipped (#2855)
  • Constrain ACT/THREAD outputs, create reports/markers exclusively, publish after writes/closes succeed, and limit ...
Read more

v1.0.8-pre.3

v1.0.8-pre.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Oct 21:39
v1.0.8-pre.3
3341991

Added

  • gates.draft.maxReviewRounds (default 4, 0 disables) caps draft_gate rounds and limits the verdict post to the judged ledger (#2462)
  • Map changeset fragments to docs checks and run literal referencing tests for skill contracts (#2508)
  • Handoff envelopes carry unitBoundaries, the target- and strategy-derived points where a unit coordinator hands back and a fresh successor resumes (ADR 0181) (#2532)
  • dev-loops loop implementation-brief prints a spec body's review expectations offline (#2588)
  • loop implementation-brief lists a helper inventory and importers of each touched source module; when git ls-files fails, importers is null with an importers_unavailable finding (#2588)
  • Claude Code coordinators make one SubagentHandback per run and pause in plain text; the orchestrator reads the coordinator output file (#2611)
  • On Claude Code the dev-loop coordinator never calls SubagentHandback while a child is in flight; it pauses in plain text and names each child (#2611)
  • Add opt-in Codex conductor model and reasoning settings to initial and resumed native coordinator dispatch (#2913)
  • Capture authenticated supplemental residual assessments as unqualified snapshots; delivery, CI, full-gate acceptance and thread closure remain dependent work (#2918)

Changed

  • The draft round cap counts only rounds whose ledger was written after the cap landed, so in-flight pull requests get a fresh budget (#2462)
  • Past the draft round cap, a medium the judge rejects with a reason or defers to an issue is final and raises no blocker (#2462)
  • The findings-log writer derives a fan-out round's mode, provenance, verifiedItems and verdict from the keyed emit plan and fan-in ledger (#2526)
  • At pre_approval_gate, a round of only low and nit findings composes clean in every round, and the fixer refuses a low-only act list with low_fix_until_cap (#2724)
  • Fold prerelease CHANGELOG sections into one section on a stable version bump and use annotated tags in the release runbook (#2804)
  • A validation block that differs from the base only in paths no longer blocks the gate; mode and fullCommand differences still refuse (#2852)
  • A stale PR base now fails fast with base_stale_integrate_first; every gate-context run checks the PR base, with or without --base (#2885)
  • The judge owns every finding disposition, the review verdict and the next action; fan-in leaves findings unjudged (#2903)
  • The standalone review gate never resolves the gate-evidence angle, and the judge rejects template-only findings (#2903)
  • @dev-loops/core/loop/gate-fanin no longer exports deriveDisposition or isDefaultDeferrableSeverity; fan-in leaves findings unjudged (#2903)
  • The fixer fixes lows until the draft-gate round cap; a nit is fixed in draft round 1 and rejected from round 2 on, and at or past the cap lows defer and a low/nit-only round composes clean (#2937)
  • The autonomy principles are contract rules with one owner each, and the low/nit refusal at the cap carries the typed code low_fix_until_cap (#2937)
  • At the draft round cap, judge-acted findings with a specified remedy are fixed and one closure round verifies the fix delta; a later act item blocks (#2937)

Fixed

  • Unit coordinators hand back only on routes that own a phase, and a phase-only target resumes by phase (#2532)
  • A handoff envelope keeps a Windows drive or network-share worktree root, and one root has one cwd spelling (#2532)
  • A resume identity rejects a non-string branch or phase instead of accepting malformed authoritative state (#2532)
  • Run threat-model on a SECURITY_SENSITIVE_SEAM diff in a draft_gate round, or in a pre_approval_gate round at a head where no draft round ran it, even when config disables it (#2899)

v1.0.8-pre.2

v1.0.8-pre.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Oct 20:37
v1.0.8-pre.2
b630a87

Added

  • The standalone review gate runs the judge between fan-in and the post; upsert-checkpoint-verdict.mjs --gate review takes --judge-spec-source (#2540)
  • Base-merge verdict carry classifier and evidence CLI (classify-base-merge-carry.mjs); carry takes effect once merge-pr and gate coordination consume it (#2752)
  • Grilled issues and slices need a ## Simplest design section; spec-lint flags a missing one, and the judge caps doc-lag and coverage findings on correct code at low (#2839)
  • loop validation-record runs the validation profile at a clean head and writes a head-pinned validation record (#2866)
  • resolve-angle-carry-forward.mjs --rerun-angle <angle> forces a named angle to re-review at the current head (reason operator_rerun) (#2895)

Changed

  • Validate changelog fragments before PR creation and fragment-touching fix pushes; refresh the PR base and anchor local diff bases to origin (#2335)
  • Show the comparison base SHA when decision-record validation passes (#2335)
  • Reject empty or nonliteral PR bases before fetching; use effective head and base flags in preflights (#2335)
  • A draft gate round with only low or nit act items now converges after one fixer pass and a clean pre-push delta review (#2462)
  • With --emit-plan, consolidate-fanin derives ledger provenance, writes the keyed fanin-ledger.json, and fails closed on fresh units with no dispatch-prompt records (#2526)
  • Fixer full-phase orders state numbered push, CI, --construct and verify steps; the verifier builds the THREAD report, refuses hand-written ones and red CI (#2787)
  • The verifier CI guard judges only PR-rollup check runs like wait-pr-checks; the verifier posts one residual reply on bounded_out deferred threads (#2787)
  • Add native Codex resumed coordinator dispatch with verified pull-first role/runtime bootstrap (#2843)
  • The delta pre-push review input now carries a written patch path and a read-only evidence rule, so the reviewer needs no shell (#2854)
  • This repo now validates through current-head CI (validation.mode: ci-only) instead of local full validation (#2873)

Fixed

  • Combine targeted validation checks across fully mapped change sets while preserving full validation for unmapped or unsafe paths (#2508)
  • Verify native Codex child context and stable run identity; keep MAIN joining children to mitigate idle-parent wake limits, with shared artifact and protected-Git guidance (#2836)
  • Tracker-backed local handoffs use the sanctioned issue worktree path while preserving explicit phase and branch identities (#2845)
  • Accept the empty string and keep padding verbatim in matcher acceptedForms and rejectedForms so the spec-authority ledger write no longer fails (#2853)
  • Pi child agents no longer request the unavailable, redundant execution tool; contract checks guard supported tools and Claude capability parity (#2854)
  • The Pi pre-push reviewer selects the enabled Codex model instead of a stale model id (#2854)
  • ensure-worktree reports a typed dirty_after_provision warning whenever git status --porcelain is non-empty after provisioning (#2854)
  • The Pi render pins every rendered agent to its resolved tier model (the .devloops change adds dev-loop and gate-coordinator), and the preflight refusal names the project-trust ceiling (#2854)
  • ui-review: lockfile-aware frozen install, boot log with early-exit stop, axe resolved from the reviewed worktree with a stated skip, per-state screenshots in the report (#2855)
  • ui-review: the deck-fit harness skips per-slide axe for deck suites (timeout budget) and the drive logs one stderr line when axe is skipped (#2855)
  • Constrain ACT/THREAD outputs, create reports/markers exclusively, publish after writes/closes succeed, and limit recovery to the current execution's refused report and stale marker (#2860)
  • Spec-context can derive the formal spec and revision identity from the canonical live PR body while verifying its head (#2862)
  • merge-pr fetches once, then refuses after the ADR step with base_not_integrated when the head lacks origin/<base> (GATE-EXEC-BASE-REFRESH) (#2863)
  • .pi/agents is untracked and rendered with Pi-valid tools at worktree provision time; a subagent launch on an unrendered agent set is refused with agent_set_not_rendered (#2865)
  • A fresh dev-loops clone gets .pi/agents rendered at the first Pi session start (#2865)
  • PR coordinator handoffs bind verified existing isolated worktrees, preserve validated PR-body authority, and refuse missing or conflicting associations before dispatch (#2878)
  • Fixer construction removes its own marker after a failed publish, so a retry succeeds; a foreign or replaced marker is never removed (#2880)

v1.0.8-pre.1

v1.0.8-pre.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 16:00
v1.0.8-pre.1
072026c

Added

  • emit-coordinator-work-order --input <resolver-output.json> --harness <claude or pi> --entry <queue or direct> prints a compact pull-pointer dispatch payload (#2483)
  • The c coordinator execution identity prefix is recorded in ADR 0164, which amends ADR 0115 (#2483)
  • The subagent dev-loop contract row emits the coordinator work order for resumed queue and direct entries (#2483)

Fixed

  • resolve-pr-conflicts commits with the ambient git identity and falls back to the bot only when user.email is empty (#2832)

v1.0.7

Choose a tag to compare

@github-actions github-actions released this 19 Oct 11:06
v1.0.7
d83023c

Added

  • resolve-gate-dispatch accepts --judge-record, --labels, --head-sha and emits track and trackReason; a judge record only lowers the track within risk floors (#2070)
  • Coordinator work order producer derives a byte-stable order from the resolved handoff envelope and always allows its changes fragment (#2483)
  • Plan, spec-lint and pr create split oversized work early: new gates.size.planningBand.minLoc, size_split_required_before_pr at waiverLoc (#2756)
  • Simulators show early-detection stages, defect routing, five catching-stage scenarios and where draft_gate findings are caught (#2806)
  • loop pre-pr-review --scan runs the stale-surface sweep and PR body versus issue check; the record writer refuses unaddressed hits (#2807)

Changed

  • resolve-validation reuses another gate's passing artifact, stamping reusedFrom: <gate>; only the package-suite path reuses (#2508)
  • Wait and probe tools take one flag, --timeout <seconds>; --timeout-ms is a deprecated alias and both flags together fail closed (#2755)
  • Skills no longer prescribe timeout N shell wrappers; the Bash gate denies them and check-retro-tooling sees through them (#2755)
  • pr create --lightweight now requires the pre-PR review record and refuses with pre_pr_review_missing when none covers the branch head; a same-named tag never counts (#2807)
  • loop pre-pr-review record mode requires --body-file --issue or --no-linked-issue, refuses an empty scan range and unaddressed stale-surface hits (pre_pr_stale_surface_unaddressed) (#2807)

Fixed

  • audit-session --latest finds Claude Code sessions, reports cache writes in the cache-hit ratio, counts Claude output once per message and orders null below numbers in --jq (#2436)
  • emit-fixer-work-order refuses an act-list work order with verdict_not_posted until the gate's verdict review at the head is posted on the PR (#2498)
  • gate resolve-validation now exposes top-level allPassed and refuses an unsupported --jq filter before running any suite (#2513)
  • ensure-worktree runs bun install --frozen-lockfile in a newly created worktree; gate depState reads the worktree's own install (#2535)
  • generate-claude-assets.mjs handles --help/-h and rejects unknown flags before it writes anything (#2569)
  • A fixer push marker no longer covers a push to a different, known branch, so a stacked branch is not refused by its base branch marker (#2787)
  • The PR body versus issue check reads AC and DoD named sub-headings under In scope or Non-goals on the issue side (#2807)
  • An incomplete fixer disposition now warns instead of blocking gate coordination and Copilot requests; merge gates are unchanged (#2817)
  • Bun test shards no longer fail with "Could not parse Bun test summary" when Bun 1.4.1 prints an expect() calls line; parse failures now show the output tail (#2825)

v1.0.6

Choose a tag to compare

@github-actions github-actions released this 16 Oct 15:25
v1.0.6
4191fca

Added

  • dev-loops pr edit routes to edit-pr.mjs, and dev-loops queue remove removes one mistaken board item (#2463)
  • dev-loops pr waive-adr-tripwire writes a head-pinned ADR tripwire waiver under an operator-recorded standing authorization (#2463)
  • edit-pr.mjs and create-pr.mjs refuse a body that adds, changes or removes an adr-tripwire:allow line (#2463)
  • A PR that changes the .devloops standingAuthorizations block needs a decision record and a fresh owner approval to leave draft (#2463)
  • edit-issue.mjs refuses a body write that adds, changes or removes an adr-tripwire:allow line (#2463)
  • create-pr.mjs refuses --fill*/--template without --body/--body-file and --recover/--editor/--web always; it and edit-pr.mjs forward the checked body inline (#2463)
  • .devloops extraTools adds MCP tools to Claude developer, fixer and refiner agents via dev-loops loop claude-launch and the headless entry (#2598)
  • dev-loops loop audit-session reports tool calls per session and an MCP usage table by role, with denied calls and working-directory class (#2601)
  • HTML and CSS files classify as code, images and fonts as a new asset kind, and a .devloops classify key maps a repository's own files (#2616)
  • pr create and loop gate-coordination report the ADR tripwire and size budget for draft PRs; gate coordination stops before the ready flip on a block (#2512)
  • Gate validation reads a .devloops validation key: ci-only (consumer default) or local mode, an optional full-validation command and a path-to-command map (#2517)
  • Targeted worker checks read the checkout's validation.paths. The gate trusts only the default-branch validation block and refuses a checkout block that differs (#2517)
  • dev-loops gate wait-for-units joins a gate round's reviewer and judge units in one read-only foreground call (#2579)
  • .devloops extraToolsGuidance renders per-tool usage guidance into the Claude role prompt when the MCP server is detected (#2622)
  • pr create refuses with pre_pr_review_missing unless loop pre-pr-review recorded the branch head; --lightweight and docs/phases/**/*.md-only branches are exempt (#2618)
  • A pre-push check refuses a gate fix push until the full work order is emitted; no hook means no check, and ensure-worktree warns (#2748)
  • The canonical fixer emitter supports exact fresh Codex collaboration payloads and pinned after-pull setup (#2770)

Changed

  • The Pi read-only role gate reads the pi-subagents active_agent prompt tag, so dispatched judge and review children are gated; the env marker is removed (#2582)
  • The dev-loops extension registers itself as a required child extension, so a foreground judge or reviewer child loads the gate and its tool_call handler runs (#2582)
  • A read-only Pi session keeps the extension's mutation-capable post-merge hooks inert, so a reviewer's quoted merge text in an allowed read form cannot queue post-merge updates (#2582)
  • The default container image pins pi-subagents at 0.75.0, the mandatory-runner floor for the required-child-extension registration API (#2582)
  • Gate review contract and reviewer/coordinator agent prose is condensed; obligations are unchanged (#2603)
  • The commit-msg guard no longer requires a Claude-Session trailer; set worktree.commitMsgGuard.requireClaudeSession: true on your default branch to keep it (#2605)
  • A config load error no longer relaxes a gate: startup returns needs_reconcile with a configError, and every gate script that used a default now fails closed with config_load_failed (#2612)
  • Generated Claude forms run dev-loops-run cli/index.mjs instead of a pinned npx dev-loops@<version>, so a dev-loops checkout runs its own code (#2612)
  • isDevLoopConfigSourcePath is no longer exported from @dev-loops/core/loop/gate-carry-forward; it now lives in @dev-loops/core/analysis/diff-analyzer (#2616)
  • GitHub Pages Simulator navigation now opens the lifecycle Overview entrypoint (#2624)
  • Paired links show Overview before Detailed, preserving both original pages' stable URLs and active-view labels (#2624)
  • Simulator-family navigation aligns with each view's overall content container and keeps a clear desktop/mobile gap above paired-view controls (#2624)
  • Simulator navigation changes preserve unrelated navigation and fullscreen graph layout (#2624)
  • Detailed and Overview graphs expose named keyboard-scrollable regions in normal and full-window modes; arrow panning does not change execution (#2624)
  • Overview full-window graph focus rings stay inside the viewport without changing graph geometry (#2624)
  • Simulator pages improve light/dark contrast with state cues, expose graph controls to keyboard/screen-reader users, and add labeled keyboard-scrollable traces and a main landmark (#2624)
  • Simulator desktop/mobile UI checks use controlled local fallback fonts instead of live Google Fonts, keeping layout checks and captures independent of external font availability (#2624)
  • Original Detailed and Overview models load from separate native modules; teaching scenarios, defaults, transitions, and runtime controls are preserved (#2624)
  • Original model asset changes select their owning automatic browser suite; published pages and npm packages include both modules (#2624)
  • Overview transitions reuse model-scoped helpers with explicit run state instead of recreating five helper functions per step (#2624)
  • Orphan-entrypoint checks distinguish published browser model metadata from real Node imports and spawns, preserving the standalone-tool ratchet (#2624)
  • Detailed Simulator graph shortcuts expose a named control group to assistive technology without adding a navigation landmark (#2624)
  • Retained atlas checks cover byte-identical output across fresh builds; default WebKit capture failure coverage runs in an isolated process (#2624)
  • Inspect graph layer selectors and camera controls expose descriptive accessible group names without changing native button navigation (#2627)
  • The inspect viewer Graph tab replaces Mermaid with read-only SVG state cards, four layer summaries and keyboard-operable details, zoom, pan, Fit, Focus, Reset and fullscreen controls (#2627)
  • Inspect graph layout is automatic and deterministic. Feedback edges follow the left-to-right direction, and wide labels wrap losslessly while Fit/Focus intent survives resizing (#2627)
  • Inspect graph uses the shell's light theme under a dark OS preference, and pointer selection focuses the chosen state so keyboard navigation stays aligned (#2627)
  • Manual refresh and read-only behavior are unchanged, and snapshot contracts are unchanged. Textual layer details and Snapshot JSON remain if rendering fails. State Atlas keeps Mermaid (#2627)
  • Inspect graph state details report snapshot-list membership independently of next-state eligibility, without changing Next emphasis (#2627)
  • The conductor routing statechart is now the runtime routing policy source, shipped in @dev-loops/core; routing results are unchanged (#2668)
  • A missing retrospective checkpoint no longer stops loop startup. Startup reports pendingRetrospectives and merge-pr refuses while an earlier merge has none recorded (#2488)
  • Gate act items carry a defect class and site query, the fixer covers every site, and a surface flagged in 3 gate rounds escalates to a human (#2556)
  • The commit_only fixer work order now carries a siteCoverage skeleton for the fixer to fill in (#2575)
  • The fixer emitter refuses --phase full without a clearing pre-push delta decision, and fixed replies are refused for threads the delta review left unresolved (#2575)
  • The --phase full work order carries the commit_only siteCoverage skeleton, and a stale invocation-3 delta result clears it when its item ref/status pairs match the head delta record (#2575)
  • check-pre-push-delta.mjs --threads-file reviews a thread-driven fix, and each run writes a gate-delta/<baseline>.json decision record that the emitter and the reply paths read (#2575)
  • request-copilot-review.mjs reports the status blocked_by_fixer_disposition, with the failedSteps not_verified and delta_blocked, when the fixer disposition boundary blocks a request (#2575)
  • merge-pr enforces the ADR tripwire at the PR head and re-issues a stale standing waiver. The waiver writer accepts a clean pre_approval_gate verdict (#2682)
  • Removed code reachable only from tests: the review-lineage builder, the coordinator phase-blocked emitter and the slides story review validator (#2719)
  • The pre-push delta review widens surface hints to the gate round angles, lists stale-surface hits, and refuses locally_clear for unaddressed hits (#2740)
  • loop pre-push-delta refuses an act-list input run without --findings-log; the fixer's handbackCheck now passes --handback instead (#2740)
  • Emit authenticated populated full fixer orders with immutable original coverage, distinct reviewed/candidate authority and pinned emitting verifier commands (#2786)
  • Share authenticated ACT thread selection while preserving complete merged, shared and resolved root membership in fixer verification (#2795)

Fixed

  • omp commits no longer require false Claude attribution when omp also sets CLAUDECODE=1; genuine Claude and general message checks remain enforced (#2624)
  • The inspect viewer Reload snapshot button uses window.URL, so refresh=1 navigation forces a fresh selected-PR snapshot (#2627)
  • Playwright config test and test:playwright:* scripts resolve the Playwright CLI without a cwd-relative node_modules/ path, so they pass in a worktree without node_modules (#2632)
  • Fixer work orders tell the fixer to regenerate the .claude mirror when its fix changes skills/, agents/ or commands/ (#2636)
  • scripts/run-bun-test.mjs strips every async-context marker and the Claude harness marker from the env of the spawned bun test child, so local runs match CI (#2637)
  • Gate verdict parsin...
Read more