Skip to content

#1077 Show the proposed edit above post-review menu options - #1078

Merged
williamthorsen merged 8 commits into
mainfrom
1077
Jul 23, 2026
Merged

#1077 Show the proposed edit above post-review menu options#1078
williamthorsen merged 8 commits into
mainfrom
1077

Conversation

@williamthorsen

@williamthorsen williamthorsen commented Jul 23, 2026

Copy link
Copy Markdown
Owner

What

Agents offering next steps after a code review are now instructed to show the exact edit an option would make to the ticket or pull request description above the numbered options, flagging any part of that edit that would settle or obviate an open review finding.

Why

After a code review, the next-steps menu offered to rewrite a ticket's acceptance criteria or a PR description behind a bare option label. Which deviations became criteria was a judgment the reviewer made silently, so consent was given to an edit nobody had seen. Other consent points in the same flow already showed their content at the moment of consent; these two did not.

Details

🎉 Features

  • A Proposed-edit preview section defines the contract both artifact-mutating sub-blocks reference: where the preview renders, its delta notation per target, the cross-reference to open findings, the rule binding the executed edit to the preview, and the empty-delta case.
  • Both sub-blocks require the preview and carve it out of their "pros and cons are omitted by default" rule, so terseness cannot suppress it. The deviations example, all three source-divergence cases, and the combined render show the resulting shape.
  • align-ticket-with-implementation gains a criteria-only mode that revises acceptance criteria and carries the rest of the ticket through unchanged, sourced from the ticket the caller names.

🐛 Bug fixes

  • The deviations option now runs in criteria-only mode. It previously invoked a whole-ticket regeneration, so it rewrote narrative sections its criteria preview never described.
  • An empty criteria delta now has a stated recommendation. The empty case previously deferred to rules that could only recommend the update option or none at all.
  • Selecting a ticket edit from both sub-blocks now resolves to a single whole-ticket run bound by the union of the two previews, rather than two runs in different modes with no stated order.

🧪 Tests

  • The inlining spec pins the preview heading and the terseness carve-out, so neither can be dropped from the partial silently.
  • A new content-invariant test asserts that a mode one skill's directive names is defined by the skill it names, keyed on a table so a second cross-skill mode costs one entry.

Closes #1077

Post-review next-steps menus gain a shared preview spec for the options that rewrite a ticket or a PR description. The preview is a delta of the proposed changes, rendered above the numbered options, so the user sees the edit before consenting to it.

The spec fixes the delta notation for both edit targets, flags a proposed line that would settle an open finding, binds the executed edit to what was previewed, and omits the preview when the delta is empty.
The deviations menu is required to render the acceptance-criteria delta above its numbered options, so the choice to update a ticket carries the concrete edit it approves.

The sub-block's terseness rule is scoped to pros and cons alone, leaving it unable to suppress the preview.
The source-divergence menu is required to render the proposed edit for each artifact it would rewrite: the PR-description claim changes, the ticket delta, or both when the implementation matches neither source. "Leave as-is" renders no preview.

The sub-block's terseness rule is scoped to pros and cons alone, leaving it unable to suppress the preview. The combined menu carries a preview under every section that would rewrite something.
The proposed-edit preview gains a line shape for a narrative ticket section the edit regenerates, so a menu option that ratifies a whole ticket can preview everything it would rewrite rather than its acceptance criteria alone.

An empty criteria delta recommends leaving the ticket alone, with the markers assigned by a dedicated rule in the deviations menu. The open-findings cross-reference fires for any finding the delta would settle or moot, not only one that raises a question.
The inlining spec for the post-review menus pins the proposed-edit preview heading, whose rename would silently break the anchors both sub-blocks link to, and the carve-out sentence that exempts the preview from the terseness default.
After a review, the option to update a ticket's acceptance criteria now instructs agents to revise those criteria alone and carry the rest of the ticket through unchanged. Previously it invoked the same whole-ticket rewrite used when ratifying a stale ticket, so it changed sections the proposed-edit preview never showed.

When an option does ratify a whole ticket, the preview's narrative-section lines are now sourced from the divergences the review diagnosed between the ticket and the implementation, which previously had no stated origin.
When a review's next-steps menu offers two ways to edit the same ticket and the user selects both, agents are now instructed to make a single whole-ticket edit bound by the union of the two previews. Previously the two selections invoked different edit modes against one ticket with no stated order, so the outcome depended on which ran first.
@williamthorsen williamthorsen added feature Added or improved external functionality scope:agents labels Jul 23, 2026
@williamthorsen williamthorsen self-assigned this Jul 23, 2026
@williamthorsen
williamthorsen marked this pull request as ready for review July 23, 2026 08:03
The rule directing agents to flag a preview line that would dispose of an open review finding now reads "settle or obviate". It previously read "settle or moot", whose primary sense is to raise the finding for discussion rather than to make it irrelevant.
@github-actions

Copy link
Copy Markdown

Dependency audit

Production dependency audit passed.

@williamthorsen
williamthorsen merged commit 396ee43 into main Jul 23, 2026
3 checks passed
@williamthorsen
williamthorsen deleted the 1077 branch July 23, 2026 15:58
williamthorsen added a commit that referenced this pull request Aug 4, 2026
…e-v0.2.2 codeassembly-v0.4.0 factory-v0.2.2 codeassembly-mcp-v0.2.2

codeassembly-v0.4.0
- #1153 feat: Make codeassembly and kb CLI tools publishable (#1164)
- #1091 fix: Anchor a project-deployed link where its target deploys (#1159)
- #1156 refactor: Rename packages to publishable names (#1157)
- #1152 tooling: Run every test in the default gate, classified by what it reaches (#1155)
- #1110 tooling: Migrate Vitest to nmr's centralized model (#1154)
- refactor: Refine typescript-preferences
- #1150 fix: State doc-description form and make comment mood opt-in (#1151)
- deps: Upgrade first-party linting deps to latest version
- #1137 feat: Establish personal rulebooks for code layout and TypeScript preferences (#1144)
- #1126 feat: Check a package's own guidance content before it ships (#1138)
- refactor: Fix lint
- tooling: Remove redundant lint rules
- #1133 fix: Reject an anchor link that names no heading (#1135)
- #1122 feat: Capture lede decisions as an accumulating corpus (#1132)
- #1125 feat: Honor invocation tokens in rulebook bodies (#1129)
- #1107 feat: Render rulebook links and path tokens per harness (#1124)
- #1115 feat: Sync guidance at build and install so an upgrade cannot leave it stale (#1123)
- #1114 feat: Adopt a dependency's guidance by naming the package (#1121)
- #1088 feat: Deliver project ambient rulebooks per harness (#1113)
- #1087 refactor: Rename the authoring rulebook and mark its enforced rules (#1092)
- #1095 tooling: Move compilation out of the install lifecycle into a bootstrap step (#1102)
- #1094 refactor: Remove the ambient ripgrep dependency from the test suite (#1097)
- deps: Upgrade all deps to latest version
- tooling: Upgrade all deps to latest version & modernize configs
- refactor: Fix lint
- #1077 feat: Show the proposed edit above post-review menu options (#1078)
- #1068 feat: Deliver ambient rulebooks mechanically, retiring GLOBAL.md (#1075)
- #1069 feat: Add a no-second-person rule to the lede-voice doctrine (#1070)
- #1050 feat: Add a redundancy rule to the lede-voice doctrine (#1058)
- #1035 internal: Add lifecycle workspace with the canonical envelope, vocabulary & lane fold (#1049)
- #1006 internal: Extend lifecycle-event instrumentation to five high-traffic skills (#1034)
- #1028 feat: Rule out absence-of-removed-code tests (#1032)
- #114 feat: Let reviewers emit gated insights into review artifacts (#1031)
- #1027 internal: Retire input.received and redundant skill.progress emits (#1030)
- #1026 fix: Name the side effects an approval ask authorizes (#1029)
- #1022 fix: Normalize action and question label identifiers across asks blocks (#1025)

factory-v0.2.2
- #1156 refactor: Rename packages to publishable names (#1157)
- deps: Upgrade all deps to latest version
- #1152 tooling: Run every test in the default gate, classified by what it reaches (#1155)
- #1110 tooling: Migrate Vitest to nmr's centralized model (#1154)
- tooling: Remove redundant lint rules
- deps: Upgrade deps to latest version
- deps: Upgrade all deps to latest version
- deps: Upgrade all deps to latest version
- tooling: Upgrade all deps to latest version & modernize configs
- refactor: Fix lint
- deps: Upgrade all deps to latest version

kb-v0.3.0
- #1153 feat: Make codeassembly and kb CLI tools publishable (#1164)
- #1156 refactor: Rename packages to publishable names (#1157)
- #1152 tooling: Run every test in the default gate, classified by what it reaches (#1155)
- #1110 tooling: Migrate Vitest to nmr's centralized model (#1154)
- tooling: Remove redundant lint rules
- #1095 tooling: Move compilation out of the install lifecycle into a bootstrap step (#1102)
- tooling: Upgrade all deps to latest version & modernize configs
- refactor: Fix lint

codeassembly-lifecycle-v0.2.0
- #1153 feat: Make codeassembly and kb CLI tools publishable (#1164)
- #1156 refactor: Rename packages to publishable names (#1157)
- #1152 tooling: Run every test in the default gate, classified by what it reaches (#1155)
- #1110 tooling: Migrate Vitest to nmr's centralized model (#1154)
- tooling: Remove redundant lint rules
- #1095 tooling: Move compilation out of the install lifecycle into a bootstrap step (#1102)
- tooling: Upgrade all deps to latest version & modernize configs
- #1038 feat: Add the read-only git adapter for worktree and base-branch ground truth (#1059)
- #1051 feat: Bound fold memory and rescan cost with a retention window (#1057)
- #1035 internal: Add lifecycle workspace with the canonical envelope, vocabulary & lane fold (#1049)

codeassembly-mcp-v0.2.2
- deps: Upgrade all deps to latest version
- #1156 refactor: Rename packages to publishable names (#1157)
- #1152 tooling: Run every test in the default gate, classified by what it reaches (#1155)
- #1110 tooling: Migrate Vitest to nmr's centralized model (#1154)
- #1095 tooling: Move compilation out of the install lifecycle into a bootstrap step (#1102)
- tooling: Upgrade all deps to latest version & modernize configs
- refactor: Fix lint

codeassembly-run-core-v0.2.2
- #1156 refactor: Rename packages to publishable names (#1157)
- #1152 tooling: Run every test in the default gate, classified by what it reaches (#1155)
- #1110 tooling: Migrate Vitest to nmr's centralized model (#1154)
- #1095 tooling: Move compilation out of the install lifecycle into a bootstrap step (#1102)
- tooling: Upgrade all deps to latest version & modernize configs
- refactor: Fix lint
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Added or improved external functionality scope:agents

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Show the proposed edit when offering to update acceptance criteria after a review

1 participant