feat(session): prompt code review reminder on multi-file mutations - #891
Conversation
|
/devin review |
|
Important Review skippedToo many files! This PR contains 143 files, which is 43 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (143)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
/devin review |
| "edit.critiqueCodeMutations": { | ||
| type: "boolean", | ||
| default: false, | ||
| ui: { | ||
| tab: "files", | ||
| group: "Editing", | ||
| label: "Post-Edit Code Review", | ||
| description: | ||
| "Prompt the model to review multi-file code changes for correctness, maintainability, and idioms before finalizing", | ||
| }, | ||
| }, |
There was a problem hiding this comment.
🟡 Feature ships without required demo scene or bench
AGENTS.md requires every user-facing feature to land with a committed proof/scenes/ demo and a bench, or else state in its settings group that it cannot meet the bar and carry a backlog row. This new toggle adds neither. proof/scenes/ has no scene for it, and no exemption note is present.
Prompt for agents
AGENTS.md (section 'Proving a feature (the 10-minute rule)') mandates that a user-facing feature land with: (1) a committed demo under proof/scenes/ driving the feature off vs on, (2) a settings differential in the PR body, and (3) a committed bench with exact parity. The new edit.critiqueCodeMutations / session.critiqueCodeMutations toggle is user-facing (it appears in the Files/Editing settings group and changes turn-finalization behavior) but no proof/scenes/ scene or bench was added. Either add the demo scene and bench and the settings differential, or, if the feature cannot meet the bar, mark that in its settings group and add a backlog row for the missing proof as the rule allows.
Was this helpful? React with 👍 or 👎 to provide feedback.
| takeCodeReviewReminder(): string | undefined { | ||
| if (this.#intervenedCodeReviewThisTurn) return undefined; | ||
| const turnMutations = this.#mutations.filter(m => m.sequence > this.#turnStartedAtSequence); | ||
| if (turnMutations.length === 0) return undefined; | ||
|
|
||
| const distinctCodePaths: string[] = []; | ||
| const seen = new Set<string>(); | ||
| for (const mutation of turnMutations) { | ||
| for (const path of mutation.paths) { | ||
| if (isCodeFile(path) && !seen.has(path)) { | ||
| seen.add(path); | ||
| distinctCodePaths.push(path); | ||
| } | ||
| } | ||
| } | ||
|
|
||
| if (distinctCodePaths.length < 2) return undefined; | ||
|
|
||
| this.#intervenedCodeReviewThisTurn = true; | ||
| return prompt.render(sessionPrompts["session/code-review-reminder"].text, { | ||
| pathsMarkdown: distinctCodePaths.map(path => `- ${path}`).join("\n"), | ||
| }); | ||
| } |
There was a problem hiding this comment.
📝 Info: Reminder fires once per user turn, no loop
The code-review reminder is single-shot via #intervenedCodeReviewThisTurn. startUserTurn() resets it only on user-initiated prompts (agent-session.ts:10766); the reminder's own continuation is synthetic and does not reset it, so no re-fire loop. Snapshot/restore preserve the flag.
Was this helpful? React with 👍 or 👎 to provide feedback.
| if (mayContinueAtSettle("code-review", settleState) && this.#enforceCodeReviewBeforeFinalize()) { | ||
| await emitAgentEndNotification(); | ||
| return; | ||
| } |
There was a problem hiding this comment.
🔍 Two sequential nudges when both apply
A turn editing >=2 code files with no proof runs the verification nudge first (agent-session.ts:6328), returns, then the code-review nudge on a later settle (agent-session.ts:6332), since each enforcer returns early. The model gets two sequential hidden continuations before finalizing. Confirm the double nudge is intended.
Was this helpful? React with 👍 or 👎 to provide feedback.
| export function isCodeFile(filePath: string): boolean { | ||
| const normalized = filePath.replace(/\\/g, "/"); | ||
| const basename = normalized.split("/").pop()?.toLowerCase() ?? ""; | ||
| if (NON_CODE_FILENAMES[basename]) return false; | ||
| const dotIndex = basename.lastIndexOf("."); | ||
| if (dotIndex <= 0) return true; | ||
| const ext = basename.slice(dotIndex); | ||
| return !NON_CODE_EXTENSIONS[ext]; | ||
| } |
There was a problem hiding this comment.
📝 Info: Config/data files count as code
isCodeFile excludes only doc extensions and a fixed lockfile/metadata name set, so tsconfig.json, config.yaml, or *.toml are treated as code. Editing two such files triggers the reminder. Likely intended given the exclusion list, but non-source config edits can trip it.
Was this helpful? React with 👍 or 👎 to provide feedback.
…-code-mutations # Conflicts: # docs/handbook/book/404.html # docs/handbook/book/acknowledgements.html # docs/handbook/book/appendix/glossary.html # docs/handbook/book/architecture/compaction.html # docs/handbook/book/architecture/config.html # docs/handbook/book/architecture/mcp.html # docs/handbook/book/architecture/memory.html # docs/handbook/book/architecture/overview.html # docs/handbook/book/architecture/providers.html # docs/handbook/book/architecture/sandbox.html # docs/handbook/book/architecture/secrets.html # docs/handbook/book/architecture/session-turn.html # docs/handbook/book/architecture/tui.html # docs/handbook/book/concepts/index.html # docs/handbook/book/concepts/model-contract.html # docs/handbook/book/concepts/permission-model.html # docs/handbook/book/concepts/sessions-turns-threads.html # docs/handbook/book/context/compaction-memory.html # docs/handbook/book/context/context-files.html # docs/handbook/book/context/goal-state.html # docs/handbook/book/context/reads-search.html # docs/handbook/book/edit/edit-repair.html # docs/handbook/book/edit/engine.html # docs/handbook/book/edit/roadmap.html # docs/handbook/book/features/advisor.html # docs/handbook/book/features/branching.html # docs/handbook/book/features/cockpit.html # docs/handbook/book/features/collab.html # docs/handbook/book/features/connectors.html # docs/handbook/book/features/cpu-limit.html # docs/handbook/book/features/doctor.html # docs/handbook/book/features/exec.html # docs/handbook/book/features/export-import.html # docs/handbook/book/features/extensions-authoring.html # docs/handbook/book/features/extensions.html # docs/handbook/book/features/feature-flags.html # docs/handbook/book/features/hooks-authoring.html # docs/handbook/book/features/hooks.html # docs/handbook/book/features/index.html # docs/handbook/book/features/keybindings.html # docs/handbook/book/features/lsp.html # docs/handbook/book/features/marketplace-authoring.html # docs/handbook/book/features/marketplace.html # docs/handbook/book/features/mcp.html # docs/handbook/book/features/memory.html # docs/handbook/book/features/personalities.html # docs/handbook/book/features/plan-mode.html # docs/handbook/book/features/plugins.html # docs/handbook/book/features/profiles.html # docs/handbook/book/features/python-repl.html # docs/handbook/book/features/review.html # docs/handbook/book/features/sandbox.html # docs/handbook/book/features/secrets.html # docs/handbook/book/features/skills-authoring.html # docs/handbook/book/features/skills.html # docs/handbook/book/features/speech.html # docs/handbook/book/features/subagents.html # docs/handbook/book/features/web-search.html # docs/handbook/book/foundations/architecture.html # docs/handbook/book/foundations/thesis.html # docs/handbook/book/foundations/verification.html # docs/handbook/book/index.html # docs/handbook/book/introduction.html # docs/handbook/book/models/prompts.html # docs/handbook/book/models/providers.html # docs/handbook/book/models/system-prompt.html # docs/handbook/book/observability/overview.html # docs/handbook/book/print.html # docs/handbook/book/reference/approval-mode.html # docs/handbook/book/reference/cli.html # docs/handbook/book/reference/environment-complete.html # docs/handbook/book/reference/environment.html # docs/handbook/book/reference/exit-codes.html # docs/handbook/book/reference/file-locations.html # docs/handbook/book/reference/hooks.html # docs/handbook/book/reference/index.html # docs/handbook/book/reference/keybindings-config.html # docs/handbook/book/reference/keybindings-ref.html # docs/handbook/book/reference/mcp-config.html # docs/handbook/book/reference/models-yml.html # docs/handbook/book/reference/project-trust.html # docs/handbook/book/reference/providers.html # docs/handbook/book/reference/rpc.html # docs/handbook/book/reference/sdk.html # docs/handbook/book/reference/settings-reference.html # docs/handbook/book/reference/settings.html # docs/handbook/book/reference/skills.html # docs/handbook/book/reference/slash-commands.html # docs/handbook/book/reference/theme.html # docs/handbook/book/reference/tools.html # docs/handbook/book/reference/tree-command.html # docs/handbook/book/repair/cascade.html # docs/handbook/book/repair/overview.html # docs/handbook/book/repair/per-model.html # docs/handbook/book/repair/soundness.html # docs/handbook/book/router/role-routing.html # docs/handbook/book/searcher-c2a407aa.js # docs/handbook/book/searchindex-abb5237d.js # docs/handbook/book/using/authentication.html # docs/handbook/book/using/configuration.html # docs/handbook/book/using/configuring-providers.html # docs/handbook/book/using/custom-tools.html # docs/handbook/book/using/editing.html # docs/handbook/book/using/examples.html # docs/handbook/book/using/extending.html # docs/handbook/book/using/faq.html # docs/handbook/book/using/getting-started.html # docs/handbook/book/using/install.html # docs/handbook/book/using/mcp-setup.html # docs/handbook/book/using/migration-guide.html # docs/handbook/book/using/models.html # docs/handbook/book/using/quickstart.html # docs/handbook/book/using/roles-and-profiles.html # docs/handbook/book/using/safety.html # docs/handbook/book/using/sessions.html # docs/handbook/book/using/task-guides.html # docs/handbook/book/using/themes.html # docs/handbook/book/using/troubleshooting.html # docs/handbook/book/why/argot.html # docs/handbook/book/why/index.html # docs/handbook/book/why/innovations.html # docs/handbook/book/why/performance.html # docs/handbook/book/why/value.html
…ugh the shared helper
…-code-mutations # Conflicts: # docs/handbook/book/404.html # docs/handbook/book/acknowledgements.html # docs/handbook/book/appendix/glossary.html # docs/handbook/book/architecture/compaction.html # docs/handbook/book/architecture/config.html # docs/handbook/book/architecture/mcp.html # docs/handbook/book/architecture/memory.html # docs/handbook/book/architecture/overview.html # docs/handbook/book/architecture/providers.html # docs/handbook/book/architecture/sandbox.html # docs/handbook/book/architecture/secrets.html # docs/handbook/book/architecture/session-turn.html # docs/handbook/book/architecture/tui.html # docs/handbook/book/concepts/index.html # docs/handbook/book/concepts/model-contract.html # docs/handbook/book/concepts/permission-model.html # docs/handbook/book/concepts/sessions-turns-threads.html # docs/handbook/book/context/compaction-memory.html # docs/handbook/book/context/context-files.html # docs/handbook/book/context/goal-state.html # docs/handbook/book/context/reads-search.html # docs/handbook/book/edit/edit-repair.html # docs/handbook/book/edit/engine.html # docs/handbook/book/edit/roadmap.html # docs/handbook/book/features/advisor.html # docs/handbook/book/features/branching.html # docs/handbook/book/features/cockpit.html # docs/handbook/book/features/collab.html # docs/handbook/book/features/connectors.html # docs/handbook/book/features/cpu-limit.html # docs/handbook/book/features/doctor.html # docs/handbook/book/features/exec.html # docs/handbook/book/features/export-import.html # docs/handbook/book/features/extensions-authoring.html # docs/handbook/book/features/extensions.html # docs/handbook/book/features/feature-flags.html # docs/handbook/book/features/hooks-authoring.html # docs/handbook/book/features/hooks.html # docs/handbook/book/features/index.html # docs/handbook/book/features/keybindings.html # docs/handbook/book/features/lsp.html # docs/handbook/book/features/marketplace-authoring.html # docs/handbook/book/features/marketplace.html # docs/handbook/book/features/mcp.html # docs/handbook/book/features/memory.html # docs/handbook/book/features/personalities.html # docs/handbook/book/features/plan-mode.html # docs/handbook/book/features/plugins.html # docs/handbook/book/features/profiles.html # docs/handbook/book/features/python-repl.html # docs/handbook/book/features/review.html # docs/handbook/book/features/sandbox.html # docs/handbook/book/features/secrets.html # docs/handbook/book/features/skills-authoring.html # docs/handbook/book/features/skills.html # docs/handbook/book/features/speech.html # docs/handbook/book/features/subagents.html # docs/handbook/book/features/web-search.html # docs/handbook/book/foundations/architecture.html # docs/handbook/book/foundations/thesis.html # docs/handbook/book/foundations/verification.html # docs/handbook/book/index.html # docs/handbook/book/introduction.html # docs/handbook/book/models/prompts.html # docs/handbook/book/models/providers.html # docs/handbook/book/models/system-prompt.html # docs/handbook/book/observability/overview.html # docs/handbook/book/print.html # docs/handbook/book/reference/approval-mode.html # docs/handbook/book/reference/cli.html # docs/handbook/book/reference/environment-complete.html # docs/handbook/book/reference/environment.html # docs/handbook/book/reference/exit-codes.html # docs/handbook/book/reference/file-locations.html # docs/handbook/book/reference/hooks.html # docs/handbook/book/reference/index.html # docs/handbook/book/reference/keybindings-config.html # docs/handbook/book/reference/keybindings-ref.html # docs/handbook/book/reference/mcp-config.html # docs/handbook/book/reference/models-yml.html # docs/handbook/book/reference/project-trust.html # docs/handbook/book/reference/providers.html # docs/handbook/book/reference/rpc.html # docs/handbook/book/reference/sdk.html # docs/handbook/book/reference/settings-reference.html # docs/handbook/book/reference/settings.html # docs/handbook/book/reference/skills.html # docs/handbook/book/reference/slash-commands.html # docs/handbook/book/reference/theme.html # docs/handbook/book/reference/tools.html # docs/handbook/book/reference/tree-command.html # docs/handbook/book/repair/cascade.html # docs/handbook/book/repair/overview.html # docs/handbook/book/repair/per-model.html # docs/handbook/book/repair/soundness.html # docs/handbook/book/router/role-routing.html # docs/handbook/book/searcher-c2a407aa.js # docs/handbook/book/using/authentication.html # docs/handbook/book/using/configuration.html # docs/handbook/book/using/configuring-providers.html # docs/handbook/book/using/custom-tools.html # docs/handbook/book/using/editing.html # docs/handbook/book/using/examples.html # docs/handbook/book/using/extending.html # docs/handbook/book/using/faq.html # docs/handbook/book/using/getting-started.html # docs/handbook/book/using/install.html # docs/handbook/book/using/mcp-setup.html # docs/handbook/book/using/migration-guide.html # docs/handbook/book/using/models.html # docs/handbook/book/using/quickstart.html # docs/handbook/book/using/roles-and-profiles.html # docs/handbook/book/using/safety.html # docs/handbook/book/using/sessions.html # docs/handbook/book/using/task-guides.html # docs/handbook/book/using/themes.html # docs/handbook/book/using/troubleshooting.html # docs/handbook/book/why/argot.html # docs/handbook/book/why/index.html # docs/handbook/book/why/innovations.html # docs/handbook/book/why/performance.html # docs/handbook/book/why/value.html
… this turn A pending reminder deliberately survives a user answer, so the paths it lists can predate the turn it arrives in. Saying "applied this turn" states something the state contradicts in exactly the case the deferral exists for. Refs #891
…-code-mutations # Conflicts: # docs/handbook/book/404.html # docs/handbook/book/acknowledgements.html # docs/handbook/book/appendix/glossary.html # docs/handbook/book/architecture/compaction.html # docs/handbook/book/architecture/config.html # docs/handbook/book/architecture/mcp.html # docs/handbook/book/architecture/memory.html # docs/handbook/book/architecture/overview.html # docs/handbook/book/architecture/providers.html # docs/handbook/book/architecture/sandbox.html # docs/handbook/book/architecture/secrets.html # docs/handbook/book/architecture/session-turn.html # docs/handbook/book/architecture/tui.html # docs/handbook/book/concepts/index.html # docs/handbook/book/concepts/model-contract.html # docs/handbook/book/concepts/permission-model.html # docs/handbook/book/concepts/sessions-turns-threads.html # docs/handbook/book/context/compaction-memory.html # docs/handbook/book/context/context-files.html # docs/handbook/book/context/goal-state.html # docs/handbook/book/context/reads-search.html # docs/handbook/book/edit/edit-repair.html # docs/handbook/book/edit/engine.html # docs/handbook/book/edit/roadmap.html # docs/handbook/book/features/advisor.html # docs/handbook/book/features/branching.html # docs/handbook/book/features/cockpit.html # docs/handbook/book/features/collab.html # docs/handbook/book/features/connectors.html # docs/handbook/book/features/cpu-limit.html # docs/handbook/book/features/doctor.html # docs/handbook/book/features/exec.html # docs/handbook/book/features/export-import.html # docs/handbook/book/features/extensions-authoring.html # docs/handbook/book/features/extensions.html # docs/handbook/book/features/feature-flags.html # docs/handbook/book/features/hooks-authoring.html # docs/handbook/book/features/hooks.html # docs/handbook/book/features/index.html # docs/handbook/book/features/keybindings.html # docs/handbook/book/features/lsp.html # docs/handbook/book/features/marketplace-authoring.html # docs/handbook/book/features/marketplace.html # docs/handbook/book/features/mcp.html # docs/handbook/book/features/memory.html # docs/handbook/book/features/personalities.html # docs/handbook/book/features/plan-mode.html # docs/handbook/book/features/plugins.html # docs/handbook/book/features/profiles.html # docs/handbook/book/features/python-repl.html # docs/handbook/book/features/review.html # docs/handbook/book/features/sandbox.html # docs/handbook/book/features/secrets.html # docs/handbook/book/features/skills-authoring.html # docs/handbook/book/features/skills.html # docs/handbook/book/features/speech.html # docs/handbook/book/features/subagents.html # docs/handbook/book/features/web-search.html # docs/handbook/book/foundations/architecture.html # docs/handbook/book/foundations/thesis.html # docs/handbook/book/foundations/verification.html # docs/handbook/book/index.html # docs/handbook/book/introduction.html # docs/handbook/book/models/prompts.html # docs/handbook/book/models/providers.html # docs/handbook/book/models/system-prompt.html # docs/handbook/book/observability/overview.html # docs/handbook/book/print.html # docs/handbook/book/reference/approval-mode.html # docs/handbook/book/reference/cli.html # docs/handbook/book/reference/environment-complete.html # docs/handbook/book/reference/environment.html # docs/handbook/book/reference/exit-codes.html # docs/handbook/book/reference/file-locations.html # docs/handbook/book/reference/hooks.html # docs/handbook/book/reference/index.html # docs/handbook/book/reference/keybindings-config.html # docs/handbook/book/reference/keybindings-ref.html # docs/handbook/book/reference/mcp-config.html # docs/handbook/book/reference/models-yml.html # docs/handbook/book/reference/project-trust.html # docs/handbook/book/reference/providers.html # docs/handbook/book/reference/rpc.html # docs/handbook/book/reference/sdk.html # docs/handbook/book/reference/settings-reference.html # docs/handbook/book/reference/settings.html # docs/handbook/book/reference/skills.html # docs/handbook/book/reference/slash-commands.html # docs/handbook/book/reference/theme.html # docs/handbook/book/reference/tools.html # docs/handbook/book/reference/tree-command.html # docs/handbook/book/repair/cascade.html # docs/handbook/book/repair/overview.html # docs/handbook/book/repair/per-model.html # docs/handbook/book/repair/soundness.html # docs/handbook/book/router/role-routing.html # docs/handbook/book/searcher-c2a407aa.js # docs/handbook/book/searchindex-f272b308.js # docs/handbook/book/using/authentication.html # docs/handbook/book/using/configuration.html # docs/handbook/book/using/configuring-providers.html # docs/handbook/book/using/custom-tools.html # docs/handbook/book/using/editing.html # docs/handbook/book/using/examples.html # docs/handbook/book/using/extending.html # docs/handbook/book/using/faq.html # docs/handbook/book/using/getting-started.html # docs/handbook/book/using/install.html # docs/handbook/book/using/mcp-setup.html # docs/handbook/book/using/migration-guide.html # docs/handbook/book/using/models.html # docs/handbook/book/using/quickstart.html # docs/handbook/book/using/roles-and-profiles.html # docs/handbook/book/using/safety.html # docs/handbook/book/using/sessions.html # docs/handbook/book/using/task-guides.html # docs/handbook/book/using/themes.html # docs/handbook/book/using/troubleshooting.html # docs/handbook/book/why/argot.html # docs/handbook/book/why/index.html # docs/handbook/book/why/innovations.html # docs/handbook/book/why/performance.html # docs/handbook/book/why/value.html
…-code-mutations # Conflicts: # docs/handbook/book/404.html # docs/handbook/book/acknowledgements.html # docs/handbook/book/appendix/glossary.html # docs/handbook/book/architecture/compaction.html # docs/handbook/book/architecture/config.html # docs/handbook/book/architecture/mcp.html # docs/handbook/book/architecture/memory.html # docs/handbook/book/architecture/overview.html # docs/handbook/book/architecture/providers.html # docs/handbook/book/architecture/sandbox.html # docs/handbook/book/architecture/secrets.html # docs/handbook/book/architecture/session-turn.html # docs/handbook/book/architecture/tui.html # docs/handbook/book/concepts/index.html # docs/handbook/book/concepts/model-contract.html # docs/handbook/book/concepts/permission-model.html # docs/handbook/book/concepts/sessions-turns-threads.html # docs/handbook/book/context/compaction-memory.html # docs/handbook/book/context/context-files.html # docs/handbook/book/context/goal-state.html # docs/handbook/book/context/reads-search.html # docs/handbook/book/edit/edit-repair.html # docs/handbook/book/edit/engine.html # docs/handbook/book/edit/roadmap.html # docs/handbook/book/features/advisor.html # docs/handbook/book/features/branching.html # docs/handbook/book/features/cockpit.html # docs/handbook/book/features/collab.html # docs/handbook/book/features/connectors.html # docs/handbook/book/features/cpu-limit.html # docs/handbook/book/features/doctor.html # docs/handbook/book/features/exec.html # docs/handbook/book/features/export-import.html # docs/handbook/book/features/extensions-authoring.html # docs/handbook/book/features/extensions.html # docs/handbook/book/features/feature-flags.html # docs/handbook/book/features/hooks-authoring.html # docs/handbook/book/features/hooks.html # docs/handbook/book/features/index.html # docs/handbook/book/features/keybindings.html # docs/handbook/book/features/lsp.html # docs/handbook/book/features/marketplace-authoring.html # docs/handbook/book/features/marketplace.html # docs/handbook/book/features/mcp.html # docs/handbook/book/features/memory.html # docs/handbook/book/features/personalities.html # docs/handbook/book/features/plan-mode.html # docs/handbook/book/features/plugins.html # docs/handbook/book/features/profiles.html # docs/handbook/book/features/python-repl.html # docs/handbook/book/features/review.html # docs/handbook/book/features/sandbox.html # docs/handbook/book/features/secrets.html # docs/handbook/book/features/skills-authoring.html # docs/handbook/book/features/skills.html # docs/handbook/book/features/speech.html # docs/handbook/book/features/subagents.html # docs/handbook/book/features/web-search.html # docs/handbook/book/foundations/architecture.html # docs/handbook/book/foundations/thesis.html # docs/handbook/book/foundations/verification.html # docs/handbook/book/index.html # docs/handbook/book/introduction.html # docs/handbook/book/models/prompts.html # docs/handbook/book/models/providers.html # docs/handbook/book/models/system-prompt.html # docs/handbook/book/observability/overview.html # docs/handbook/book/print.html # docs/handbook/book/reference/approval-mode.html # docs/handbook/book/reference/cli.html # docs/handbook/book/reference/environment-complete.html # docs/handbook/book/reference/environment.html # docs/handbook/book/reference/exit-codes.html # docs/handbook/book/reference/file-locations.html # docs/handbook/book/reference/hooks.html # docs/handbook/book/reference/index.html # docs/handbook/book/reference/keybindings-config.html # docs/handbook/book/reference/keybindings-ref.html # docs/handbook/book/reference/mcp-config.html # docs/handbook/book/reference/models-yml.html # docs/handbook/book/reference/project-trust.html # docs/handbook/book/reference/providers.html # docs/handbook/book/reference/rpc.html # docs/handbook/book/reference/sdk.html # docs/handbook/book/reference/settings-reference.html # docs/handbook/book/reference/settings.html # docs/handbook/book/reference/skills.html # docs/handbook/book/reference/slash-commands.html # docs/handbook/book/reference/theme.html # docs/handbook/book/reference/tools.html # docs/handbook/book/reference/tree-command.html # docs/handbook/book/repair/cascade.html # docs/handbook/book/repair/overview.html # docs/handbook/book/repair/per-model.html # docs/handbook/book/repair/soundness.html # docs/handbook/book/router/role-routing.html # docs/handbook/book/searcher-c2a407aa.js # docs/handbook/book/using/authentication.html # docs/handbook/book/using/configuration.html # docs/handbook/book/using/configuring-providers.html # docs/handbook/book/using/custom-tools.html # docs/handbook/book/using/editing.html # docs/handbook/book/using/examples.html # docs/handbook/book/using/extending.html # docs/handbook/book/using/faq.html # docs/handbook/book/using/getting-started.html # docs/handbook/book/using/install.html # docs/handbook/book/using/mcp-setup.html # docs/handbook/book/using/migration-guide.html # docs/handbook/book/using/models.html # docs/handbook/book/using/quickstart.html # docs/handbook/book/using/roles-and-profiles.html # docs/handbook/book/using/safety.html # docs/handbook/book/using/sessions.html # docs/handbook/book/using/task-guides.html # docs/handbook/book/using/themes.html # docs/handbook/book/using/troubleshooting.html # docs/handbook/book/why/argot.html # docs/handbook/book/why/index.html # docs/handbook/book/why/innovations.html # docs/handbook/book/why/performance.html # docs/handbook/book/why/value.html
…out branch The suite rendered the footline with the git segment live, so the line width moved with the branch name of whatever checkout ran it. A 35-character branch pushed the model segment past the 120-column budget and failed the hit-test in CI while the same commit passed on a short-named checkout.
The 100k-deep optional-argument payload cost 6.6s isolated and timed out at 97s on a --parallel=4 --smol runner, where the guard had been linear the whole time. A wall-clock ceiling cannot separate linear from quadratic anyway: a quadratic parser stays inside any generous ceiling at a depth small enough to finish. Measure 4k and 8k instead and bound the ratio at 3, the geometric midpoint of the linear 2.34 and the quadratic 4.01. Reinjecting the pre-fix defect (a fresh child parser in #optionalArgument) drives the ratio to 4.01 and the test red. Measured smallest-arm-first on purpose: cost(8_000) / cost(4_000) evaluates the numerator first, charges JIT tier-up to the large arm, and passes at ratio 2 against a quadratic parser. The test drops from 5.5s to 2.3s. Shallow optional-argument math moves to its own case, since it defends a different contract and needs no timing.
…-code-mutations # Conflicts: # docs/handbook/book/404.html # docs/handbook/book/acknowledgements.html # docs/handbook/book/appendix/glossary.html # docs/handbook/book/architecture/compaction.html # docs/handbook/book/architecture/config.html # docs/handbook/book/architecture/mcp.html # docs/handbook/book/architecture/memory.html # docs/handbook/book/architecture/overview.html # docs/handbook/book/architecture/providers.html # docs/handbook/book/architecture/sandbox.html # docs/handbook/book/architecture/secrets.html # docs/handbook/book/architecture/session-turn.html # docs/handbook/book/architecture/tui.html # docs/handbook/book/concepts/index.html # docs/handbook/book/concepts/model-contract.html # docs/handbook/book/concepts/permission-model.html # docs/handbook/book/concepts/sessions-turns-threads.html # docs/handbook/book/context/compaction-memory.html # docs/handbook/book/context/context-files.html # docs/handbook/book/context/goal-state.html # docs/handbook/book/context/reads-search.html # docs/handbook/book/edit/edit-repair.html # docs/handbook/book/edit/engine.html # docs/handbook/book/edit/roadmap.html # docs/handbook/book/features/advisor.html # docs/handbook/book/features/branching.html # docs/handbook/book/features/cockpit.html # docs/handbook/book/features/collab.html # docs/handbook/book/features/connectors.html # docs/handbook/book/features/cpu-limit.html # docs/handbook/book/features/doctor.html # docs/handbook/book/features/exec.html # docs/handbook/book/features/export-import.html # docs/handbook/book/features/extensions-authoring.html # docs/handbook/book/features/extensions.html # docs/handbook/book/features/feature-flags.html # docs/handbook/book/features/hooks-authoring.html # docs/handbook/book/features/hooks.html # docs/handbook/book/features/index.html # docs/handbook/book/features/keybindings.html # docs/handbook/book/features/lsp.html # docs/handbook/book/features/marketplace-authoring.html # docs/handbook/book/features/marketplace.html # docs/handbook/book/features/mcp.html # docs/handbook/book/features/memory.html # docs/handbook/book/features/personalities.html # docs/handbook/book/features/plan-mode.html # docs/handbook/book/features/plugins.html # docs/handbook/book/features/profiles.html # docs/handbook/book/features/python-repl.html # docs/handbook/book/features/review.html # docs/handbook/book/features/sandbox.html # docs/handbook/book/features/secrets.html # docs/handbook/book/features/skills-authoring.html # docs/handbook/book/features/skills.html # docs/handbook/book/features/speech.html # docs/handbook/book/features/subagents.html # docs/handbook/book/features/web-search.html # docs/handbook/book/foundations/architecture.html # docs/handbook/book/foundations/thesis.html # docs/handbook/book/foundations/verification.html # docs/handbook/book/index.html # docs/handbook/book/introduction.html # docs/handbook/book/models/prompts.html # docs/handbook/book/models/providers.html # docs/handbook/book/models/system-prompt.html # docs/handbook/book/observability/overview.html # docs/handbook/book/print.html # docs/handbook/book/reference/approval-mode.html # docs/handbook/book/reference/cli.html # docs/handbook/book/reference/environment-complete.html # docs/handbook/book/reference/environment.html # docs/handbook/book/reference/exit-codes.html # docs/handbook/book/reference/file-locations.html # docs/handbook/book/reference/hooks.html # docs/handbook/book/reference/index.html # docs/handbook/book/reference/keybindings-config.html # docs/handbook/book/reference/keybindings-ref.html # docs/handbook/book/reference/mcp-config.html # docs/handbook/book/reference/models-yml.html # docs/handbook/book/reference/project-trust.html # docs/handbook/book/reference/providers.html # docs/handbook/book/reference/rpc.html # docs/handbook/book/reference/sdk.html # docs/handbook/book/reference/settings-reference.html # docs/handbook/book/reference/settings.html # docs/handbook/book/reference/skills.html # docs/handbook/book/reference/slash-commands.html # docs/handbook/book/reference/theme.html # docs/handbook/book/reference/tools.html # docs/handbook/book/reference/tree-command.html # docs/handbook/book/repair/cascade.html # docs/handbook/book/repair/overview.html # docs/handbook/book/repair/per-model.html # docs/handbook/book/repair/soundness.html # docs/handbook/book/router/role-routing.html # docs/handbook/book/searcher-c2a407aa.js # docs/handbook/book/using/authentication.html # docs/handbook/book/using/configuration.html # docs/handbook/book/using/configuring-providers.html # docs/handbook/book/using/custom-tools.html # docs/handbook/book/using/editing.html # docs/handbook/book/using/examples.html # docs/handbook/book/using/extending.html # docs/handbook/book/using/faq.html # docs/handbook/book/using/getting-started.html # docs/handbook/book/using/install.html # docs/handbook/book/using/mcp-setup.html # docs/handbook/book/using/migration-guide.html # docs/handbook/book/using/models.html # docs/handbook/book/using/quickstart.html # docs/handbook/book/using/roles-and-profiles.html # docs/handbook/book/using/safety.html # docs/handbook/book/using/sessions.html # docs/handbook/book/using/task-guides.html # docs/handbook/book/using/themes.html # docs/handbook/book/using/troubleshooting.html # docs/handbook/book/why/argot.html # docs/handbook/book/why/index.html # docs/handbook/book/why/innovations.html # docs/handbook/book/why/performance.html # docs/handbook/book/why/value.html
What
edit.critiqueCodeMutationsis an off-by-default Files setting. When enabled, a main-agent turn that changes at least two distinct code files receives one hidden review reminder before finalization. The reminder requests a cross-file correctness, maintainability, and boundary review; a concrete defect must be fixed before the session stops.The feature has one setting key. The unused
session.critiqueCodeMutationsalias was removed.Correctness audit
edit,write, directast_edit, and appliedast_editresolutions contribute mutation evidence../variants from satisfying the two-file threshold twice.Settings differential
Both frames were recorded from
proof/scenes/code-review-reminder.shat the same 131×36 terminal size. The off arm uses the schema default. The on arm was seeded before launch withSCENE_SETTINGS='edit.critiqueCodeMutations: true'.Off — default is
falseOn — configured value is
trueThe frames differ byte-for-byte:
07ae2ecd9847616141e286ed5670f65aa9e280ec12d1bd736ae4cd2c06b85dfb36be3b4fdcb86716317382b19d7ff799150955e08cf90c8abe8b632f3d1866e0The pair proves the settings surface and seeded value. The committed scene continues into the two-file workflow; the executed end-to-end behavior proof is the scripted-provider simulation below. The recorder's local model service was unavailable for the later model turn, so no model-output frame is claimed as evidence.
Performance
Committed benchmark:
packages/coding-agent/bench/code-review-reminder.bench.ts.Same 32-mutation corpus, 1,000 iterations, 100 warmups:
Enabled delivery added 27.93 µs per settle. The disabled arm executes the same pre-existing mutation-ledger work and skips review selection/rendering.
Verification
bun run checkpassed TypeScript and Rust checks.bun run check:toolspassed.CHANGELOG_BASE=origin/main bun run changelog:checkpassed.bun run changelog:root:checkpassed.bun scripts/verify-scene.ts code-review-reminderpassed.git diff --checkpassed.