Skip to content

Commit 0ede0f8

Browse files
test(spec): the connector-author-shape compile test carries its own 180 s timeout (#22969)
Fixes #22929 Clause-②: no > ~~Held out of the merge queue by #22949.~~ Released 2026-10-12: #22949 closed, and `main` was merged into this branch with the net diff unchanged. The seat queues it once the new head is green and its remaining pre-queue items are met. ## What changed One file, `packages/spec/src/integration/connector-author-shape.test.ts`, +14 / -1: the `it` named `compiles every full connector example verbatim, import line included` now passes `180_000` as its own timeout, with a comment carrying the measured figures and the reasoning for the bound. Test-only. The package-wide `testTimeout: 60_000` in `packages/spec/vitest.config.ts` is untouched, and the test is neither skipped nor split. ## Why 180 s - CI, `Test Core (1/6)`, as filed on the card: 55,680 ms on `main` (one cached replay, not three readings) and 61,767 ms on a cold spec re-run on PR #22922, which timed out at 60,000 ms. I could not re-read the job log from this container (the log blob host is not reachable through the proxy); the check run itself confirms that job failed in the `packages/spec` `pnpm run test` step, and the figures here are the card's. - Local, same test, `--maxWorkers=2` on a shared box: 13,796 ms before the change and 10,969 ms after. - 180,000 ms is about 2.9x the cold CI reading and 3.2x the cached one. A hung compile still fails inside three minutes. It is also the figure `shared/alias-integrity.test.ts` already gives its own heavy `beforeAll`. ## Evidence the timeout is the one that governs (ablation, one-off, nothing kept) Direction stated before running: with the own timeout removed and the global forced down to 2,000 ms on the command line, the `it` goes red; restored, it goes green under the same forced global. | leg | command tail | result | |---|---|---| | ablated (`}, 180_000);` replaced by `});`, mutation proven on disk by anchor count 1 to 0 and blob change) | `vitest run --maxWorkers=2 --testTimeout=2000 ...connector-author-shape.test.ts` | `Test timed out in 2000ms` on the compile `it`, 10 other tests pass | | restored (blob equals HEAD blob `88e0e6551c93`, `git diff HEAD` empty) | same command | 11 of 11 pass, compile `it` 12,452 ms under the 2,000 ms global | The observed direction is the predicted one (red, then green). The test subject here is the test file itself, resolved from `src`, so there is no `dist` leg to prove. ## Verification - `pnpm --filter @objectstack/spec exec vitest run --maxWorkers=2 src/integration/connector-author-shape.test.ts` at `57d5074ff`: 11 passed, compile `it` 10,969 ms. - Gates: `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` derived 77 commands for this change set; all 77 were run at `57d5074ff` with exit codes recorded before any pipe and reconciled with `--ran`: 76 exit 0, 1 NOT MEASURED, 0 unrun. - NOT MEASURED: `pnpm check:dual-build-cjs-loads` exited 3 (prerequisite: it reads the built `dist` of 88 other packages, which needs a whole-workspace `pnpm build`). A test file enters no package's emitted output, and `Build Core` in CI covers it. Two other gates that first exited 3 for an unbuilt prerequisite (`check:doc-formula-expressions`, `check:lean-entry-closure`) were rerun after a targeted build and exited 0. - Not measured here: the card's second half of "Done when", a cold `Test Core` shard running it green, which is CI's reading of this PR. - `main` moved four commits after the branch point (`da9c2bf2f`); none touches the test, `docs/SYNC_ARCHITECTURE.md`, `packages/spec/src/integration/` or the vitest config. `main` was not merged in. ## Publishes nothing `npm pack --dry-run` on `@objectstack/spec` lists 2,079 files: 0 are test files or this test, with `src/integration/connector.zod.ts` present as the positive control; a search of `dist` for the test's title finds 0 files, and for `ConnectorSchema` finds files. No changeset is owed, and `skip-changeset` applies. ## Acceptance notes Nothing out of scope was found. --- _Generated by [Claude Code](https://claude.ai/code/session_019G5ZnRrTMiwcHG6iZM19zf)_ Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: objectstack-fleet[bot] <332303061+objectstack-fleet[bot]@users.noreply.github.com>
1 parent 58f5c90 commit 0ede0f8

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

‎packages/spec/src/integration/connector-author-shape.test.ts‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,19 @@ describe('SYNC_ARCHITECTURE.md L3 connector examples compile', () => {
191191
expect(markdown).not.toContain("```typescript\nimport type { ETLPipeline }");
192192
});
193193

194+
// This `it` carries its OWN timeout instead of the package's 60 s default
195+
// (`vitest.config.ts`): it builds one `ts.createProgram` over the spec's types
196+
// (both document examples plus the harness self-test probe, at `strict`), and
197+
// that is more work than the default is sized for. CI readings, `Test Core
198+
// (1/6)`: 55,680 ms on `main` (commit 85b4ac634e; the same figure appears at
199+
// 018b077fbf and eab7236ff7 because turbo replayed one cached run, so it is
200+
// one reading, not three) and 61,767 ms on a cold spec re-run (PR head
201+
// 63710c5572), which timed out at 60,000 ms. A local run (2 workers) reads
202+
// 13,796 ms. 180_000 ms is about 2.9x the cold CI reading: room for a slower
203+
// runner, still short enough that a hung compile fails inside three minutes,
204+
// and the figure `shared/alias-integrity.test.ts` already gives its own
205+
// import-everything `beforeAll`. Only this `it` is widened: raising the
206+
// global `testTimeout` would hide the next slow test as well.
194207
it('compiles every full connector example verbatim, import line included', () => {
195208
const probes: Record<string, string> = {};
196209
compilable.forEach((block, i) => { probes[`doc-l3-connector-${i}`] = block; });
@@ -211,7 +224,7 @@ describe('SYNC_ARCHITECTURE.md L3 connector examples compile', () => {
211224
`L3 example #${i} must compile clean`,
212225
).toBe('');
213226
});
214-
});
227+
}, 180_000);
215228
});
216229

217230
describe('the spellings the example used to carry are rejected', () => {

0 commit comments

Comments
 (0)