Skip to content

Commit b4984e0

Browse files
committed
docs(release): record skia local baseline
1 parent 54042f6 commit b4984e0

7 files changed

Lines changed: 80 additions & 26 deletions
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Skia Local Baseline Evidence
2+
3+
Date: 2026-05-06
4+
Commit: `54042f6`
5+
Build surface: local repository checks only
6+
7+
This artifact records the local Skia renderer baseline required before native Skia QA. It is suitable only for `partial` Skia matrix evidence. It does not prove native Skia installation, native renderer parity, native text/gradient/clipping behavior, or native release-build performance.
8+
9+
## Commands
10+
11+
```sh
12+
npm run skia:typecheck
13+
npm run skia:parity
14+
npm run boundaries:check
15+
npm run pack:check
16+
```
17+
18+
## Results
19+
20+
- `npm run skia:typecheck`: passed. TypeScript checked `packages/skia-renderer/tsconfig.json` and `packages/skia-renderer/tsconfig.test.json`.
21+
- `npm run skia:parity`: passed. Vitest reported 8 test files and 29 tests passing for the Skia primitive tests plus LineChart, BarChart, PieChart, ProgressChart, ContributionGraph, CombinedChart, and CandlestickChart renderer-contract tests.
22+
- `npm run boundaries:check`: passed. The verifier reported the core package is renderer agnostic, free runtime packages do not import Pro or Skia runtime code, Skia remains an injected optional peer, and the Pro preview package has no activation code or runtime dependencies.
23+
- `npm run pack:check`: passed. The package dry-run verifier checked 6 packages.
24+
25+
## Scope
26+
27+
Covered by this local baseline:
28+
29+
- Skia preview package type surface
30+
- injected primitive adapter contract
31+
- local renderer-contract parity for free chart families
32+
- local renderer-contract parity for Pro-preview combined and candlestick surfaces
33+
- package boundary and optional peer dependency checks
34+
- package pack dry-run
35+
36+
Not covered by this local baseline:
37+
38+
- iOS or Android install of `@shopify/react-native-skia`
39+
- native release-build rendering with Skia primitives
40+
- native text, gradient, clipping, tooltip, legend, or selection visual parity
41+
- native SVG-vs-Skia performance comparison
42+
- physical-device or simulator/emulator screenshot review

docs/release/evidence/skia-renderer-evidence.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,13 @@
7474
"debug-layout surfaces"
7575
],
7676
"missingEvidence": [
77-
"native Skia install verification",
78-
"native renderer parity coverage",
79-
"native Skia benchmark comparison"
77+
"ios-skia-native-install is partial; evidence is required before this matrix can be complete.",
78+
"android-skia-native-install is partial; evidence is required before this matrix can be complete.",
79+
"ios-skia-free-chart-parity is partial; evidence is required before this matrix can be complete.",
80+
"android-skia-free-chart-parity is partial; evidence is required before this matrix can be complete.",
81+
"ios-skia-pro-preview-parity is partial; evidence is required before this matrix can be complete.",
82+
"android-skia-pro-preview-parity is partial; evidence is required before this matrix can be complete.",
83+
"ios-skia-performance-comparison is pending; evidence is required before this matrix can be complete.",
84+
"android-skia-performance-comparison is pending; evidence is required before this matrix can be complete."
8085
]
8186
}

docs/release/evidence/skia-renderer-matrix.json

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"schemaVersion": 1,
3-
"status": "pending",
3+
"status": "partial",
44
"lastUpdated": "2026-05-06",
55
"source": "docs/release/skia-renderer-qa.md",
66
"platforms": [
@@ -42,43 +42,49 @@
4242
"id": "ios-skia-native-install",
4343
"platform": "ios",
4444
"scenarioId": "native-install",
45-
"status": "pending",
46-
"evidence": []
45+
"status": "partial",
46+
"evidence": ["docs/release/artifacts/skia-local-baseline-2026-05-06.md"],
47+
"notes": "Local package-boundary and pack dry-run evidence only; native iOS Skia install verification still required."
4748
},
4849
{
4950
"id": "android-skia-native-install",
5051
"platform": "android",
5152
"scenarioId": "native-install",
52-
"status": "pending",
53-
"evidence": []
53+
"status": "partial",
54+
"evidence": ["docs/release/artifacts/skia-local-baseline-2026-05-06.md"],
55+
"notes": "Local package-boundary and pack dry-run evidence only; native Android Skia install verification still required."
5456
},
5557
{
5658
"id": "ios-skia-free-chart-parity",
5759
"platform": "ios",
5860
"scenarioId": "free-chart-parity",
59-
"status": "pending",
60-
"evidence": []
61+
"status": "partial",
62+
"evidence": ["docs/release/artifacts/skia-local-baseline-2026-05-06.md"],
63+
"notes": "Local renderer-contract parity only; native iOS screenshot/interaction parity still required."
6164
},
6265
{
6366
"id": "android-skia-free-chart-parity",
6467
"platform": "android",
6568
"scenarioId": "free-chart-parity",
66-
"status": "pending",
67-
"evidence": []
69+
"status": "partial",
70+
"evidence": ["docs/release/artifacts/skia-local-baseline-2026-05-06.md"],
71+
"notes": "Local renderer-contract parity only; native Android screenshot/interaction parity still required."
6872
},
6973
{
7074
"id": "ios-skia-pro-preview-parity",
7175
"platform": "ios",
7276
"scenarioId": "pro-preview-parity",
73-
"status": "pending",
74-
"evidence": []
77+
"status": "partial",
78+
"evidence": ["docs/release/artifacts/skia-local-baseline-2026-05-06.md"],
79+
"notes": "Local Pro-preview renderer-contract parity only; native iOS screenshot/interaction parity still required."
7580
},
7681
{
7782
"id": "android-skia-pro-preview-parity",
7883
"platform": "android",
7984
"scenarioId": "pro-preview-parity",
80-
"status": "pending",
81-
"evidence": []
85+
"status": "partial",
86+
"evidence": ["docs/release/artifacts/skia-local-baseline-2026-05-06.md"],
87+
"notes": "Local Pro-preview renderer-contract parity only; native Android screenshot/interaction parity still required."
8288
},
8389
{
8490
"id": "ios-skia-performance-comparison",

docs/release/native-qa-checklists.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Generated from native and Skia evidence matrices last updated 2026-05-06. Regene
1111
| Runtime QA | 16 | 0 | 16 | 0 | 0 | 0 | 0 |
1212
| Accessibility QA | 16 | 0 | 0 | 16 | 0 | 0 | 0 |
1313
| Native Performance | 18 | 0 | 18 | 0 | 0 | 0 | 0 |
14-
| Skia Renderer | 8 | 0 | 0 | 8 | 0 | 0 | 0 |
14+
| Skia Renderer | 8 | 0 | 6 | 2 | 0 | 0 | 0 |
1515

1616
## Runtime QA
1717

@@ -191,12 +191,12 @@ Source: [docs/release/skia-renderer-qa.md](skia-renderer-qa.md) and [docs/releas
191191

192192
| Row | Target | Build Surface | Required Evidence | Status | Evidence |
193193
| --- | --- | --- | --- | --- | --- |
194-
| `ios-skia-native-install` | iOS / Native Skia install verification | Release build on device or accepted simulator with optional Skia renderer installed | Install optional Skia renderer dependencies, run native release build, and verify the SVG default path still works without static Skia imports. | pending | None |
195-
| `android-skia-native-install` | Android / Native Skia install verification | Release APK on device or accepted emulator with optional Skia renderer installed | Install optional Skia renderer dependencies, run native release build, and verify the SVG default path still works without static Skia imports. | pending | None |
196-
| `ios-skia-free-chart-parity` | iOS / Free chart renderer parity | Release build on device or accepted simulator with optional Skia renderer installed | Line, Area, Bar, StackedBar, Pie, Donut, Progress, and Contribution surfaces render with injected Skia primitives without missing text, gradients, clipping, tooltips, or legends. | pending | None |
197-
| `android-skia-free-chart-parity` | Android / Free chart renderer parity | Release APK on device or accepted emulator with optional Skia renderer installed | Line, Area, Bar, StackedBar, Pie, Donut, Progress, and Contribution surfaces render with injected Skia primitives without missing text, gradients, clipping, tooltips, or legends. | pending | None |
198-
| `ios-skia-pro-preview-parity` | iOS / Pro preview renderer parity | Release build on device or accepted simulator with optional Skia renderer installed | Combined, Candlestick, range selector, sticky axis, crosshair, tooltip, and debug-layout preview surfaces render correctly with injected Skia primitives. | pending | None |
199-
| `android-skia-pro-preview-parity` | Android / Pro preview renderer parity | Release APK on device or accepted emulator with optional Skia renderer installed | Combined, Candlestick, range selector, sticky axis, crosshair, tooltip, and debug-layout preview surfaces render correctly with injected Skia primitives. | pending | None |
194+
| `ios-skia-native-install` | iOS / Native Skia install verification | Release build on device or accepted simulator with optional Skia renderer installed | Install optional Skia renderer dependencies, run native release build, and verify the SVG default path still works without static Skia imports. | partial | `docs/release/artifacts/skia-local-baseline-2026-05-06.md` |
195+
| `android-skia-native-install` | Android / Native Skia install verification | Release APK on device or accepted emulator with optional Skia renderer installed | Install optional Skia renderer dependencies, run native release build, and verify the SVG default path still works without static Skia imports. | partial | `docs/release/artifacts/skia-local-baseline-2026-05-06.md` |
196+
| `ios-skia-free-chart-parity` | iOS / Free chart renderer parity | Release build on device or accepted simulator with optional Skia renderer installed | Line, Area, Bar, StackedBar, Pie, Donut, Progress, and Contribution surfaces render with injected Skia primitives without missing text, gradients, clipping, tooltips, or legends. | partial | `docs/release/artifacts/skia-local-baseline-2026-05-06.md` |
197+
| `android-skia-free-chart-parity` | Android / Free chart renderer parity | Release APK on device or accepted emulator with optional Skia renderer installed | Line, Area, Bar, StackedBar, Pie, Donut, Progress, and Contribution surfaces render with injected Skia primitives without missing text, gradients, clipping, tooltips, or legends. | partial | `docs/release/artifacts/skia-local-baseline-2026-05-06.md` |
198+
| `ios-skia-pro-preview-parity` | iOS / Pro preview renderer parity | Release build on device or accepted simulator with optional Skia renderer installed | Combined, Candlestick, range selector, sticky axis, crosshair, tooltip, and debug-layout preview surfaces render correctly with injected Skia primitives. | partial | `docs/release/artifacts/skia-local-baseline-2026-05-06.md` |
199+
| `android-skia-pro-preview-parity` | Android / Pro preview renderer parity | Release APK on device or accepted emulator with optional Skia renderer installed | Combined, Candlestick, range selector, sticky axis, crosshair, tooltip, and debug-layout preview surfaces render correctly with injected Skia primitives. | partial | `docs/release/artifacts/skia-local-baseline-2026-05-06.md` |
200200
| `ios-skia-performance-comparison` | iOS / Skia performance comparison | Release build on device or accepted simulator with optional Skia renderer installed | Compare SVG and Skia native release-build timing and memory on dense line, multi-line scrub, range selector, scrollable bar, combined, and candlestick scenarios. | pending | None |
201201
| `android-skia-performance-comparison` | Android / Skia performance comparison | Release APK on device or accepted emulator with optional Skia renderer installed | Compare SVG and Skia native release-build timing and memory on dense line, multi-line scrub, range selector, scrollable bar, combined, and candlestick scenarios. | pending | None |
202202

docs/release/skia-renderer-qa.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Skia Renderer QA Protocol
22

3-
Status on May 6, 2026: protocol ready, native Skia evidence missing. Structured gate evidence lives in [skia-renderer-evidence.json](evidence/skia-renderer-evidence.json), with install, renderer-parity, and performance rows in [skia-renderer-matrix.json](evidence/skia-renderer-matrix.json). Use the generated [native QA checklist](native-qa-checklists.md) for row-by-row execution.
3+
Status on May 6, 2026: protocol ready, local baseline recorded, native Skia evidence missing. Structured gate evidence lives in [skia-renderer-evidence.json](evidence/skia-renderer-evidence.json), with install, renderer-parity, and performance rows in [skia-renderer-matrix.json](evidence/skia-renderer-matrix.json). Use the generated [native QA checklist](native-qa-checklists.md) for row-by-row execution.
44

55
This protocol covers the native evidence required before `@chart-kit/skia-renderer` can move beyond preview. Local renderer-contract tests prove that the injected primitive adapter can satisfy chart renderer contracts, but they do not prove native installation, native text rendering, native gradients, native clipping, or release-build performance.
66

@@ -21,6 +21,7 @@ Current automated coverage:
2121
- injected Skia primitives for canvas, groups, paths, rects, circles, lines, text, gradients, and clipped groups
2222
- local renderer-contract coverage for LineChart, BarChart, PieChart, ProgressChart, ContributionGraph, CombinedChart, and CandlestickChart
2323
- package pack dry-run for `@chart-kit/skia-renderer` while keeping it unpublished for Developer Preview
24+
- local baseline artifact: [skia-local-baseline-2026-05-06.md](artifacts/skia-local-baseline-2026-05-06.md)
2425

2526
This baseline is required but not enough for a pass row in the Skia evidence matrix.
2627

scripts/generate-native-qa-checklists.test.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ describe("native QA checklist generator", () => {
1717
expect(markdown).toContain(
1818
"| Native Performance | 18 | 0 | 18 | 0 | 0 | 0 | 0 |"
1919
);
20-
expect(markdown).toContain("| Skia Renderer | 8 | 0 | 0 | 8 | 0 | 0 | 0 |");
20+
expect(markdown).toContain("| Skia Renderer | 8 | 0 | 6 | 2 | 0 | 0 | 0 |");
2121
expect(markdown).toContain("`ios-line-charts`");
2222
expect(markdown).toContain(
2323
"chartkitshowcase://showcase?view=charts&page=line-area"

scripts/record-native-qa-evidence.test.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ describe("native QA evidence recorder", () => {
312312
evidence: ["docs/release/artifacts/skia-ios-install.md"],
313313
status: "pass"
314314
});
315-
expect(checklist).toContain("| Skia Renderer | 8 | 1 | 0 | 7 | 0 | 0 | 0 |");
315+
expect(checklist).toContain("| Skia Renderer | 8 | 1 | 5 | 2 | 0 | 0 | 0 |");
316316
expect(checklist).toContain("`ios-skia-native-install`");
317317
});
318318

0 commit comments

Comments
 (0)