Conversation
The Researcher could attach a "> Pagination:" marker to a section on the strength of how a different list on the page pages, inventing a "load more" control that was nowhere in the section it mapped. The Planner grounds scenarios on capabilities the research confirms, so it proposed a test to load more rows into a plan holding one test, and the Tester spent the run hunting a button that does not exist. The rule already opened on "a list that continues beyond what is shown", but only as a premise. Give it a form the model can act on: omit the line when the items already shown are the whole collection. Trade-off: a list whose first page happens to hold everything today loses its marker, so a paging control that appears once the data grows goes unreported until a later run sees more items. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
DenysKuchma
approved these changes
Sep 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Researcher could attach a
> Pagination:marker to a section on the strength of how a different list on the page pages, inventing a control that was nowhere in the section it mapped.Observed on a Testomat.io plan detail overlay. The research handed Planner:
There is no such control on that page, and none of the 13 elements the section actually mapped is one. Planner grounds scenarios on capabilities the research confirms (
capabilityGroundingRule,src/ai/rules.ts:187) and had no item count to contradict the claim, so it proposed "Load additional test entries in the current plan and verify that more test rows are appended" — against a plan holding one test.Tester then burned the run asking four times for a button that does not exist, and finished by asserting the pagination bar of the list behind the overlay. Pilot caught it and failed the test, correctly — but the scenario should never have existed.
Fix
One line in
rules/researcher/pagination.md:The rule already opened on "a list that continues beyond what is shown", but only as a premise. This gives it a form the model can act on. It reads on item volume rather than on controls, so both strategies and Data sections are unaffected — in the same research, the
## Data: Plans Listmarker pointing at.pagination-centeredwas real and still stands.Knock-on benefit:
detectPaginationskips any section already carrying a pagination blockquote (src/ai/researcher/pagination.ts:18), so fewer invented claims means the deterministic DOM probe runs on those sections instead of being suppressed.Trade-off
A list whose first page happens to hold everything today loses its marker, so a paging control that only appears once the data grows goes unreported until a later run sees more items.
Testing
bun test tests/unit— 1415 passbun test tests/integration/researcher.test.ts tests/integration/researcher-sections.test.ts tests/integration/planner.test.ts— 46 passbun run format,bun run lint— clean🤖 Generated with Claude Code