feat(reports): leftover-map singular values on grouping comparison graphic (v2.78.0) - #861
Conversation
…aphic (v2.78.0) Caption persisted leftover-map singular values σ_k on the grouping comparison leftover-map graphic from already-named leftover-map axes (ADR 0321). Share and singular value omit independently. Rank-0 unused axes still name σ 0.00. Do not invent σ from leftover-map axis share. Synthetic fixtures only.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks 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 |
|
Stacked on #860 @ |
| return tf(LEFTOVER_MAP_COMPARE_PLOT_AXIS_SINGULAR_SHARE, { | ||
| axis: axisIndex, | ||
| value: singular, | ||
| share: percent, | ||
| }); |
There was a problem hiding this comment.
🟡 Second-axis singular value is clipped
When axis 2 has a singular value, leftoverMapPlotAxisText expands its fixed-position label beyond the 480-pixel SVG. The value is visibly clipped.
Prompt for agents
The comparison variant now renders a substantially longer axis label, but axis 2 remains positioned at layout.originX + 8 with the default start anchor in frontend/src/components/LeftoverMapPlot.tsx. In the fixed 480px SVG, the English singular-value label already extends beyond the right boundary; translations can be longer. Adjust the axis-label rendering so the full singular value and optional share remain visible for both axes and all supported locales. Consider separate visible SVG text and accessible naming, wrapping, repositioning, or a compact visual format, while preserving the ADR 0321 accessible-name contract and the independent omission behavior.
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
Current-head verification (2026-09-19): this finding is still valid on exact 59ae392c4729c78d31e290902ed290f1dd88b083. LeftoverMapPlot still renders axis 1 at x={layout.width - 8} with textAnchor="end", while axis 2 remains at x={layout.originX + 8} with the default start anchor; the layout width is still fixed at 480. Because comparison-axis copy now intentionally includes independently persisted σ and optional share, the axis-2 visible string can expand beyond the viewport (for the current fixture, σ=0.86 and share=18%), and CJK / translated text expansion has no bounding acceptance yet.
Keep this thread open. The causal RED should be rendered/browser evidence that the visible axis label remains inside the SVG viewport across ordinary and dense/responsive states plus locale/text-expansion cases. The repair must preserve the full accessible σ/share semantics and independent omission behavior; reverting persisted σ, deriving one statistic from the other, or merely loosening App assertions would not resolve this finding.
There was a problem hiding this comment.
Current-owner refresh (2026-09-21): exact #861 is now 9f3923c1d66ee56460e2660a3fbc6bfeacc3c2bd. The semantic App mismatch has its own executable RED at this head, but that does not resolve this layout finding. Separate local Storybook inspection preserved in #1041 predecessor 15c14e53... shows the dense plot tick labels still collide at desktop and 390×844, with the fixed 480px SVG requiring horizontal scroll on mobile. That evidence is rendered/local rather than authenticated #861 acceptance, so this BUG thread remains open. The causal layout repair still needs current-owner browser/bounding-box RED across responsive and text-expansion states, preserving the full σ+share accessible name and independent omission semantics.
|
Scheduled review-feedback autofix for this PR head.
|
Adopt exact reconstructed #860 as the current tree while preserving historical #861 as first parent. Retain the v2.78 singular-value product delta as executable RED: comparison axes must name persisted finite non-negative σ values with distinct comparison copy, preserve σ=0, omit invalid σ independently of share, and never infer σ from axis share. Exact #860 is the second parent. No force update or destructive rebase.
Adopt exact reconstructed #861 as the current tree while preserving historical #862 as first parent. Retain the v2.79 report-axis singular-value delta as executable RED: report badges must expose persisted finite non-negative σ independently of axis share, preserve σ=0, and never borrow comparison-graphic copy or infer σ from share. Exact #861 is the second parent. No force update or destructive rebase.
Ordinary non-force ancestry adoption. Preserve #861 singular-value contract delta while inheriting the repaired comparison-distance assertions.
Preserve exact persisted sigma and share copy, right-bound both SVG axis captions, and retain desktop and mobile Storybook evidence. Signed-off-by: Seongho Bae <me@seonghobae.me>
Adopt the parent coordinate-tick identity fix without dropping the current comparison singular-value and responsive evidence changes. Signed-off-by: Seongho Bae <seonghobae@users.noreply.github.com>
Keep the v2.79 report-axis singular-value delta while inheriting the repaired comparison-axis sigma/share, responsive layout, and coordinate-tick identity contracts from #861. Signed-off-by: Seongho Bae <seonghobae@users.noreply.github.com>
* docs(gaps): refresh exact-head product evidence Record protected-main authority, live aggregate inventory, the active Customer Master cycle repair, and remaining acceptance boundaries. Commit-Message-Assisted-by: Claude (via Claude Code) Signed-off-by: Seongho Bae <me@seonghobae.me> * docs(gaps): bind Customer Master evidence to current head Record the current implementation SHA and the desktop/mobile Storybook audit while leaving authenticated PostgreSQL acceptance unresolved. Commit-Message-Assisted-by: Claude (via Claude Code) Signed-off-by: Seongho Bae <me@seonghobae.me> * docs(gaps): refresh current repair ownership evidence * docs(gaps): refresh ready-state evidence * docs(gaps): retract stale Ready evidence * docs(gaps): refresh exact-head queue evidence * docs(gaps): record authenticated scope repair evidence * docs(gaps): refresh protected loop evidence * docs(gaps): track replay repair head * docs(gaps): correct replay exact head * chore(docs): stage exact-head gap baseline refresh * docs(gaps): refresh live exact-head authority * chore(docs): refresh live gap overlay * chore(docs): remove purpose-complete refresh workflow * chore: stage bounded gap baseline refresh * fix: make bounded gap refresh workflow parseable * docs(gaps): refresh terminal Strix security evidence * chore: stage current gap baseline refresh * docs(gaps): record fresh security repair lanes * chore: stage final current gap baseline refresh * docs(gaps): refresh current security evidence * ci(docs): stage bounded baseline refresh * docs(gaps): refresh live exact-head overlay * chore(gaps): stage current authority overlay * chore(gaps): apply current authority overlay * docs(gaps): refresh customer-master exact-head authority * chore(gaps): stage 10:14 exact-head overlay * chore(gaps): run 10:14 exact-head overlay * docs(gaps): refresh exact-head customer-master evidence * chore(docs): stage bounded gap baseline refresh * docs(gaps): refresh exact-head security evidence * chore(docs): stage bounded gap baseline refresh * docs(gaps): refresh exact-head product evidence * chore(docs): stage live-authority baseline refresh * fix(docs): repair bounded live baseline workflow * docs(gaps): refresh live product authority * chore(gaps): stage bounded authority refresh * chore(gaps): remove failed bounded refresh helper * chore(docs): stage bounded baseline refresh * docs(gaps): converge release owner authority * docs(gaps): refresh current product authority * chore(docs): stage bounded gap baseline refresh * fix(docs): repair bounded gap baseline refresh runner * fix(docs): keep refresh payload inside workflow block * docs(gaps): refresh current Customer Master evidence * chore(docs): stage 20:05 gap baseline refresh * chore(docs): remove queued baseline helper * chore(docs): refresh 20:27 live gap baseline * docs(gaps): refresh 20:27 live authority * docs(gaps): make current baseline projection explicit * docs(gaps): refresh exact-head acceptance evidence * docs(gaps): record review-sidecar prerequisite RED * docs(gaps): record prerequisite exact-head GREEN * docs(gaps): refresh current gate evidence * docs(gaps): record exact-head security green * docs(gaps): refresh live review execution evidence * docs(gaps): record exact-head full-diff review evidence * docs(gaps): refresh central prerequisite evidence * docs(gaps): record exact-head review prerequisite approval * docs(gaps): correct current required-gate inventory * docs(gaps): record terminal review runtime evidence * docs(gaps): record current-main ADR occupancy reconstruction * docs(gaps): refresh central review gate settlement * docs(gaps): record canonical CodeQL dispatch progress * docs(gaps): record reconstructed comparison post repair * docs(gaps): record criterion coordinate stack convergence * docs(gaps): record current leftover-map stack convergence * docs(gaps): record non-force leftover-map convergence * docs(gaps): record comparison-axis repair and stack convergence * docs(gaps): record graphic badge repair and descendant convergence * docs(product): refresh live gap authority after owner and stack repairs * docs(product): refresh owner ADR authority after review repair * docs(gaps): record owner-boundary descendant convergence * docs(gaps): include bounded-operator descendant convergence * docs(gaps): record PostgreSQL timeout compatibility repair * docs(gaps): record exact-head PostgreSQL validation admission * docs(gaps): keep PostgreSQL validation admission current * docs(gaps): record report-axis missingness repair and current stack * docs(gaps): record live report-axis RED and descendant convergence * docs(gaps): repair live leftover-map ancestry authority * docs(gaps): refresh exact-head validation evidence * docs(gaps): refresh leftover-map convergence and repair RCA * docs(gaps): record comparison tick i18n RED * docs(gaps): refresh measurement descendant authority * docs(gaps): record fail-closed dependency review and queue differential * docs(gaps): record CodeQL owner repairs and parser finding * docs(gaps): admit exact-head validation for CodeQL repairs * docs(gaps): record post-body CodeQL repair and convergence * docs(gaps): record attributed script-tag parser repair * docs(gaps): record unresolved embedded-image parser gap * docs(gaps): refresh parser and leftover-map evidence * docs(gaps): refresh current product and validation authority * docs(gaps): record backend embedded-image parser repair * docs(gaps): advance embedded-image repair authority * docs(gaps): record current #1115 provenance repair * docs(gap): align owner-boundary lifecycle and stack heads * docs(gap): record hosted leftover-map and warning owner evidence * docs(gaps): record #983 hosted coverage evidence * docs(gaps): record repaired tick foundation and converged stack * docs(gaps): record comparison tick repair and convergence * docs(gaps): refresh live report-stack authority * docs(gaps): record repaired tick-share stack * docs(gaps): record terminal CodeQL verdict failure * docs(gaps): record current #983 coverage evidence * docs(gaps): record hosted parser RED and repair * docs(gaps): record scanner edge coverage convergence * docs(gaps): record ontology extension coverage ancestry * docs(gaps): correct report-axis exact head * docs(gaps): record image-ingestion security green * docs(gaps): record catalog coverage convergence * docs(gaps): converge report stack and current receipts * docs(gaps): record current-head cancellation class * docs(gaps): record comparison post accessibility evidence * docs(gaps): record current CodeQL producer state * docs(gaps): record #873 test coverage and descendant convergence * docs(gaps): refresh #873 exact queue evidence * docs(gaps): refresh #1115 CodeQL producer progress * docs(gaps): track Customer Master eight-locale review draft * docs(gaps): follow translation draft test repair * docs(gaps): admit translation candidate validation * docs(gaps): record Customer Master seed ownership repair * docs(gaps): scope Customer Master seed ownership lifecycle * docs(gaps): record translation ownership search-path repair * docs(gaps): track ledger search-path integrity repair * docs(gaps): track seed ownership replay concurrency * docs(gaps): refresh canonical scheduler authority * docs(gaps): record concurrent Customer Master seed replay repair * docs(gaps): refresh canonical GitHub owner authority * docs(gaps): track reviewed translation replay preservation * docs(gaps): refresh canonical owner head * docs(gaps): record completed-seed retirement lifecycle * docs(gaps): record non-destructive ownership upgrade * docs(gaps): track versioned ownership constraint repair * docs(gaps): follow canonical CodeQL owner movement * docs(gaps): classify terminal CodeQL owner findings * docs(gaps): refresh canonical queue owner * docs(gaps): classify executed image CodeQL producer * docs(gaps): settle current-head frontend evidence and queue authority * docs(gaps): record hosted TLS contract RED and repair * docs(gaps): record current-parent leftover-pair a11y repair * docs(gaps): record current leftover-pair interaction evidence * docs: track dense mobile leftover-pair repair * docs(gaps): archive prior overlay and refresh live authority * docs(gaps): record hosted Storybook and release inventory gaps * docs(gaps): record registry README owner-boundary convergence * docs(gaps): record OIDC smoke dependency repair * docs(gaps): refresh OIDC smoke operator contract evidence * docs(gaps): serialize OIDC smoke before registry README * docs(gaps): compact current owner chain after OIDC stack convergence * docs(gaps): record #974 exact-head GREEN tests * docs(gaps): record #974 security GREEN * docs(gaps): record hosted leftover selector RED * docs(gaps): separate OIDC smoke from browser auth acceptance * docs(gaps): record ROPC topology removal owner * docs(gaps): record #977 selector repair admission * docs(gaps): correct live translation owner heads * docs(a11y): align leftover-pair ADR with visible labels * docs(gaps): record code-current leftover accessibility ADR * docs(gaps): record executable ROPC security RED * docs(gaps): require PKCE S256 in public-client auth gap * docs(gaps): track queued OIDC causal repair * docs(gaps): make ROPC actor migration precede client shutdown * docs(gaps): record partial OIDC machine-actor migration * docs(gaps): converge README onto auth migration * docs(gaps): refresh auth stack exact-head evidence * docs(gaps): record OIDC ADR convergence * docs(gaps): record shared JWKS verifier repair * docs(gaps): record deterministic machine identity repair * docs(gaps): record terminal translation validation reds * docs: record completed #977 selector repair * docs: record terminal #974 CodeQL settlement RED * docs(gaps): record report-axis contract repair and convergence * docs(gaps): correct exact Customer Master authority * docs(gaps): record duplicate-kid auth hardening * docs(gaps): record current auth verifier evidence * docs(gaps): record RFC 7518 JWKS key floor * docs(gaps): record canonical JWK Base64urlUInt repair * docs(gaps): refresh RSA exponent auth evidence * docs(gaps): record minimal JWK integer hardening * docs(gaps): refresh live auth and delivery authority * docs(gaps): record local PU-scope authorization repair * docs(gaps): add mixed-scope fail-closed repair * docs(gaps): record RSA exponent bound and auth heads * docs(gaps): record odd-modulus auth boundary * docs(gaps): record RFC 7517 key-operations repair * docs(gaps): record null-valued JWK metadata repair * docs(gaps): record canonical Base64url pad-bit repair * docs(gaps): record comparison tick root repair and converged stack * docs(gaps): record #861 App acceptance root and telemetry owner * docs(gaps): record #861 axis-label clipping acceptance * docs(gaps): record report contract RCA and current owner head * docs(gaps): record public-only JWKS boundary * docs(gaps): record JWK x5c consistency repair * docs(gaps): record full x5c chain validation * docs(gaps): record x5c key-usage repair and descendant convergence * docs(gaps): record JWK certificate thumbprint invariant * docs(gaps): attach thumbprint exact-head receipts * docs(gaps): record realm-owned service subject boundary * docs(gaps): record disjoint machine and user principals * docs(gaps): record service-client boundary repair * docs(gaps): record usable machine-auth prerequisite * docs(gaps): refresh auth audiences and report receipt * docs(gaps): record x5u verifier boundary and auth heads * docs(gaps): record implicit-flow auth boundary * docs(gaps): record exact OIDC redirect boundary * docs(gaps): record executable seed auth RED * docs(gaps): refresh auth repair runner authority * docs(gaps): remove stale auth repair lane authority * docs(gaps): record seed auth repair and remaining ROPC * docs(gaps): record backend ROPC executable RED * docs(gaps): record exact report-stack failures * docs(gaps): record auth helper endpoint repair * docs(gaps): record PyJWT floor and auth convergence * docs(gaps): add PyJWT advisory traceability authority * docs(gaps): refresh Voice runtime authority Record the live PR and issue inventory, keep exact-head workflow states non-accepting, and mark Voice-of-X runtime acceptance unverified. Signed-off-by: Seongho Bae <me@seonghobae.me> * docs(gaps): keep baseline head claim immutable Label the observed PR head as the parent of this update so a new commit cannot make its own evidence statement stale. Signed-off-by: Seongho Bae <me@seonghobae.me> * docs(gap): record exact report RED and Voice authority repair * fix(a11y): align leftover pair accessible names * fix(ui): wrap leftover evidence on narrow screens * docs(gaps): refresh exact-head ecosystem authority Signed-off-by: Seongho Bae <me@seonghobae.me> * docs(gaps): converge report stack after merged intermediate * docs(gaps): correct current OIDC smoke authority * test(ui): align leftover pair accessible names * docs(gaps): track auth helper repair and convergence * docs(gaps): refresh auth helper boundary * docs(gaps): record remote OAuth TLS repair * docs(gaps): repair acceptance wording and catalog auth owner * codex: refresh exact-head gap evidence (#1041) * docs(gaps): keep #1041 authority self-reference safe * docs(gaps): record comparison axis repair candidate Separate current local rendering and regression evidence from protected delivery, authenticated acceptance, and the remaining stacked-parent gate. Signed-off-by: Seongho Bae <me@seonghobae.me> * docs(gaps): record coordinate tick repair Record the exact #860 candidate, local verification, queued hosted checks, stack ordering, and remaining authenticated acceptance boundary. Signed-off-by: Seongho Bae <seonghobae@users.noreply.github.com> * docs(gaps): refresh auth exact-head evidence * docs(gaps): refresh exact-head authority Signed-off-by: Seongho Bae <me@seonghobae.me> * docs(gaps): adopt source-repaired report and auth heads * fix(reports): omit unavailable leftover distance Signed-off-by: Seongho Bae <me@seonghobae.me> * test(reports): reject non-finite residual accessibility evidence * fix(reports): omit non-finite residual from accessible evidence * test(a11y): reject duplicate leftover evidence announcements * fix(a11y): announce leftover evidence once * test(a11y): preserve leftover action guidance while deduplicating evidence * fix(a11y): deduplicate leftover evidence without dropping guidance * test(a11y): cover all leftover action evidence branches * test(a11y): type leftover evidence branch cases explicitly --------- Signed-off-by: Seongho Bae <me@seonghobae.me> Signed-off-by: Seongho Bae <seonghobae@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Current exact authority — 2026-09-21
13b838a3ea4d23b3d358d2f0adecec9c21cb0a8f69bdb2fc7613aeffd972cf2a114da1a9347fe50521ee0adcf82a14917d9cc609553f6021ffeac8c0Product delta
Comparison graphic axes expose persisted
leftover_singular_valueindependently of persisted axis share. Finite persistedσ=0remains visible; missing/non-finite/negative σ omits only σ. No value is inferred from share, rank, geometry, distance, or another psychometric value.Source repair now present
The earlier exact App σ+share RED and the visible axis-caption clipping finding have source repairs on this ancestry. Commit
d572f651...replaces the inherited share-only App expectations with exact persisted σ+share copy, right-bounds both SVG axis captions, and retains desktop/mobile Storybook screenshot evidence. Current convergence69bdb2fc...also adopts #860's numeric coordinate-tick identity repair so equal formatted labels do not collapse distinct persisted coordinates or React keys.This is source-repaired, not accepted. Exact-head Tests
35536928685is still queued and no current protected/browser/security receipt has completed successfully. The unresolved clipping review thread therefore remains open until current-head rendered/bounding acceptance and hosted checks are GREEN; predecessor receipts do not transfer.All active report descendants through current #876 are descendants of this exact head (
merge-base=69bdb2fc...,behind_by=0). Do not duplicate the repaired App expectations downstream, loosen accessible-name assertions, or roll back persisted σ semantics. No force push, destructive rebase, self-approval, gate weakening, blind rerun, merge, or release is claimed.