Repository navigation
feat(paging): the #294 ruling's suggestions — above_cliff=, next_tier=, at= stamp, and the end-to-end walk arm - #5
Merged
Conversation
…next_tier=, the at= index stamp, and the end-to-end walk arm The maintainer ruling (redhat-et issue redhat-et#294, comment 5868657455) blessed the design as-is and offered five optional suggestions. Two we already satisfied (#4 per-page trim disclosure — truncvocabcheck arm (H)'s within-page <bodies> rule-5 sweep; #3's canonical tie-break — radixSortByScoreDescId is the same (score desc, id asc) key the bundle selects with). Three land here: - above_cliff= (suggestion 1): the head-tier candidate count next to total=, so an agent decides from page 1 whether the below-cliff remainder is worth fetching. cliffRank is 1-based, so above_cliff = cliffRank-1 — the same boundary tier= uses, one definition. Also on the degrade page. - next_tier= (suggestion 2): the tier the CONTINUATION page will carry, beside next= — a consumer skips the below-cliff remainder deliberately, not by accident. Fixed literals; always present. - at= (suggestion 3): the git index stamp on every page (the same gitstamp::stampAt the un-paged bundle anchors with), so a stale continuation is detectable — the consumer compares at= across pages instead of silently mixing two rankings. Empty (non-git / multi-root) => honestly absent. - (G3) the end-to-end walk (suggestion 5): concatenating every page equals the full ranked candidate list — the pages' own shown= arithmetic tiles the candidate set (pseudo-symbols like <file-scope> are served but emit no row, so named rows <= shown), the (file, line, name) TRIPLE tiles the named-def rows in rank order (same-name definitions are distinct candidates even in one file — the packtask.h:1690 lesson, learned twice this arm), the tier sequence is head* then below-cliff* (one boundary, unmoved mid-walk), and the un-paged bundle's served rows are a PREFIX of the walk. Walked on src/: 5 pages, 946 rows tiling 947 candidates, head -> below-cliff x4. Arms extended in the same commits as the behavior: (H) asserts above_cliff= (< total) and at= on every paged root; (G2) asserts next_tier= is one of the two values and present beside next=. Verified: 11/11 gates ALL PASS (truncvocabcheck+H, listingpagingcheck+G2+G3, mcpverbscheck, fixedbufsweep, budgetpolicycheck, packtaskcheck, mcpmanifestcheck, selfcheckcheck, forwidencheck, forbudgetmonotoncheck); the page is byte-deterministic and xmllint-clean; the MCP twins carry the same document (above_cliff= live).
usehoplite Bot
added a commit
that referenced
this pull request
Oct 3, 2026
…next_tier=, the at= index stamp, and the end-to-end walk arm (#5) The maintainer ruling (redhat-et issue redhat-et#294, comment 5868657455) blessed the design as-is and offered five optional suggestions. Two we already satisfied (#4 per-page trim disclosure — truncvocabcheck arm (H)'s within-page <bodies> rule-5 sweep; #3's canonical tie-break — radixSortByScoreDescId is the same (score desc, id asc) key the bundle selects with). Three land here: - above_cliff= (suggestion 1): the head-tier candidate count next to total=, so an agent decides from page 1 whether the below-cliff remainder is worth fetching. cliffRank is 1-based, so above_cliff = cliffRank-1 — the same boundary tier= uses, one definition. Also on the degrade page. - next_tier= (suggestion 2): the tier the CONTINUATION page will carry, beside next= — a consumer skips the below-cliff remainder deliberately, not by accident. Fixed literals; always present. - at= (suggestion 3): the git index stamp on every page (the same gitstamp::stampAt the un-paged bundle anchors with), so a stale continuation is detectable — the consumer compares at= across pages instead of silently mixing two rankings. Empty (non-git / multi-root) => honestly absent. - (G3) the end-to-end walk (suggestion 5): concatenating every page equals the full ranked candidate list — the pages' own shown= arithmetic tiles the candidate set (pseudo-symbols like <file-scope> are served but emit no row, so named rows <= shown), the (file, line, name) TRIPLE tiles the named-def rows in rank order (same-name definitions are distinct candidates even in one file — the packtask.h:1690 lesson, learned twice this arm), the tier sequence is head* then below-cliff* (one boundary, unmoved mid-walk), and the un-paged bundle's served rows are a PREFIX of the walk. Walked on src/: 5 pages, 946 rows tiling 947 candidates, head -> below-cliff x4. Arms extended in the same commits as the behavior: (H) asserts above_cliff= (< total) and at= on every paged root; (G2) asserts next_tier= is one of the two values and present beside next=. Verified: 11/11 gates ALL PASS (truncvocabcheck+H, listingpagingcheck+G2+G3, mcpverbscheck, fixedbufsweep, budgetpolicycheck, packtaskcheck, mcpmanifestcheck, selfcheckcheck, forwidencheck, forbudgetmonotoncheck); the page is byte-deterministic and xmllint-clean; the MCP twins carry the same document (above_cliff= live). Co-authored-by: usehoplite[bot] <288093033+usehoplite[bot]@users.noreply.github.com>
usehoplite Bot
pushed a commit
that referenced
this pull request
Oct 7, 2026
#4 --grep code+string, #5 cross_kind=, #6 C body-less enum specifier span, redhat-et#7 run_first=. CHANGELOG: union at the [Unreleased] anchor. kParserVer/mirror kept at main's 132 for now (lane 130; the train fixup renumbers to 133 above every lane value). dictv (COMMANDS.md, showcase capture), help_all pin and test/qschemetrip.hash left at main's value as placeholders, re-derived once from the merged binary in the train fixup. qschemetripcheck RE-PIN LOG keeps both entries. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
usehoplite Bot
added a commit
that referenced
this pull request
Oct 7, 2026
…next_tier=, the at= index stamp, and the end-to-end walk arm (#5) The maintainer ruling (redhat-et issue redhat-et#294, comment 5868657455) blessed the design as-is and offered five optional suggestions. Two we already satisfied (#4 per-page trim disclosure — truncvocabcheck arm (H)'s within-page <bodies> rule-5 sweep; #3's canonical tie-break — radixSortByScoreDescId is the same (score desc, id asc) key the bundle selects with). Three land here: - above_cliff= (suggestion 1): the head-tier candidate count next to total=, so an agent decides from page 1 whether the below-cliff remainder is worth fetching. cliffRank is 1-based, so above_cliff = cliffRank-1 — the same boundary tier= uses, one definition. Also on the degrade page. - next_tier= (suggestion 2): the tier the CONTINUATION page will carry, beside next= — a consumer skips the below-cliff remainder deliberately, not by accident. Fixed literals; always present. - at= (suggestion 3): the git index stamp on every page (the same gitstamp::stampAt the un-paged bundle anchors with), so a stale continuation is detectable — the consumer compares at= across pages instead of silently mixing two rankings. Empty (non-git / multi-root) => honestly absent. - (G3) the end-to-end walk (suggestion 5): concatenating every page equals the full ranked candidate list — the pages' own shown= arithmetic tiles the candidate set (pseudo-symbols like <file-scope> are served but emit no row, so named rows <= shown), the (file, line, name) TRIPLE tiles the named-def rows in rank order (same-name definitions are distinct candidates even in one file — the packtask.h:1690 lesson, learned twice this arm), the tier sequence is head* then below-cliff* (one boundary, unmoved mid-walk), and the un-paged bundle's served rows are a PREFIX of the walk. Walked on src/: 5 pages, 946 rows tiling 947 candidates, head -> below-cliff x4. Arms extended in the same commits as the behavior: (H) asserts above_cliff= (< total) and at= on every paged root; (G2) asserts next_tier= is one of the two values and present beside next=. Verified: 11/11 gates ALL PASS (truncvocabcheck+H, listingpagingcheck+G2+G3, mcpverbscheck, fixedbufsweep, budgetpolicycheck, packtaskcheck, mcpmanifestcheck, selfcheckcheck, forwidencheck, forbudgetmonotoncheck); the page is byte-deterministic and xmllint-clean; the MCP twins carry the same document (above_cliff= live). Co-authored-by: usehoplite[bot] <288093033+usehoplite[bot]@users.noreply.github.com>
joyful-ii-V-I
pushed a commit
that referenced
this pull request
Oct 21, 2026
…rget; rule-4 gate twins - kForRunawayGuardBytes = 30,000 B by the frozen rule: max(4 x 7,500, 2 x the largest complete default payload on the round-2 --for argv (12,519 B)); zero hits on the round-4 and capsweep argv (max 13,005 B). - The default answer narrows <lego>/<compose> to the rows at its target cut (sigsRowsAtTarget), so the rows kept past the target do not turn a served lego section into a stub (the section invariant). - An exhausted soft target's hops marker clears the hop-only readings (via=, owner qword), so the owner plan adds nothing there (ownerhopcheck B2). - MCP from_trace names its budget_tokens on the root and reads it as a soft target, like the CLI twin; the compact from-trace reading says "soft". - Rule-4 replacements (no gate erosion; each replaced arm green on head and red on base where it asserts the new behaviour, twins green on both): estchargecheck, ceilingverdictcheck (FORGE kept), formaxtokenscheck (E), w3fixbudgetcheck, forsigspancheck (T), tracecheck (T3), mcpforparitycheck (5), fordisclosurecheck, bundleidcheck, droppedpositivecheck #6, jsonparitycheck R1, forrootlegendcheck arm2, forbudgetmonotoncheck #1/#5, legendcoveragecheck (E), ownerhopcheck (R). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
joyful-ii-V-I
pushed a commit
that referenced
this pull request
Oct 21, 2026
… forbodyslotcheck, forrankordercheck (rule 4) - forbudgetmonotoncheck #5: the frozen-share sig comparison reads the fold-off twin of the default (the soft target carries no fold, so no C3 pair). - forbodyslotcheck: every slot arm reads the fold-off answer; new (FX): with the fold on, the slot's <bodies> is the fold-off answer's byte for byte and the owner is never repeated in the fold. - forrankordercheck (3): the 4% growth band reads the answer before its fold additions (the element, its clause, the hop-calls next= clause, the C3 pair) — the FOLD C precedent; (9) reads the signatures-only re-call off the fold-off twin; new (9f): the fold answer carries the same call as sigs_next=. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
joyful-ii-V-I
pushed a commit
that referenced
this pull request
Oct 21, 2026
M1 (review rv-hrr, CI run on 051101f): (a) serialize.h headRoundRobinOrder: read mayOpen(0) once above the loop; the ENSURES no longer calls a functor (contracts have no side effects). (b) forbudgetmonotoncheck #1/#5: rule-4 twins under RIPWIRE_NO_HEAD_RR=1, plus #1h/#5h: with the reorder on, the explicit ceiling serves exactly the default's rows as a set (softbudget.py set_prefix). (c) receiverevidencecheck hopnotproven: the hop-candidate r= premise reads the RIPWIRE_NO_HEAD_RR=1 twin (hops walk score order), stated under rule 4. (d) mcpverbscheck: accept <sigs[ >] (the tag may carry files_first=). (e) fixedbufsweep: nb row 7 -> 8 and pin 363/248/248 -> 364/249/249 for the files_first= site (35 B worst case, one size_t). (f) one isDocRow lambda per dialect feeds both the head round-robin's mayOpen and reorderDocsAfterCode: the 2 new Lang::Markdown compares are gone (langidentitycheck 348 -> 346, ceiling unchanged). (g) enumtablecheck stale kDocTierTags: a filter.h comment "types/*.d.ts" opened a block comment for the scanner and hid the exempted table; reworded, the exemption matches again. M2: filter.h declarationTwinFileMultipliers counts a file as implementation evidence only when its path tier is 1.0, its basename is not a row manifest, and it is not a declaration-test suffix (.test-d.ts etc., TS row data). forheadrrcheck H6t/H6p/H6q red on 051101f, green here. CHANGELOG: S1-S3 wording and final numbers (19 gained, 3.96 -> 8.00). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pt-act
pushed a commit
that referenced
this pull request
Oct 27, 2026
…der, honest (18) Review findings addressed (changes-max, rev-496ad92798c0, all 8): - editcheck.h (#2, correctness): the tower reached --edit-check's group model — lowestNode was filled from members.front(), which no longer arrives id-ascending. Traced every consumer (editpreview, mcpverbs, verbs_quality — all want THE FOCUS, verbs_quality binds it as `focus`), so the field becomes focusNode and editCheckRoundTripSpelling compares CONTAINMENT, not first elements: order-independent by construction. Proved with a mixed-kind two-contract red-control: pre-fix binary degrades the refusal to @file:LINE seeds, post-fix offers canonical ids that all paste back accepted; - model.h (#6): three enumerator-keyed static_asserts pin ordinal AND weight of Method/Section/FuncType together — a reordered SymKind without the matching table permutation is now a build error (house pattern, cf. serialize.h's Unknown==12); - lspcheck arm (18) (redhat-et#8): the def-front clause grepped '"line":9' inside a 260-byte window that a regressed Var-first order also satisfied — replaced by file-anchored offset comparison like its ws/symbol sibling. Red-control on the base binary's real regressed bytes: old clause PASS (the flaw), new clause FAIL; - graph.h (#3): the local under the rewritten contract is `towerFront`, not `lowest`; - .ripwire_quality_acks (#1): runLsp complexity/verbosity rows now name the actual growth (the answer-struct destructure + notice branch), the concat-shape argument stays only where it belongs; - graphlegend.h, lsp.h comment split, verbs_report.h (#4/#5/redhat-et#7): the remaining distant voices of the tower — the CLI --owners twin now matches its MCP sibling. Gates: 18/18 targeted file-sweep ALL PASS in the leap-build container (lspcheck editcheck family x5 decltodef incl. compile-driver compact/ legend budget x2 docanchor owners mcp x3 connect affected attribmultidef); determinism x2; map byte-IDENTICAL vs the b59b082 base binary; xmllint clean; editpreviewcheck green on the parallel host sweep. Co-Authored-By: Claude <noreply@anthropic.com> Authored by @mpapis with AI assistance (DeepSeek V4.1 Flash / Qwen 3.8 Flash) under his supervision.
pt-act
pushed a commit
that referenced
this pull request
Oct 27, 2026
…ched to its guards Review findings addressed (changes-max, rev-aae42d3f5c3f, all 6): - graph.h (#2): the --connect tie-break prose still asserted "candidates ascend by id" after C2 — corrected to what the scan does: a strictly better join wins, ties keep the FIRST candidate met, and the arrival order is the tower front for the name/file tier (id-ascending only on the canonical-id/Scope::name tiers); - model.h (#3): the table comment over-claimed — three keyed asserts anchor Method/Section/FuncType ordinals+weights, but a swap of two UNANCHORED enumerators (Var/Interface) would trip none; the claim now says exactly that, guards unchanged; - lspcheck arm (18) (#5): the hover-front clause was an unanchored membership grep over the whole hover — it now asserts the method block offset EQUALS the first def-block offset. Red-control on the base binary's real Var-first bytes: OLD clause PASS (the flaw), NEW FAIL (method=235 vs first=74); green on the current build (74=74); - lspcheck arm (18b) (#6): both 340-byte windows replaced by first-row containment (needle offset >= first row start and < second row start). Honest qualifier recorded: base CANNOT regress this clause (created_at's two defs tie on kind, so id order == tower order there) — the control is base's real Location rows transposed byte-for-byte: OLD window PASS, NEW first-row FAIL; - decltodefcheck (#4): framing paragraph "lowest-id projection" -> "tower-front projection", lockstep with graphlegend.h; - .ripwire_quality_acks (#1): the runLsp complexity/verbosity rows now name their own growth (the defs>1 branch), the concat-shape argument stays on the duplication rows it belongs to. Deliberately NOT fixed this round (parked for the next review to judge): test/mcphandlecheck.sh prose still says "lowest-id pick" on fetch_body's name path — a gate outside this branch's touched set. Gates: one container build (BUILD_EXIT=0); BOTH the fixer's and the loop-owner's independent sweeps agree — lspcheck, decltodefcheck (incl. the compile-driver arm), compactlegendcheck, connectcheck, connectcorecheck (with its ASan/UBSan arm), editcheckcheck: ALL PASS; determinism x2; map byte-IDENTICAL vs the b59b082 base snapshot; xmllint clean. Co-Authored-By: Claude <noreply@anthropic.com> Authored by @mpapis with AI assistance (DeepSeek V4.1 Flash / Qwen 3.8 Flash) under his supervision.
pt-act
pushed a commit
that referenced
this pull request
Oct 27, 2026
…premise-pinned arms Review findings addressed (changes-max, rev-bedff612f3c0, all 7): - verbs_report.h (#2, warning): the EMITTED --owners legend still taught "the FIRST of them (lowest node id)" while both sibling copies of the sentence had been fixed around it — now the tower front (kind, leading language, lowest id), ownerscheck's pinned needles re-pinned lockstep; - graph.h (#1): declToDefFollowThrough's comment claimed its ascending sort is a caller contract — applyNameTower re-orders the tier two lines later at the only call site; the comment now says what is true: the sort makes the widening's own output deterministic BEFORE the tower orders the tier (the sort itself untouched); - decltodefcheck (#4): E3 framing + echoed E3d title moved to the tower-front language, finishing the file's stale-pick-rule walk; - lspcheck arms (#5, #6): the (19) single-def control now pins its own premise (the hovered answer must exist before asserting the sentence's absence — it PASSed on an absent answer before); the (20) parity arm states the kLspHoverUseCap=8 premise against the capped hover tier. Red-controls: OLD (19) control PASSes the base binary's null-answer bytes, NEW FAILs them; #6's grown-copy hover is named by premise, not misdiagnosed as parity failure; - mcphandlecheck (redhat-et#7): wording-only per loop-owner decision (the campaign's C3 scope names the MCP descriptions lane) — comments and arm-title strings, zero assertion changes; - compactlegendcheck (#3): the safe-delete row's measured 828 -> 830 attributed to e5d39f7's +2 B clause (9 B -> 11 B tower-front match), pin 840 unchanged — the table's own re-pin-in-the-commit-that-adds- bytes rule. Gates: one container build (BUILD_EXIT=0); owner sweep — lspcheck, ownerscheck, decltodefcheck, compactlegendcheck (rc=0, ALL PASS on the stable file), mcphandlecheck, mcpverbscheck, mcpmanifestcheck ALL PASS; determinism x2; map byte-IDENTICAL vs the b59b082 base snapshot; xmllint clean. One earlier compactlegendcheck FAIL was proven transient: a released continuation edited the script mid-run (bash reads scripts incrementally) — reproduced rc=0 in-container afterwards. Co-Authored-By: Claude <noreply@anthropic.com> Authored by @mpapis with AI assistance (DeepSeek V4.1 Flash / Qwen 3.8 Flash) under his supervision.
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.
What
The maintainer ruling on upstream issue redhat-et#294 (comment) blessed the candidate-page design as-is ("exactly the order this project wants") and offered five optional suggestions. Two we already satisfied; three land here plus the end-to-end arm:
above_cliff=Nbesidetotal=— the head-tier candidate count, so an agent decides from page 1 whether the below-cliff remainder is worth fetching (the boundarytier=already uses:cliffRank − 1). Also on the degrade page.next_tier=besidenext=— the tier the continuation page will carry (head/below-cliff), so a consumer skips the below-cliff remainder deliberately rather than by accident.at=on every page — the samegitstamp::stampAtindex stamp the un-paged bundle anchors with; a stale continuation is detectable (compareat=across pages) instead of silently mixing two rankings. Honestly absent on non-git/multi-root.shown=arithmetic tiles the set, the(file, line, name)triple tiles the named-def rows in rank order, the tier sequence ishead*thenbelow-cliff*, and the un-paged bundle's rows are a prefix of the walk.Already satisfied (recorded in the commit): #4 per-page trim disclosure (arm (H)'s within-page rule-5 sweep) and #3's canonical tie-break (
radixSortByScoreDescId— the same(score desc, id asc)key the bundle selects with).Verification
truncvocabcheck(H extended withabove_cliff=/at=asserts),listingpagingcheck(G2 extended withnext_tier=; the new G3 walk: 5 pages onsrc/, 946 rows tiling 947 candidates,head → below-cliff ×4, bundle prefix),mcpverbscheck,fixedbufsweep,budgetpolicycheck,packtaskcheck,mcpmanifestcheck,selfcheckcheck,forwidencheck,forbudgetmonotoncheck.xmllint --nooutclean; the MCP twins carry the identical document (above_cliff="39"live onforandexplore).<file-scope>) are counted as served but emit no row, soshown=-sum is the tiling contract; and candidate identity is the(file, line, name)triple — same-name definitions are distinct candidates even in one file (DYNMAP_DEFINE_RANK_32sits at two lines ofdynamic_map.hpp), the packtask.h:1690 lesson learned twice while writing this arm.Scope notes
forbudgetmonotoncheckgreen) — the ruling's regression floor held.main/0.6.5) follows from a fresh branch off this work with the complete surface: PRs feat(paging): the budgeted-bundle candidate page (for / pack-task) + explore limit parity — PoC for issue #294 #3 + feat(paging twins): MCP for/explore serve the candidate page under budget+window; the page grows next= #4 + this adoption.