qwen-code/packages/cli
Shaojin Wen 4b014c96e5
fix(review): stop shedding the convergence observation first (#9715)
* fix(review): stop shedding the convergence observation first

The convergence paragraph is the only thing a posted review says about the
SHAPE of the loop rather than about the diff, and it was rank 0 — the second
block the body-budget ladder sheds, right after the mechanism-health note.
The reasoning was that an advisory paragraph decides nothing, so it should
yield before the deferral list and the not-reviewed disclosures.

The arithmetic does not support that ordering. Rendered bilingually the
paragraph is 603 characters when only the volume signal fired, 1,510 with
three recurrence clusters, and 2,372 with the clusters, the evidence caveats
and the land reading together — against a body budget of 56,830. Shed
second it can pay for at most 4% of an overflow, so any overflow larger than
the paragraph itself spent it and then went on to spend the deferral list and
the disclosures anyway. On the rounds this fires on — the high-volume ones,
which is the whole point — that is the normal case: the author lost the
reminder AND the disclosures.

It is rank 3 now, the last rank the ladder sheds. Still ranked, not untagged:
a body that genuinely cannot hold its blockers must drop an advisory, and
being ranked is what makes the trim notice name it when that happens. Ranked
last because it is the cheapest block to keep and the only one whose reader
is the pull request's author alone — the deferral list has a second durable
copy in the findings artifact, the disclosures are restated in the terminal
report, and the mechanism-health note above it is written for the operator,
who has the `HEALTH:` line.

The test that pinned the old order is replaced by two that pin the new one:
one sized to the window where the ladder sheds the disclosures and stops,
asserting the paragraph survives and the notice names what actually went; one
sized a rung further, asserting the paragraph goes last and is named when it
does, before the hard cut.

Mutation-verified: restoring `trim: 0` reddens both; making the block
untagged reddens the last-and-named test (and the existing terminal-copy
test); removing the rank's name from RANK_NAMES reddens only the naming
assertion.

* test(review): finish the rank move in the comments, and re-centre a constant

Two hygiene items the review caught on the trim-rank change.

A test title and its comment still said the convergence paragraph is the
first rank the ladder sheds — the sentence the change makes false. Three
other copies of that wording were updated with the move; this one was
missed.

And `keeps the terminal copy on the round that actually sheds the paragraph`
was sized at 55,850. Reaching a body that dropped the paragraph now means
sizing past every other rank, and the window that does so without also
truncating runs 55,825–56,350 — so the constant sat twenty-five characters
above its own floor, with no note saying it was tuned at all. It is 56,100
now, near the middle, and carries the same retuning instruction as the two
order tests. It also asserts the body was not truncated, so a future retune
that overshoots reads as a failure rather than as a pass for the wrong
reason.

Measured, not guessed: sweeping the blocker size in 25-character steps puts
the shed boundary between 55,800 and 55,825 and the truncation boundary
between 56,350 and 56,375. Dropping the constant back below the window
reddens the test, so it still reaches the case the terminal copy exists for.

* docs(review): finish the rank move where the rationale actually lives

Six comments still asserted that the convergence paragraph is the first thing
the overflow ladder sheds. The reviewer named five; a sweep found a sixth,
and two of the six were already inaccurate before this branch touched
anything.

Corrected:

- the `convergence` result-field doc — "sheds this paragraph first"
- the deferral block's own rank comment — "the first thing to yield", which
  ranks -1 and 0 had both preceded since before this branch
- the not-reviewed disclosures — "and before nothing else"
- the `CONVERGENCE:` stderr line's rationale — "the first thing the overflow
  ladder sheds"
- `save-artifact.ts`'s allow-list — "the ONE clause the overflow ladder sheds
  first"
- the body-budget suite's own statement of the policy under test, which
  listed two of the four ranks

Left alone, and verified correct: every "sheds first" attached to the
mechanism-health note, which is rank -1 and genuinely first
(`save-artifact.ts`, `save-artifact.test.ts`, the health-note terminal-copy
test), and the `keep`-ordering comment about the tail cut, which is not
about `trim` at all.

Each corrected site keeps its own reasoning — durability, the artifact, the
terminal copy — and states the ordering only as far as that reasoning needs,
rather than restating the whole argument a sixth time. Six copies of one fact
is what let it drift; the argument for the ordering lives at the convergence
block and the others point at it.

The durability rationale gets stronger, not weaker, and the comments now say
so: a body that sheds rank 3 has already shed every other rank, so the
terminal and artifact copies are the only ones left exactly when they fire.
2026-08-22 13:24:45 +00:00
..
src fix(review): stop shedding the convergence observation first (#9715) 2026-08-22 13:24:45 +00:00
.gitignore feat(core): add opt-in built-in web_search backed by the DashScope Responses API (#7215) 2026-07-21 10:59:36 +00:00
index.ts
package.json chore(deps): Clear high-severity CVE baseline and harden the security gate (#9584) 2026-08-21 07:43:32 +00:00
test-setup.ts feat(serve): persist dynamic workspace registrations (#6716) 2026-07-11 16:49:40 +00:00
tsconfig.json refactor: centralize cross-package contracts (#9497) 2026-08-20 06:24:41 +00:00
vitest.config.ts feat(serve): persist prompt terminal ledger for cold-load reconciliation (#9426) 2026-08-20 07:27:49 +00:00