Skip to content

Commit 3d1b771

Browse files
authored
fix(ci): catch script declaration drift before merge (#110248)
* fix(ci): verify script declaration contracts * fix(ci): harden declaration export analysis * fix(ci): cover opaque script module exports * test(ci): cover cyclic script declaration barrels
1 parent 75e4103 commit 3d1b771

25 files changed

Lines changed: 1293 additions & 141 deletions

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2050,6 +2050,7 @@ jobs:
20502050
case "$TASK" in
20512051
guards)
20522052
pnpm check:no-conflict-markers
2053+
pnpm check:script-declarations
20532054
pnpm tool-display:check
20542055
pnpm check:host-env-policy:swift
20552056
pnpm dup:check:coverage

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1585,6 +1585,7 @@
15851585
"check:opengrep-rule-metadata": "node security/opengrep/check-rule-metadata.mjs",
15861586
"check:protocol-coverage": "node scripts/check-protocol-event-coverage.mjs",
15871587
"check:runtime-sidecar-loaders": "node --import tsx scripts/check-runtime-sidecar-loaders.mjs",
1588+
"check:script-declarations": "node scripts/check-script-declarations.mjs",
15881589
"check:static-import-sccs": "pnpm check:madge-import-cycles",
15891590
"check:temp-path-guardrails": "node --import tsx scripts/check-temp-path-guardrails.ts",
15901591
"check:test-types": "pnpm tsgo:test",

scripts/check-changed.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,9 @@ export function createChangedCheckPlan(result, options = {}) {
506506
const lanes = result.lanes;
507507
const runAll = lanes.all;
508508
const shouldRunAndroidVersionSync = hasAndroidVersionSyncPath(result.paths);
509+
if (lanes.scripts || lanes.tooling || lanes.testRoot) {
510+
add("script declaration contracts", ["check:script-declarations"]);
511+
}
509512

510513
if (lanes.releaseMetadata) {
511514
add("release metadata guard", [
@@ -545,7 +548,6 @@ export function createChangedCheckPlan(result, options = {}) {
545548
if (shouldRunControlUiI18nVerify(result.paths)) {
546549
addLint("Control UI i18n catalog", ["lint:ui:i18n"]);
547550
}
548-
549551
if (lanes.core) {
550552
addTypecheck("typecheck core", ["tsgo:core"]);
551553
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/// <reference types="node" />
2+
export function generateValueExportContract(filePath: string): Buffer;
3+
export function verifyScriptDeclarationContracts(options?: { root?: string; files?: string[] }): {
4+
checked: number;
5+
issues: string[];
6+
};

0 commit comments

Comments
 (0)