Skip to content

feat(capability-matrix): strict cross-SDK parity score + coverage scope#63

Merged
grdsdev merged 9 commits into
mainfrom
claude/parity-score-compute-publish-9c1f01
Jul 15, 2026
Merged

feat(capability-matrix): strict cross-SDK parity score + coverage scope#63
grdsdev merged 9 commits into
mainfrom
claude/parity-score-compute-publish-9c1f01

Conversation

@grdsdev

@grdsdev grdsdev commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

Implements SDK-995 — compute and publish the first cross-SDK feature parity score.

  • Replaces the old fuzzy average "parity" with the ticket's strict formula: a feature only counts toward overall if it's exactly implemented in every core SDK (javascript, flutter, python, swift). partially_implemented no longer earns credit toward this metric.
  • C#, Go, and Kotlin are community-maintained/in active development — excluded from the strict parity math, but still shown in the matrix table and keep their own perLanguage completion score (informational, unchanged).
  • Adds a new counter-metric, coverage scope: % of "done" (implemented/partial) cells in core SDKs that have a registered symbols list, i.e. how much of what's marked complete has real code evidence attached.
  • Drops the unused per-feature parity column from the site table (perFeature field removed entirely).
  • No new infra — ships on the existing hourly aggregate-capabilities.yml + deploy-pages.yml pipeline, so it goes live on supabase.github.io/sdk automatically.

Design spec: docs/superpowers/specs/2026-07-15-first-parity-score-design.md (local, gitignored — not in this diff).

Verified locally

Built the site against live compliance data fetched from all 6 available SDK repos (Kotlin has no sdk-compliance.yaml yet):

  • Overall parity: 58% (125/215 features implemented across all 4 core SDKs)
  • Coverage scope: 32%
  • Confirmed no leftover .th-parity/.parity-cell in rendered HTML, both new/existing badges render correctly.

Test plan

  • npm test — 182/182 passing
  • npm run typecheck — clean
  • npm run build-site against real fetched compliance data, manually reviewed in browser
  • grep -rn "perFeature" — zero remaining references

grdsdev added 5 commits July 15, 2026 11:09
…tyReport

- Add CORE_LANGUAGES constant and CoreLanguage type for the subset of language SDKs used in parity computation
- Replace perFeature field in ParityReport with coverageScope: number
- Expected: report.ts and generate-site.ts will fail typecheck until fixed in tasks 2 and 3
Task 1 removed perFeature from ParityReport per plan; Task 2's implementer
re-added it (in both types.ts and report.ts) to make the whole-project
typecheck pass early, which was never a Task 2 requirement — generate-site.ts
still references parity.perFeature until Task 3 removes that column. Revert
to the plan's exact shape; the remaining generate-site.ts typecheck failure
is expected until Task 3.
… scope badge

- Remove perFeature parity column from feature table
- Add Coverage scope badge to header
- Remove dead .th-parity and .parity-cell CSS rules
- Reduce table colspan from LANGUAGES.length + 2 to LANGUAGES.length + 1
…anguage type

Bare .parity-high/mid/low rules were unreachable after the per-feature
column was removed — only the higher-specificity .sdk-score.* and
.area-card-score.* combinators are ever matched. CoreLanguage was exported
but never consumed anywhere.
@grdsdev
grdsdev requested a review from a team as a code owner July 15, 2026 14:49
Comment thread scripts/capability-matrix/src/report.ts Outdated
grdsdev added 4 commits July 15, 2026 13:25
… site

Adds a hover tooltip on each badge plus a short note under them, so
"58%"/"32%" don't read as mysterious numbers — states plainly that both
are computed only across the 4 core SDKs and what counts as a pass.
…-visible

Replace the hover-only badge tooltips with metric cards that show the
description text directly under each value — no longer hidden behind a
hover. Header restructured: title row on top, metrics row below it,
then the SDK score cards.
partially_implemented was being treated as "done" for coverage scope
via the shared isDone() helper (same as perLanguage's legacy semantics),
but a partial implementation isn't really done — per review feedback on
#63, a symbol-linked partial claim shouldn't score the same as a
symbol-linked full one. perLanguage keeps its existing isDone-based
behavior unchanged; only coverageScope now requires status ===
"implemented".
…mented

Drops isDone() entirely — every metric (overall, perLanguage, coverageScope)
now requires the exact "implemented" status. Per discussion on #63,
partial credit conflated "claims something is done" with "actually done",
which no longer applies anywhere in this pipeline.
@grdsdev
grdsdev merged commit de1abe1 into main Jul 15, 2026
3 checks passed
@grdsdev
grdsdev deleted the claude/parity-score-compute-publish-9c1f01 branch July 15, 2026 16:46
grdsdev added a commit that referenced this pull request Jul 16, 2026
The "Coverage scope" card said features "marked implemented/partial"
but the underlying computeParity() logic only counts strictly
`implemented` status, per the strict cross-SDK parity change in #63.
Reword the text to match the actual logic instead of the logic.

Also fix missing leading "%" to match the other metric card's style.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants