Skip to content

feat(site): serve compliance.json with precomputed parity from GitHub Pages - #46

Merged
grdsdev merged 2 commits into
mainfrom
claude/optimistic-davinci-95f1ed
Jun 26, 2026
Merged

feat(site): serve compliance.json with precomputed parity from GitHub Pages#46
grdsdev merged 2 commits into
mainfrom
claude/optimistic-davinci-95f1ed

Conversation

@grdsdev

@grdsdev grdsdev commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Enriched compliance.json with precomputed parity scores so external tools can query https://supabase.github.io/sdk/compliance.json and get the full picture — raw compliance data plus overall, perArea, perLanguage, and perFeature parity values — without having to recompute anything.
  • Site renders precomputed values instead of recomputing parity at build time; generate-site.ts now reads from the ComplianceFile envelope written by aggregate.ts.
  • Header link to compliance.json added to the site so the URL is discoverable.
  • Consolidated CIaggregate-capabilities.yml deleted; its schedule trigger merged into deploy-pages.yml, which now handles all three cases: push to main, daily cron, and manual dispatch.

New compliance.json shape

{
  "compliance": {
    "javascript": { "auth.sign_in.email": { "status": "implemented" }, "…": "" },
    "…": ""
  },
  "parity": {
    "overall": 0.72,
    "perArea":    { "auth": 0.85, "storage": 0.65 },
    "perLanguage": { "javascript": 0.90, "flutter": 0.70, "…": 0 },
    "perFeature":  { "auth.sign_in.email": 1.0, "auth.mfa.enroll": 0.5, "…": 0 }
  }
}

Changed files

File Change
src/types.ts Added ParityReport (with perFeature) and ComplianceFile as canonical exported types
src/report.ts Computes perFeature in computeParity; imports ParityReport from types and re-exports for compat
src/aggregate.ts Calls computeParity after fetching all SDKs; writes ComplianceFile envelope to compliance.json
src/generate-site.ts Reads ComplianceFile; uses precomputed parity; removes featureParity() helper; adds header link; explicit copy of compliance.json to output dir
.github/workflows/deploy-pages.yml Added schedule and workflow_dispatch triggers; documents that Pages artifact includes compliance.json
.github/workflows/aggregate-capabilities.yml Deleted — consolidated into deploy-pages.yml

Testing

All 125 existing tests pass. TypeScript strict mode reports no errors.

… Pages

Enrich site/compliance.json to include parity scores so external sources
can query them without recomputing, and update the site to render from
those precomputed values rather than computing them at build time.

- Add `ParityReport` (with new `perFeature` field) and `ComplianceFile`
  wrapper type to types.ts as canonical exported types
- report.ts: compute and return `perFeature` (cross-language parity per
  feature ID) alongside the existing overall/perArea/perLanguage values;
  re-export ParityReport from types for backward compat
- aggregate.ts: call computeParity after fetching all compliance data and
  write a ComplianceFile envelope (compliance + parity) to compliance.json
- generate-site.ts: read precomputed parity from the ComplianceFile
  envelope; fall back to computeParity when no file is provided (local
  dev); remove featureParity() helper; add link to compliance.json in the
  site header; explicitly copy compliance.json to the output dir so it is
  always present regardless of the input path
- Both deploy workflows: document that the Pages artifact intentionally
  contains both index.html and compliance.json
@grdsdev
grdsdev requested review from a team as code owners June 25, 2026 18:01

@QuintinWillison QuintinWillison left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm seeing 'capability' and 'feature' seemingly used interchangeably in this change, presumably wider-spread in the codebase. Might it be worth tightening that up, perhaps as a subsequent, discrete PR?

@grdsdev
grdsdev merged commit 0d9106c into main Jun 26, 2026
3 checks passed
@grdsdev
grdsdev deleted the claude/optimistic-davinci-95f1ed branch June 26, 2026 10:15
grdsdev pushed a commit that referenced this pull request Aug 12, 2026
🤖 I have created a release *beep* *boop*
---


## [1.0.0](v1.0.0...v1.0.0)
(2026-08-12)


### ⚠ BREAKING CHANGES

* reconcile capability matrix inconsistencies from skill audit
([#74](#74))

### Features

* add capabilities based on supabase-js public methods
([#19](#19))
([8b07e38](8b07e38))
* add capability-matrix maintenance skill
([#73](#73))
([070e2c9](070e2c9))
* add review-spec and review-spec-compliance skills
([#6](#6))
([b2646c1](b2646c1))
* add SDK implementation status matrix to README and skill
([#4](#4))
([753f06c](753f06c))
* **api-check:** include file path and line number in compliance failure
messages ([#45](#45))
([2f4be47](2f4be47))
* **auth:** add sign-out reason capability
([#47](#47))
([51a3abd](51a3abd))
* canonical SDK capability matrix
([#8](#8))
([215bc3e](215bc3e))
* **capability-matrix:** strict cross-SDK parity score + coverage scope
([#63](#63))
([de1abe1](de1abe1))
* CI check 1 — block PRs adding public API not in capability matrix
([#31](#31))
([293440c](293440c))
* **compliance:** list undeclared features after validation
([#48](#48))
([29f396a](29f396a))
* **compliance:** list undeclared features as notes after validation
([29f396a](29f396a))
* **compliance:** split symbol evidence from symbol coverage
([#75](#75))
([abc8e71](abc8e71))
* initial SDK specs, skills, and install script
([e662b17](e662b17))
* move SDK compliance to per-repo files
([#15](#15))
([4d32675](4d32675))
* **parsers:** add Dart public API parser via package:analyzer
(alternative to [#35](#35))
([#41](#41))
([e3ba07a](e3ba07a))
* **parsers:** add griffe-based Python public API surface parser
([#36](#36))
([c44f836](c44f836))
* **parsers:** replace Swift regex parser with swift-symbolgraph-extract
([#38](#38))
([80529a7](80529a7))
* **realtime:** add multiple postgres_changes filters capability
([#70](#70))
([825ab0c](825ab0c))
* reconcile capability matrix inconsistencies from skill audit
([#74](#74))
([9c53a70](9c53a70))
* rename sdk-parse-ignore to .sdk-parse-ignore
([#37](#37))
([4f4ab61](4f4ab61))
* render symbol names as clickable links in capability matrix
([#14](#14))
([dcaf122](dcaf122))
* show feature description as visible sub-text in capability matrix
([#13](#13))
([3a750ab](3a750ab))
* **site:** serve compliance.json with precomputed parity from GitHub
Pages ([#46](#46))
([0d9106c](0d9106c))
* **storage:** add purge_cache and purge_bucket_cache canonical
capabilities ([#44](#44))
([9a6f864](9a6f864))
* **storage:** add storage.errors.error_codes capability
([#71](#71))
([fabb9a7](fabb9a7))
* **storage:** add the five missing Iceberg catalog capabilities
([#76](#76))
([c3c8f9e](c3c8f9e))


### Bug Fixes

* **aggregate:** point csharp and go SDKs at correct repo slugs
([#62](#62))
([8b7320f](8b7320f))
* **aggregate:** point kotlin SDK at supabase-community/supabase-kt
([#61](#61))
([b1a99e9](b1a99e9))
* **capability-matrix:** correct coverage scope metric description
([#64](#64))
([5daeaf5](5daeaf5))
* **ci:** repair python pipeline and simplify sdk-compliance workflow
([#42](#42))
([2140f44](2140f44))
* **ci:** use nx to run docs:json so workspace deps are built first
([#56](#56))
([9b449bb](9b449bb))
* **dart-extractor:** exclude
[@internal-annotated](https://github.com/internal-annotated) symbols
from the public API surface
([9bd358e](9bd358e))
* **dart-extractor:** exclude [@internal](https://github.com/internal)
symbols from the public API surface
([#54](#54))
([9bd358e](9bd358e))
* remove broken sticky thead, add scroll-margin-top and group-row
borders ([#10](#10))
([68761cd](68761cd))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: supabase-releaser[bot] <223506987+supabase-releaser[bot]@users.noreply.github.com>
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.

3 participants