feat(health): lead with one score, and let the reader choose what it counts - #2164
Merged
Conversation
|
🔍 3 things to check
✅ Health of changed files: 5.8 → 6.2 (+0.4) ✅ Health gate: passed 📊 See the full report for this PR |
…counts The page led with Code health and Maintainability side by side, both out of ten and both largely about code shape, so the first screen answered "which number do I steer by?" twice with two different numbers. It carries one figure now. Maintainability moves to the ribbon beside the other cuts of the same scoring, and Open findings leaves it, since the tab row already counts them. A Counts control in the page header answers the question the second figure was there for. Everything is the calibrated score; Code shape only removes the git-derived half — churn, co-change, ownership, prior fixes — which rises as a file is worked on and so reports what a repository has been through rather than what its code is like. On this repo that is 7.1 against 8.5. It is a projection, not a second scoring pass: both halves are already stored per file and a score is clamp(10 - structure - history), so leaving one out is a subtraction. The rows a route holds are live ORM objects, so the projection wraps them rather than assigning to them; writing a projected score onto one would flush it back to the store. A file with no recorded split is reported as unscored rather than counted as a confident ten. The reading reaches every surface that could otherwise contradict the headline: the distribution, the file list and its ranking, the map's colours, the work queue, the findings list, and the drawer that opens from a row. When change history is excluded its findings go with it, so what is listed finally sums to the figure above it. The trend keeps the full score, because snapshots recorded that and inventing a series from mean deductions would disagree with the headline wherever a file sits at the floor; its two colliding figures say so rather than printing the other reading. Two claims are withdrawn under the projection rather than restated: the band word, whose thresholds were fitted against the calibrated score and would call almost any repository healthy here, and the bug-prediction accuracy, which only the calibrated score earns. Every figure now carries an explainer. A number a reader cannot define is a number they cannot act on, and "Performance risk 942" beside "Hotspot health 4.5" reads as two scores when one is a count that only goes up. The ribbon's hints were a native title attribute — invisible, unreachable by keyboard, absent on touch — and are a tooltip now. The chrome stops raising its voice. The band is a dot and a word rather than a filled badge; a description of where a number sits is not news. In the hotspot table the per-row "Hot" tag labelled nothing, every churn bar was red because every row of that table is high-churn by definition, the bus factor wore a tinted pill on ordinary counts, and three link icons per row competed with the row's own click. The page header wraps instead of running off the side of a phone and taking the page's horizontal scroll with it, and its two controls are named dropdowns rather than four choices spelled out in full.
RaghavChamadiya
force-pushed
the
feat/health-lede-single-figure
branch
from
September 8, 2026 16:31
569f19e to
8158836
Compare
swati510
approved these changes
Sep 8, 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.
Based on #2161.
The page led with Code health and Maintainability side by side, both
out of ten and both largely about code shape, so the first screen answered
"which number do I steer by?" twice, with two different numbers. It carries one
figure now. Maintainability moves to the ribbon beside the other cuts of the
same scoring, and Open findings leaves it, since the tab row already counts
them.
One score, and the reader chooses what it counts
A Counts control in the page header answers the question the second figure
was there for.
everythingis the calibrated score;code_shaperemoves thegit-derived half — churn, co-change, ownership, prior fixes — which rises as a
file is worked on and so reports what a repository has been through rather than
what its code is like. On this repo that is 7.1 against 8.5, and hotspot health
4.6 against 7.6.
It is a projection, not a second scoring pass. Both halves are already stored
per file and a score is
clamp(10 - structure - history), so leaving one out isa subtraction. The metric rows a route holds are live ORM objects, so the
projection wraps them rather than assigning to them; writing a projected score
onto one would flush it back to the store. A file with no recorded split is
reported as unscored rather than counted as a confident ten.
The reading reaches every surface that could otherwise contradict the headline:
the distribution, the file list and its ranking, the map's colours, the work
queue, the findings list, and the drawer that opens from a row. When change
history is excluded its findings go with it, so what is listed finally sums to
the figure above it.
The trend keeps the full score. Snapshots recorded that, and deriving a series
from mean deductions would disagree with the headline wherever a file sits at
the score floor; its two colliding figures say so rather than printing the
other reading.
Two claims are withdrawn under the projection rather than restated: the band
word, whose thresholds were fitted against the calibrated score and would call
almost any repository healthy here, and the bug-prediction accuracy, which only
the calibrated score earns.
Explaining the figures
Every figure carries an explainer. A number a reader cannot define is a number
they cannot act on, and "Performance risk 942" beside "Hotspot health 4.5"
reads as two scores when one is a count that only goes up. The stat ribbon's
hints were a native
titleattribute — invisible, unreachable by keyboard andabsent on touch — and are a tooltip now.
Quieter chrome
The band is a dot and a word rather than a filled badge; a description of where
a number sits is not news. In the hotspot table the per-row "Hot" tag labelled
nothing, every churn bar was red because every row of that table is high-churn
by definition, the bus factor wore a tinted pill on ordinary counts, and three
link icons per row competed with the row's own click.
PageShell's actions block wraps instead of refusing to shrink: it sized itselfto its contents and ran off the side of a phone, taking the whole page's
horizontal scroll with it. The two view controls are named dropdowns rather than
four choices spelled out in full.
Verification
packages/ui1,671 passed / 193 files;packages/web84;packages/vscodewebview 45; root
npm run type-checkgreen;ruff checkclean.grammar families and the generated-contract drift, verified unchanged.
files, findings and map routes, and read out of the rendered page in light and
dark; horizontal overflow measured at 390px before and after.