You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore(spec): ratchet react-block spec↔frontend conformance at console-build time (ADR-0081) (#2485)
Wire the spec↔frontend react-block conformance check in as a baseline ratchet at
the one place the registry-inputs manifest is produced for free —
`scripts/build-console.sh`, right after it dumps `sdui.manifest.json`. Running it
on every framework PR isn't worth it (the manifest only exists at console-build
time); the ratchet catches NEW divergence there at near-zero marginal cost.
- check-react-blocks-conformance.ts gains `--baseline <path>` (compare, report
only regressions: a component exposing a NEW undocumented prop or a
previously-present block vanishing) and `--update` (accept current as the new
baseline). The soft spec-only signal is not gated. `--strict` exits 1 on
regression.
- packages/spec/react-conformance.baseline.json captures the accepted state
(ListView frontend-only fields/options, ObjectChart data; rest clean after
#2113/#2484).
- build-console.sh runs the ratchet warn-only after the dump — never fails the
console build, surfaces new divergence at the release point.
- audit doc documents the ratchet + how to re-accept the baseline.
Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
"_comment": "Accepted spec↔frontend conformance baseline (react blocks). Per block: the frontend-only prop set (component exposes, spec does not declare) and whether the block is missing. Regenerate with: MANIFEST=… check:react-conformance --baseline <this> --update. The ratchet flags only NEW frontend-only props or newly-missing blocks.",
'Accepted spec↔frontend conformance baseline (react blocks). Per block: the frontend-only prop set (component exposes, spec does not declare) and whether the block is missing. Regenerate with: MANIFEST=… check:react-conformance --baseline <this> --update. The ratchet flags only NEW frontend-only props or newly-missing blocks.',
125
+
...out,
126
+
},
127
+
null,
128
+
2,
129
+
)+'\n',
130
+
'utf8',
131
+
);
132
+
console.log(`\n✓ wrote conformance baseline → ${BASELINE} (${Object.keys(current).length} blocks)`);
133
+
process.exit(0);
134
+
}
135
+
136
+
if(!fs.existsSync(BASELINE)){
137
+
console.error(`\n✗ baseline not found: ${BASELINE} — generate it with --update first.`);
0 commit comments