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
{{ message }}
Repository navigation
Commit aab0e51
Browse filesBrowse the repository at this point in the historyBrowse files
why: "the 178 test files under ui/scripts/__tests__ belong to no package and run only in CI's 16 Test UI shards, where the affected-test selector adds them to every run, so no package suite and no check family covers them: they pin turbo build inputs, the skill-examples floor, the SchemaRenderer channel keys and the other facts a change under ui package source, the ui apps, skills/objectui or ui/scripts moves. The whole suite, never a subset: about a minute locally. It needs the seven @objectstack packages Test UI builds first, or about twenty files red on an import of a missing dist — build them exactly as the job does: pnpm exec turbo run build --filter=@objectstack/spec... --filter=@objectstack/client... --filter=@objectstack/core... --filter=@objectstack/formula... --filter=@objectstack/lint... --filter=@objectstack/sdui-parser... --filter=@objectstack/types... . Positional filter, no bare `--`, from the repo root: ui/scripts/vitest-invocation-guard.mjs refuses every other spelling",
1067
+
why: "the 178 test files under ui/scripts/__tests__ belong to no package and run only in CI's 16 Test UI shards, where the affected-test selector adds them to every run, so no package suite and no check family covers them: they pin turbo build inputs, the skill-examples floor, the SchemaRenderer channel keys and the other facts a change under ui package source, the ui apps, skills/objectui or ui/scripts moves. The whole suite, never a subset: measured at about five minutes on a 4-vCPU container (284 s and 286 s, 178 files passing, import-bound), against the CI round trip of about 25 minutes it saves. It needs the seven @objectstack packages Test UI builds first, or about twenty files red on an import of a missing dist — build them exactly as the job does: pnpm exec turbo run build --filter=@objectstack/spec... --filter=@objectstack/client... --filter=@objectstack/core... --filter=@objectstack/formula... --filter=@objectstack/lint... --filter=@objectstack/sdui-parser... --filter=@objectstack/types... . Positional filter, no bare `--`, from the repo root: ui/scripts/vitest-invocation-guard.mjs refuses every other spelling",
t('the roots are the card\'s four, in the trigger language', ['ui/packages/**/src/**', 'ui/apps/**', 'skills/objectui/**', 'ui/scripts/**'].every((r) => UI_SCRIPTS_SUITE_ROOTS.includes(r)));
4862
+
for (const [root, specimen] of Object.entries(UI_SUITE_SPECIMENS)) {
4863
+
t(`a path under ${root} is read by the ui/scripts suite (${specimen})`, readByUiScriptsSuite(specimen));
4864
+
}
4865
+
t('a dispatch surface given as a ui package\'s src DIRECTORY counts too', readByUiScriptsSuite('ui/packages/core/src') && readByUiScriptsSuite('./ui/scripts'));
4866
+
for (const control of UI_SUITE_CONTROLS) {
4867
+
t(`CONTROL: ${control} is outside the four roots`, !readByUiScriptsSuite(control));
4868
+
}
4869
+
// A resolver that resolves a family by its `pnpm` spelling and a CI-job gate by
4870
+
// its own name — the shape `derive`'s resolver has.
t('the suite line states its build prerequisite, runnably', /seven @objectstack packages/.test(uiLine) && uiLine.includes('turbo run build') && uiLine.includes('--filter=@objectstack/sdui-parser...'));
4883
+
t('…and says it is the whole suite, never a subset', /The whole suite, never a subset/.test(uiLine));
t('⭐ a run record carrying every derived command BUT the suite is NOT ok, and names the suite unrun', !uiWithout.ok && uiWithout.unrun.some((u) => u.command === UI_SUITE));
t('the binding resolves where the job runs the runner', ciJobRunsRunner(uiBinding, uiJobFixture('Test UI (${{ matrix.shard }}/16)', 'pnpm --dir ui exec vitest run --shard=1/16 "${filters[@]}"')));
4899
+
t('…and not once the job is renamed', !ciJobRunsRunner(uiBinding, uiJobFixture('UI tests (${{ matrix.shard }}/16)', 'pnpm --dir ui exec vitest run --shard=1/16')));
4900
+
t('…nor once the runner is respelled', !ciJobRunsRunner(uiBinding, uiJobFixture('Test UI (${{ matrix.shard }}/16)', 'pnpm --dir ui run test --shard=1/16')));
4901
+
t('⭐ the binding resolves against the LIVE workflows — the census guard for a gate no family carries', ciJobRunsRunner(uiBinding, discoverFamilies().workflowEntries));
4902
+
t('a half-declared CI-job binding REFUSES at load',
0 commit comments