You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 .devloopsstandingAuthorizations 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)
.devloopsextraTools 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 .devloopsclassify 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 .devloopsvalidation 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)
.devloopsextraToolsGuidance 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)
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_onlysiteCoverage 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 parsing reads the gate name and head SHA only from labeled field lines, so an approval note that mentions them no longer replaces the real verdict as gate evidence (#2640)
emit-fixer-work-order and resolve-angle-carry-forward refuse an explicit --tmp-root inside a linked worktree instead of emitting an ungranted work order or reporting a missing ledger (#2641)
The retro tooling checker reads piped stdin to EOF, so a transcript over 64KB no longer reports clean, and empty or unreadable input exits 2 with a reason (#2646)
Skill prose names the node <dev-loops-package-root>/cli/index.mjs form, not a bare dev-loops that can resolve a stale global binary; generated docs use dev-loops-run (#2648)
dev-loops routed subcommands fail closed on an unknown flag: the CLI no longer re-runs the script with the flag stripped, and returns the script's own exit code and error text (#2655)
Removed the @dev-loops/core/cli/retry-wrapper export and its module (#2655)
inspect-run reports lifecyclePhase: "unknown" for a PR without dev-loop evidence instead of a phase guessed from the Copilot state map. (#2660)
The reviewer layer reports re_review_needed when the latest submitted review targets a stale commit and no fresh review is requested. (#2660)
Angle carry-forward strips carried angles from grouped dispatch units, so a delta-cleared fix re-dispatches only uncarried angles (#2511)
A fixer pull for a self-hosting unit delegates to the worktree on the work order's authority branch (#2581)
Gate finding comments no longer name the local ledger; a cut field keeps capped text and puts full text in a collapsed details block, and code-like content uses a fenced block (#2629)
Changelog notability follows the PR title instead of intermediate commit subjects (#2667)
Gate review angles all re-run when a dev-loop config source changes, even if it reverts to base or is renamed or copied to a non-config path (#2685)
Comment writers refuse a body line opening with approve merge or adr-tripwire:allow, so agents cannot write operator-owned approvals or waivers (#2695)
Dev-loop preflight and Copilot follow-up route clean terminal handoffs through fresh gate coordination while preserving blocked stops and lifecycle gates (#2707)
Gate-round retirement archives matching dispatch-prompt records so fresh same-head reviews do not inherit retired bindings (#2709)
A valid_compliant judge decision with remedyKind: "evidence_only" needs no defectClass or siteQuery; check-judge-decision.mjs validates it (#2716)
Judge decision check accepts an empty decisions array (zero findings) instead of failing (#2731)
License and ownership files (LICENSE-*, NOTICE, CODEOWNERS, .gitignore) classify as docs or config instead of unknown (#2732)
merge-pr refuses a merge whose added decision record number already exists on the base branch tip (#2484)
Reject-close judge-rejected medium and low gate threads; the act-thread guard reads every marker and the emitter refuses a non-canonical fingerprint (#2485)
Gate fan-in treats an empty verifiedItems array on a non-checklist angle as absent instead of refusing the round (#2568)
pr create checks the comment-discipline preflight on the --head ref; an unresolvable head names git fetch origin (head_unresolvable with --lightweight, else pre_pr_review_missing) (#2619)
The gate verdict body shows act and blocking findings, folds the rest by judge disposition into one Details block (#2722)
Inline gate finding comments keep one short Problem and Fix, with only the remainder under Details (#2722)
A rerun of the gate verdict upsert with an inline reason holding an HTML comment delimiter reports noop, and the hidden lines also neutralize --!> (#2722)
A locatable gate finding at or above the inline floor keeps its inline thread whatever its judge disposition; every other non-visible finding, locatable or not, folds by disposition (#2722)
The fallback gate verdict poster renders the Blocking severities line inside a hidden HTML comment (#2722)
The gate tools post no deferral comment when the deferral target is the PR itself (#2745)
A folded finding is recorded by its verdict Details marker (#2745)
A stamped thread is recorded by its thread marker (issue=<pr>) plus the resolving reply (#2745)
A no-stamp thread (a non-fileable low) is recorded by its resolving reply plus the ledger entry (#2745)
A linked spec issue target is unchanged; see ADR 0142 (#2745)
Resolve Claude gate helpers from the plugin toolchain in consumer repositories and retain ready-command failure diagnostics (#2772)
Full fixer completion accepts authenticated bounded-out skipped residual forms while resolved forms stay strict and residual threads stay open without a Fixed reply (#2773)
Construct full fixer reports from authenticated coverage and prior worker provenance before normal live verification (#2774)
Codex judges receive read and hash instructions with their pulled work order before inspecting pinned inputs (#2776)
Codex fixers request managed permissions before protected operations and check staging, secret scanning and commit results separately (#2778)
Fixer completion keeps distinct roots sharing a fingerprint and defers merged roots until every authenticated ACT member is resolved (#2781)
Bind new ACT Delta reviews to genuine pulled commit-only raw coverage and exact report provenance before recording a decision (#2784)
Authenticate explicit legacy ACT completion with legacy_revalidated origin from original evidence and bounded native query coverage (#2785)
Keep capture-order proof and real worker recovery for legacy completion as later producer work (#2785)
Preserve prior fixer delivery bytes under an owned lock without granting archive authority (#2790)
Authenticate optional fixer reviewed-baseline authority at pull, grant and completion; protect both reviewed and candidate heads from retirement (#2793)
Bind incomplete fixer subjects and genuine missing reports; prepare authenticated legacy evidence while the original plan stays active (#2798)
Admit authenticated delivery-only fixer work orders with empty source selectors and bounded ACT/THREAD delivery while preserving ordinary rendering; producer enablement remains separate (#2800)
Gate coordination and Copilot requests block on missing or incomplete active full fixer output; verify-fixer-disposition --check validates evidence without writes or GitHub actions (#2767)