Draw only /ndd's presentable half of the design cell — drop the separate withheld group - #170
Conversation
The ai:design box keeps rendering `presentable` — the population /ndd serves, which reads zero when a human drains the queue — off `counts.designPresentable`. The rows /ndd withholds are drawn nowhere: /ndd lists them itself at the moment it withholds them, so the panel builds no number and no box out of them. `designSplit` reads the one bucket the page draws. The conservation sweep claims `designPresentable` (a box draws it) and names `designNoQuestion` in the frozen-legacy set: the PRs it counts are claimed as inventory by the ai:design lane cell, so what goes unclaimed is a sub-total of a claimed cell that nothing renders — claiming it while nothing reads it would be the lie the sweep exists to catch. The two-numbers check keeps the arm whose box exists. Refs rainlanguage/issue-pr-cron#240 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…fied unclaimed key The split tests assert the three actor groups are the whole machine, no box is built out of the withheld buckets, and the design box opens onto the presentable rows only. The sweep pair: an orphaned `designPresentable` still screams, a nonzero `designNoQuestion` is silent. The hostile payloads on the withheld rows now assert those rows reach the panel by no path at all. Refs rainlanguage/issue-pr-cron#240 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Four discriminating tests from a mutation pass over the changed lines: a malformed `presentable` degrades to the raw cell instead of a fabricated zero inbox; a breakdown carrying only `presentable` still draws it, since that is now the only bucket the page reads; a count broken low against its annotated rows renders the larger and names the disagreement; the box's rising border follows `designPresentable` and not the raw label series, so a climbing withheld pile never announces a bottleneck under a command with nothing to present. Refs rainlanguage/issue-pr-cron#240 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 2 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Screenshots — read before postingAll rendered with 1. Live data, master: the group nobody asked forLive 2. Live data, this branch: the group is gone, nothing else movesSame live fetch, same moment. The fourth group is gone; the legend and footer move up into the space it held. Everything above it is unchanged — The 3. Fixture: the inbox still draws a real numberBoth live shots read 0, so here is the other half. The live snapshot patched so two of the six rows carry a trusted question (
One thing to read correctly: the red border + ▲ on the design box is the rising flag, and it is honest — the fixture's own patched history climbs 0→2 over its last three samples, so How shots 1 and 2 were built: the real |
|
Reviewed 2041050: pass The group is gone — zero occurrences of its markers on the head blob. The sweep exemption is the call worth checking, and it holds. if (n === 1) return;
if (n === 0 && (!held || legacy)) return;
Exempting rather than flagging is the better of the two options. The inventory behind that number IS claimed — those six PRs sit in Rulings-conformance: checked against the rulings governing this work.
CI: all checks pass. Merging with |



Refs rainlanguage/issue-pr-cron#240
#168 shipped two things under that issue. One was the ruling — the
ai:designbox renderspresentable, the population/nddactually serves. The other was a separate rendered lane group for the rows/nddwithholds, which the issue text invented and nobody asked for. This removes the group. The ruling stays exactly as it is.Stays
ai:designbox renderspresentable— the number that goes to zero when a human drains the queue — with its series drawn fromcounts.designPresentableand its click-through listing the presentable rows.presentablereturns null fromdesignSplitand every consumer below renders exactly the pre-split page. The frozenSTATEStable and the pre-laneslegacy branch keep drawing the raw count.Goes
withhelddescriptor array, thefsm-grid/fsm-laneit built, its lane header and total, and thedesignNoQuestion/designDraft/designFetchErrors/designUnaddressableboxes.designSplitnow reads the one bucket the page draws. The other four buckets were parsed,Math.max'd and returned for a consumer that no longer exists;noQuestionwas also half the validity gate, so a snapshot carrying{presentable: 2}and nothing else fell back to the raw count for no reason.presentablealone is the gate now.designNoQuestionarm of the two-numbers check. It compared a rendered value against the counts key its series was drawn from; that half renders nothing, so the comparison had no subject. ThedesignPresentablearm is untouched. Same for the bucket-count-against-annotated-rows check one level up.With the group gone a
noQuestionrow is invisible on this panel until rainlanguage/issue-pr-cron#242 design-doctor routes it out. That is the accepted state:/nddwithholds those rows and lists them itself, at the moment it withholds them.The sweep's occupancy call:
designNoQuestionbecomes a frozen-legacy keyThe conservation sweep claimed both split series so that a nonzero
noQuestioncould not sweep as inventory rendering nowhere while a box was drawing it. With the group gone nothing draws it, and the claim would be a lie of exactly the kind the sweep exists to catch — so the claim is dropped and the key is named inLEGACY_UNCLAIMED, besidecloseCandidateIssues.Why not let it flag. The inventory is not unrendered: those six PRs live in
lanes["vetter-verdicts"]["ai:design"], a cell exactly one descriptor claims and which the sweep scores at everything it holds. What goes unclaimed is a sub-total of a claimed cell. And the band it would land in says "Snapshot defect — the tool'sstateDescriptorsdo not cover its own occupancy. Fix the tool's emit" — an accusation against a correct emit, with a remedy that is not the fix, firing on every refresh for as long as the queue holds a withheld row. That is the page manufacturing a second kind of work nobody can do, one layer down from the box this issue removed.Nothing else is loosened:
legacysuppresses only the zero-claim case, a double claim on a legacy key still defects (there is a test),designPresentablemust still be claimed by the box that draws it, and every other unclaimed counts key still screams.Screenshots
nix run .#screenshot(pinned chromium), read before posting.nix run .#roh-scanwas NOT run — this is a pure rendering change. Posted in a comment below.Unlike the earlier PRs there is a real before/after on live data:
human-queue.jsontoday carriespresentable: 0, noQuestion: 6.HUMAN ACTION 0withai:design 0— and below them a fourth group,AI:DESIGN — WITHHELD FROM /NDD · not an inbox 6, holding one box:6 / no trusted question raised / DEFECT — NO COMMAND SERVES IT.compare -metric AEover the top 790 rows, through the end of the human group, reports 0 differing pixels — same three groups, sameai:design 0, same human total 0. No defect band, which is thedesignNoQuestion: 6exemption doing its job on real data. The legend and footer move up into the space.presentable: 2, noQuestion: 4, plus two history lines so the series matches). Theai:designbox reads 2 with a rising border, the human total reads 2, the withheld 4 draw nothing, and no defect band. The inbox still draws; only the invented group left.QA
site/pipeline.htmlunder the new tests (FAILED | 258 passed | 4 failed, the four being exactly these):pipeline FSM: the design box is the /ndd inbox — presentable, never the raw label total— now asserts the three actor groups are the whole machine, no box exists for any withheld bucket, and the design box opens onto no withheld row. On base: 4 groups.pipeline FSM: the drawn split key must be claimed; the withheld half's key is ratified unclaimed— an orphaneddesignPresentablestill screams; a nonzerodesignNoQuestiondoes not. On base: it does.pipeline FSM: the frozen-legacy counts keys never defect; any other unclaimed counts key does— the canonical exception fixture now carriesdesignNoQuestion: 6, so the ratified set is pinned in one place. On base: defect band.pipeline FSM: a breakdown carrying only presentable still renders the inbox— the withheld vocabulary is/ndd's, and a snapshot that stops carrying it must not cost the human inbox its number. On base: falls back to the raw 6.site/pipeline.html, full suite run, reverted). Three survived the first round and are why three of the new tests exist:presentablenull gate → survived → killed bya malformed presentable falls back to the raw cell, never a fabricated zero inbox(a number-shaped string must not coerce into a real-looking 0 inbox over six labelled PRs).shown: Math.max(stated, listed.length)→stated→ survived → killed bya presentable count broken low cannot hide the rows annotated into it.designPresentable→p.hist→ survived → killed bythe design box's trend is drawn from designPresentable, not the raw label series(a climbing withheld pile must not put a bottleneck border on a queue no command serves; the presentable half climbing must).noQuestionhalf of the gate → killed by the only-presentable test above.designPresentableclaim; droppingdesignNoQuestionfrom the legacy set (3 tests); dropping thebucket === "presentable"filter (2 tests, one of them the hostile-input one).withheld buckets beyond noQuestion render only while they hold anything(existed only to pin the group).split counts keys without a breakdown behind them sweep as unclaimed occupancywas rewritten rather than deleted — its claim aboutdesignNoQuestionis now the opposite, and its claim aboutdesignPresentablestill holds. Thepresentable rows list under the design boxand hostile-input tests lost their withheld-box arms and kept the rest; the hostile test now asserts the withheld payloads reach the panel by no path at all, which is a stronger statement than the inertness it used to check on them.262 passed | 0 failed.nix develop -c pre-commit run --all-files: all hooks pass.designSplittrimmed to the one bucket with a consumer, no dead field computed; (c) the two-numbers check keeps the arm whose box exists and drops the one whose box does not, same for the bucket-vs-rows check; (d) the sweep's occupancy fordesignNoQuestiondecided deliberately and stated above, not left inconsistent and not weakened elsewhere; (e) thepresentablebox, the fallback and the hostile-payload coverage all kept, group-only tests removed.Refsbecause the issue lives in another repo and cannot be auto-closed from here — and it is already closed by Render the design lane as /ndd's inbox plus a defect bucket, not one raw label total #168 besides; this corrects that PR's overreach./ndd./nddpresentspresentableand reports its own withholding; so the panel draws the first and not the second. Rendering claims are read off actual screenshots, not assumed.