Skip to content

Fix: quoted review headings start no block - #101

Merged
DocksDocks merged 2 commits into
mainfrom
fix-quoted-review-heading
Oct 23, 2026
Merged

DocksDocks merged 2 commits into
mainfrom
fix-quoted-review-heading

Conversation

@DocksDocks

Copy link
Copy Markdown
Owner

Fix: quoted review headings start no block

Plan-lifecycle 0.17.0 (#98, pull request #99) lets one review comment hold several blocks, one per lens. To find a later block, the helper looked for a review heading after it had removed blockquote, list, and emphasis marks from each line. A passing block that quoted an earlier round then opened a block of its own:

### Code review round 2, delta

Code-review: pass

## Previous findings

> ### Code review round 1
> Code-review: fixes-required

The quoted verdict won, so the round read as fixes-required (or repair for a plan review). A delta reviewer that quotes old rounds could keep a review loop from passing. The failure was strict, never loose: a quoted heading could not turn a failure into a pass. Version 0.16.0 read only the first verdict line and did not have this problem.

What changed

  • A later block starts only at a Markdown heading line: # after at most three spaces, not quoted and not a list item. Only the title after the # markers is read through emphasis and code marks (plugins/plan-lifecycle/skills/productivity/plan-manager/scripts/plan.mjs).
  • Kinds and verdict lines are still read through emphasis, code marks, quotes, and list markers, as before.
  • The contract's review-record rules state the heading rule (plan-contract.md).

Verification

  • Red baselines: the quoted-heading case read fixes-required before the fix; the star-bullet case (* ### Code review round 1) still read fixes-required after the first commit, which code review round 1 found.
  • node scripts/tests/plan-cli.mjs: 66 of 66 passed, with cases for a quoted heading, a - and a * list-item heading, an indented lens heading, and an emphasized heading title.
  • bun run test:coverage: plan.mjs line coverage 99.68%.
  • bun scripts/ci.mjs: passed for the repo-wide checks and both plugins.
  • Code review: round 1 (full) returned pass with one MEDIUM finding, the star-bullet case; round 2 (delta) settled it.

After merge

  • Release plan-lifecycle 0.17.1 (its own question).

Refs #98

Plan-lifecycle 0.17.0 split a review comment into blocks after it had
removed blockquote and list markers from each line. A passing block
that quoted an earlier round, such as

    > ### Code review round 1
    > Code-review: fixes-required

then opened a block of its own whose quoted verdict won, so the round
read as fixes-required (or repair for a plan review). A delta reviewer
that quotes old rounds could keep a loop from passing. Version 0.16.0
read only the first verdict line and did not have this problem.

The helper now starts a later block only at a Markdown heading line
that is not quoted and not a list item, indented by at most three
spaces. Kinds and verdicts are still read through emphasis, code
marks, quotes, and list markers. The contract states the rule, and the
parser spec covers a quoted heading, a list-item heading, and an
indented lens heading.

Refs #98
Code review of the quoted-heading fix found that the helper removed
emphasis marks from the whole line before it looked for a heading, so
a `*` list marker vanished and `* ### Code review round 1` with a
quoted `* Code-review: fixes-required` still opened a block whose
verdict won. The helper now requires `#` after at most three spaces on
the raw line and reads only the title after the `#` markers through
emphasis and code marks. The parser spec adds the star-bullet case and
an emphasized heading title that must still start a block.

Refs #98
@DocksDocks
DocksDocks merged commit c19b7d1 into main Oct 23, 2026
5 checks passed
@DocksDocks
DocksDocks deleted the fix-quoted-review-heading branch October 23, 2026 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant