template scores: page/documentation-design A (90.0), rubric 1
f2cbe59
template scores: page/dashboard-portfolio B (83.0), rubric 1
90c1f93
template scores: page/ai-chat-landing A (97.0), rubric 1
39632ef
template scores: page/ai-chat C (73.0), rubric 1
f435e7d
template scores: page/classic-gallery B (77.0), rubric 1
0ac087e
template scores: page/dashboard A (95.0), rubric 1
f4017e0
template scores: page/kanban-board B (78.0), rubric 1
8d59fcd
template scores: page/table A (98.0), rubric 1
959b75f
template scores: page/shell-top-nav A (90.0), rubric 1
02214ed
scores: RichTextEditor D (62.3), rubric 1.4
2cef56a
vibe-test: scores 2026-08-17
4a7cb54
scores: Blockquote C (79.7), rubric 1.4
ed9b553
scores: Banner C (82.6), rubric 1.4
7abc33a
vibe-test: scores 2026-08-16
319099c
Ledger: repair Banner's blocks shape, which reds build-sandbox
The row recorded blocks as a bare array. LedgerEntry declares
{count, open}, so the sandbox snapshot emitted a literal tsc rejects
(TS2739, missing count and open) and build-sandbox fails on every open
pull request until this is corrected.
Same content, no score change: count 3, the same three BLOCK entries.
This is the third instance of a wiki row shape breaking the repo build
after the regression key and the evidence array, so the guard needs
extending to blocks rather than another manual repair.
843dbc0
scores: Banner C (73.0), rubric 1.4
0ef4007
scores: Avatar C (78.4), rubric 1.4
6ebc4f6
Release Process: codemods are for published packages; lab breaks freely
0d0c1ba
vibe-test: scores 2026-08-15
7133e37
scores: AvatarGroup D (66.2), rubric 1.4
100ff36
scores: SideNav C (79.1), rubric 1.2
fbfa8a9
vibe-test: scores 2026-08-14
9f58bca
scores: Avatar C (70.8), rubric 1.4
dc68f76
scores: Avatar C (70.8), rubric 1.4
cb71c14
scores: AspectRatio C (83.9), rubric 1.4
28ae64a
vibe-test: scores 2026-08-13
4687205
scores: AspectRatio C (80.6), rubric 1.4
c261bea
Ledger: Indicator re-adjudicated under rubric v1.4
No score change (87.1/B, zero BLOCKs) and nothing re-measured. Two
bookkeeping corrections:
- The note asked the rubric owner to fix the six-places changeset
problem. It is fixed -- v1.4 scopes migration rules to released
surface and drops P11 to FIX in modes N/O. Note now points there.
- The tabIndex finding drops FIX -> NIT under v1.4's reachability rule.
Nobody passes it, the type rejects the literal, no doc suggests it.
Checked the other ten audited rows for findings v1.4 would scope out.
None -- ListInput's three BLOCKs are invalid ARIA, an undocumented theme
target and missing i18n, all reachable by a user.
209f5a4
Rubric v1.4: two scoping rules — does this defect have a victim?
Added after the Indicator audit produced two findings that graded
correctly against the rule text and should never have been recorded.
Both failures were mine to catch and I did not; the TL did.
1. MIGRATION RULES BIND RELEASED SURFACE ONLY.
Q11, T33, P11, X20 and I7 all demand a [breaking] changeset and a
codemod. Every one exists to protect installed consumers, and not one
said so. Indicator merged 2026-08-11; core@0.3.0 shipped 2026-08-05 with
no ./Indicator subpath, so the whole layer was unreleased for its first
week in main -- and P11 was cited against it for omitting props from a
type no consumer could install. Both the auditor and I cited the rule
accurately and neither asked whether the export had ever shipped.
The rules now require establishing that first, with the command.
P11 also drops to FIX in modes N/O. Its subject is a CHANGESET, which is
consumed and deleted at release, so a BLOCK derived from one evaporates
on its own with nobody fixing anything and the next audit sees an
unexplained jump. That belongs on the PR, where it can be acted on before
merge -- which is what L14 already does, and is the model.
2. A FINDING NEEDS A REACHABLE VICTIM.
"Score the failure, not its likelihood" is right and stays. It is about
USERS in rare states. It does not license grading a defect nothing can
reach. A defect needing code the type rejects, that no call site contains
and no doc suggests, is a NIT at most.
The worked example is tabIndex on an indicator: axe really does report
aria-hidden-focus, measured 0 -> 1 violation, which reads like a solid
finding -- but nobody passes it, the type rejects the literal, and no doc
mentions it. Recorded as a FIX, it produced a PR carrying a new internal
module to strip a prop nobody sets. Corollary added: a finding closable
by a type change should say so, instead of leaving the fix shape to
whoever picks it up.
Minor, not patch: both narrow when a BLOCK may be recorded, so §2, §3,
§8 and §9 scores taken under <=1.3 are not comparable where a migration
rule was cited. Weights, floors and ceilings unchanged.
0666f61
Bug Bash: the P3 severity row was missing its rubric-equivalent cell
a779070