Ship a per-release surface manifest with stable ids and refusal codes

- packages/compiler/surface-manifest.json is generated (pnpm manifest), committed, and shipped in @scriptc/compiler; entries project mechanically from the diagnostics registry, the unsupported-syntax dispatch tables, the stdlib/builtin lowering tables, and the supported-builtin-module list
- every non-static entry carries the SC code the compiler raises for it, and the version spine is the exact published release version
- FENCE_CODES joins the diagnostics registry so factory-minted construct fences are enumerable
- the sampling harness compiles listed-static probes and asserts each sampled non-static entry refuses with exactly its listed code, beside a byte-identical staleness guard
- the release workflow regenerates the manifest, fails on drift, and attaches it to the GitHub release
This commit is contained in:
Chris Tate
2026-07-22 22:01:45 -05:00
parent 235709a53d
commit d66c36b020
11 changed files with 2728 additions and 12 deletions
+1
View File
@@ -11,6 +11,7 @@
"test:cache-identity": "node tests/harness/cache-identity.mjs",
"test:watch": "vitest",
"lint": "eslint packages/compiler/src packages/cli/src",
"manifest": "tsx scripts/surface-manifest.mjs",
"scriptc": "tsx packages/cli/src/main.ts"
},
"devDependencies": {