fix(legend): compact --zoom, --tree, churn-decay and map rows carried twelve attributes with no definition - #189
Conversation
… files=, children=, prov= and nine more with no definition 6ea3c0f closed the map header and the PageRank roots, and its agent listed four instances it did not fix. Each was RUN here on 3c89ac0: carried under --legend=compact, defined by the full legend, silent in the compact one. CONFIRMED, by running: --tree files= on the root (full legend: "files= is the indexed corpus") --zoom symbols= isolated= top_modules= levels_shown= on the root; children= on a <module> AT the levels_shown= cut (test/chafix at --zoom-levels=1) churn-decay <recent of=> with <rc age_d= w=>, single-root rank_by=churn-decay --communities drill= isolated= on the root. NOT FIXED, see below FOUND BY SWEEPING those answers: lpin= and overloads= on <s>, prov= on <c>. The always-on `<!-- ripwire v1` legend defines them absent at their default, and compact strips it. test/declinefix and test/lpinfix, (D10)'s own corpora, carry them. NOT THIS DEFECT: --communities' modules=/bridges=/isolated_*=/symbols=, which its full legend never defines either. THE FIX, src/compactlegend.h only. --tree's files= and --zoom's four root counts ride every answer of their root, so they read in that root's purpose line, beside the files_unlisted= and levels= it already named. Five present-only terms: children= (onTag module), <recent> (onTag recent, because of= on the map root is --around's seed), and lpin=, overloads=, prov= (row-level: one meaning tool-wide, one XML writer). GATE, test/compactlegendcheck.sh (no new file): (D13)..(D16) 6 behavioural rows, 12 specs: --tree, --zoom, --zoom --zoom-levels=1 over test/chafix, --rank-by=churn-decay, and the declinefix and lpinfix maps. RED on 3c89ac0, 12 FAIL lines, for example: FAIL (D13) --zoom (its root's counts): symbols="14" is carried but the compact legend never defines it FAIL (D14) --zoom --zoom-levels=1 over test/chafix (modules AT the depth cut): children="2" is carried but ... FAIL (D15) --rank-by=churn-decay (the <recent> file rows): of="6" is carried but the compact legend never defines it FAIL (D16) the map over test/declinefix (merged overloads, split edges): prov="split" is carried but ... (D17) the mirror over --around (its <r of=>), --rank-by=churn, a one-level --zoom, the plain map and --communities (isolated=/symbols= on its own root), each lack asserted first. Green on both binaries by construction. With a reading spliced into four real compact legends its check fired on all four, and on none unspliced. (S) gains population 4, read from source: every unprefixed row field of serialize.h's always-on legend marked absent-if-N or absent=, whose term must read the payload. RED on 3c89ac0: lpin=, overloads=, prov= FAILed. On the fix, deleting the prov row, making overloads head-only, or making lpin header-only each went red on exactly that name. compactlegendcheck with this gate: 87 PASS, 15 FAIL on 3c89ac0; 94 PASS (86 before, all still green), 0 FAIL, 1 INFO on the fix. BYTES, compact prose. No ceiling or pin moved: (L) ten-verb loop 4,089 -> 4,089 B (pin 4,100) (U) --zoom 324 -> 394 --zoom=3 324 -> 394 --tree 219 -> 238 (pin 400); every other (U) probe unchanged Differential over the (U) universe, same fixture and git dates: 93 of 96 compact answers byte-identical; the three that moved keep byte-identical payloads. Unpinned, over the nominal 400: churn-decay map 376 -> 496, declinefix map 446 -> 632, lpinfix map 391 -> 559, chafix --zoom --zoom-levels=1 285 -> 423. NOT FIXED, stopped on bytes: --communities' drill= and isolated=: 385 B of compact prose. The shortest honest pair, "drill= takes an id=; isolated= edgeless symbols", costs 49 B (434 B); even "drill=/isolated=: id= verb/edgeless" costs 37 B (422 B). Over (U)'s 400. --community=0's modules= and partition= (the sibling drill verb, same defect): 371 B + 43..57 B = 414..428 B. QUALITY: --quality-delta against HEAD exits 0, gating=0, with two minor short-horizon-churn findings on kCompactCompletenessTerms and kCompactLegendSpecs (both touched by #185 earlier today). Gates: compactlegendcheck legendcoveragecheck graphlegendbudgetcheck legendcostcheck estchargecheck communitydrillcheck communitylabelcheck zoomcheck treecheck churndecaycheck printffmtparitycheck xmlwellformed, gates=12 pass=12 skip=0 fail=0 tree_writes=0. limits_build --check and gatecount_build --check exit 0. Two compact map runs over the repo are byte-identical and pass xmllint. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 4 included reviews per hour; 1 remains after this review. 📝 SummarySummary by CodeRabbit
WalkthroughThe compact legend now describes additional tree, zoom, churn-decay, and map-row fields. The validation script adds runtime and source-driven checks for compact definitions, presence-only readings, and payload-reading terms. ChangesCompact legend contract
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~15 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The compact legend and its coverage updates are ready to merge. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai review |
|
|
@coderabbitai review |
|
|
@coderabbitai review |
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
Follows #185.
--legend=compactstrips the legend prose and rebuilds definitions fromkCompactCompletenessTerms. Twelve more attributes got nothing back, so compact answers printed them with no definition. Each was confirmed on main by running it:files=--treerootfiles_unlisted=symbols=,isolated=,top_modules=,levels_shown=--zoomrootlevels=children=<module>at the depth cut (--zoom-levels)<module><recent of=>,<rc age_d= w=><recent>, becauseof=on the map root is--around's seedlpin=,overloads=,prov=Gate
test/compactlegendcheck.shgains three kinds of arm:FAIL (D13) --zoom (its root's counts): symbols="14" is carried but the compact legend never defines it.serialize.h's always-on legend marks as absent by default. On main it is red onlpin=,overloads=andprov=. Under each of three mutations it goes red on exactly the mutated name.Result: main has 87 PASS / 15 FAIL, this branch has 94 PASS / 0 FAIL, and all 86 existing rows stay green.
Bytes
--zoomgoes from 324 to 394 B and--treefrom 219 to 238 B, both under 400.Still undefined under compact
These need a decision about the byte pins, so they are not in this PR:
--communities'drill=/isolated=: its compact prose is already 385 B. The shortest honest pair makes it 434 B, and even a cryptic one makes it 422 B.--community=0'smodules=/partition=: 371 B would become 414–428 B.unresolved=and--impact's counts, as noted on fix(legend): compact answers carried declined_calls=, unproven_defs= and four more with no definition #185.Verification
gates=12 pass=12 skip=0 fail=0.limits_build --checkandgatecount_build --checkboth return 0.--quality-deltareports gating=0.🤖 Generated with Claude Code