From 179c8078ad2f71c9e6723887b9570815887d1f1d Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 26 Oct 2026 14:17:39 +0000 Subject: [PATCH] test(cli): declare measured budgets on the generate-refuses and build spawn files Ten packages/cli integration files spawn the source CLI once per single-cause fixture. Each spawn's floor is the source entry loading all 72 commands (about 8.5 s locally, `os --version` included), so no file with a spawn fits the 10 s line, and none spawns twice for one fixture. Each file now carries its ruled `test-budget:` header line (class "spawns the real producer once per single-cause fixture"), sized from the slowest CI reading in shard-timings refresh run 40275747937 x 1.25, rounded up to the next 10 s. Comment-only: no case, assertion, timeout or project changes. Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_01Pq8DZ41armkBBdhQUufpjH --- packages/cli/test/build-callable-names.test.ts | 1 + packages/cli/test/build-runtime-bundle-bodyless.test.ts | 1 + packages/cli/test/build-strict-body-count.test.ts | 1 + packages/cli/test/build-text-face-advisory-count.test.ts | 1 + packages/cli/test/build-view-container-name.test.ts | 1 + packages/cli/test/generate-refuses-name-outside-charset.test.ts | 1 + packages/cli/test/generate-refuses-namespace-prefix.test.ts | 1 + packages/cli/test/generate-refuses-retired-generator.test.ts | 1 + packages/cli/test/generate-refuses-unimportable-alias.test.ts | 1 + packages/cli/test/generate-refuses-unparseable-name.test.ts | 1 + 10 files changed, 10 insertions(+) diff --git a/packages/cli/test/build-callable-names.test.ts b/packages/cli/test/build-callable-names.test.ts index a914fc7287f..1528b76c80b 100644 --- a/packages/cli/test/build-callable-names.test.ts +++ b/packages/cli/test/build-callable-names.test.ts @@ -1,4 +1,5 @@ // Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license. +// test-budget: 160 — spawns the real producer once per single-cause fixture: nine spawns of the source CLI, `os build` over one fixture per callable kind the census derives plus the control and the named-export stack, each artifact then loaded through loadArtifactBundle; each spawn's floor is the source entry loading all 72 commands (about 8.5 s, `os --version` included); slowest CI reading 123.82 s (run 40200279306) in the window of shard-timings refresh run 40275747937 (PR #25960), over 10 s in 5 of 5 runs that executed it, x 1.25, rounded up /** * `objectstack build` ships every authored `functions` name under its own name, diff --git a/packages/cli/test/build-runtime-bundle-bodyless.test.ts b/packages/cli/test/build-runtime-bundle-bodyless.test.ts index e847e2ade09..783b4f25240 100644 --- a/packages/cli/test/build-runtime-bundle-bodyless.test.ts +++ b/packages/cli/test/build-runtime-bundle-bodyless.test.ts @@ -1,4 +1,5 @@ // Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license. +// test-budget: 120 — spawns the real producer once per single-cause fixture: six spawns of the source CLI, `os build` over six stacks that differ only in which callables keep a body; each spawn's floor is the source entry loading all 72 commands (about 8.5 s, `os --version` included); slowest CI reading 92.69 s (run 40200279306) in the window of shard-timings refresh run 40275747937 (PR #25960), over 10 s in 3 of 3 runs that executed it, x 1.25, rounded up /** * `objectstack build` writes the runtime module (`objectstack-runtime.*.mjs`) diff --git a/packages/cli/test/build-strict-body-count.test.ts b/packages/cli/test/build-strict-body-count.test.ts index 3e75dda5edb..2b768d07cb6 100644 --- a/packages/cli/test/build-strict-body-count.test.ts +++ b/packages/cli/test/build-strict-body-count.test.ts @@ -1,4 +1,5 @@ // Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license. +// test-budget: 110 — spawns the real producer once per single-cause fixture: six spawns of the source CLI, `os build --strict-body` over the zero control, the one and four fixtures in the text and `--json` faces, and the `functions`-entry stack; each spawn's floor is the source entry loading all 72 commands (about 8.5 s, `os --version` included); slowest CI reading 82.44 s (run 40204927516) in the window of shard-timings refresh run 40275747937 (PR #25960), over 10 s in 3 of 3 runs that executed it, x 1.25, rounded up /** * [#22839] `objectstack build --strict-body` counts callables, and its diff --git a/packages/cli/test/build-text-face-advisory-count.test.ts b/packages/cli/test/build-text-face-advisory-count.test.ts index 467bac71b08..349b708a2ac 100644 --- a/packages/cli/test/build-text-face-advisory-count.test.ts +++ b/packages/cli/test/build-text-face-advisory-count.test.ts @@ -1,4 +1,5 @@ // Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license. +// test-budget: 60 — spawns the real producer once per single-cause fixture: three spawns of the source CLI, `os build` over the multi-package stack in the text and `--json` faces and over the single-package control; each spawn's floor is the source entry loading all 72 commands (about 8.5 s, `os --version` included); slowest CI reading 41.41 s (run 40200279306) in the window of shard-timings refresh run 40275747937 (PR #25960), over 10 s in 5 of 5 runs that executed it, x 1.25, rounded up /** * #18780 — `os build`'s TEXT face counted per-package advisories it never diff --git a/packages/cli/test/build-view-container-name.test.ts b/packages/cli/test/build-view-container-name.test.ts index b731926cf23..6e17e8d1122 100644 --- a/packages/cli/test/build-view-container-name.test.ts +++ b/packages/cli/test/build-view-container-name.test.ts @@ -1,4 +1,5 @@ // Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license. +// test-budget: 90 — spawns the real producer once per single-cause fixture: five spawns of the source CLI, `os build` over the divergent container in both faces, the `packages[]` stack and the two controls; each spawn's floor is the source entry loading all 72 commands (about 8.5 s, `os --version` included); slowest CI reading 66.67 s (run 40204927516) in the window of shard-timings refresh run 40275747937 (PR #25960), over 10 s in 4 of 4 runs that executed it, x 1.25, rounded up /** * [#20393] `os build` refuses a `views:` container whose own `name` disagrees diff --git a/packages/cli/test/generate-refuses-name-outside-charset.test.ts b/packages/cli/test/generate-refuses-name-outside-charset.test.ts index 961d69d975c..4b9b3a21436 100644 --- a/packages/cli/test/generate-refuses-name-outside-charset.test.ts +++ b/packages/cli/test/generate-refuses-name-outside-charset.test.ts @@ -1,4 +1,5 @@ // Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license. +// test-budget: 70 — spawns the real producer once per single-cause fixture: four spawns of the source CLI (`os g object order-line`, `os g flow lead-qual --dry-run`, `os g object class` and the `order_line` control), each in its own empty project; each spawn's floor is the source entry loading all 72 commands (about 8.5 s, `os --version` included); slowest CI reading 54.70 s (run 40204927516) in the window of shard-timings refresh run 40275747937 (PR #25960), over 10 s in 4 of 4 runs that executed it, x 1.25, rounded up /** * PIN (#16726) — `os generate ` refuses a name outside the diff --git a/packages/cli/test/generate-refuses-namespace-prefix.test.ts b/packages/cli/test/generate-refuses-namespace-prefix.test.ts index fb071f01b11..2d303220202 100644 --- a/packages/cli/test/generate-refuses-namespace-prefix.test.ts +++ b/packages/cli/test/generate-refuses-namespace-prefix.test.ts @@ -1,4 +1,5 @@ // Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license. +// test-budget: 90 — spawns the real producer once per single-cause fixture: five spawns of the source CLI (`os g object order__line`, its view dry run, `os g object customer` over a config that will not load, and one control in each project), each refusal read against its project before that control; each spawn's floor is the source entry loading all 72 commands (about 8.5 s, `os --version` included); slowest CI reading 69.59 s (run 40204927516) in the window of shard-timings refresh run 40275747937 (PR #25960), over 10 s in 3 of 3 runs that executed it, x 1.25, rounded up /** * PIN (#20197) — the two refusals the namespace prefix added to diff --git a/packages/cli/test/generate-refuses-retired-generator.test.ts b/packages/cli/test/generate-refuses-retired-generator.test.ts index 4862b08ed98..84c2b45831e 100644 --- a/packages/cli/test/generate-refuses-retired-generator.test.ts +++ b/packages/cli/test/generate-refuses-retired-generator.test.ts @@ -1,4 +1,5 @@ // Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license. +// test-budget: 70 — spawns the real producer once per single-cause fixture: four spawns of the source CLI (`os generate schema`, `os g schema -o`, `os g constructor thing` and the `object --dry-run` control) in one project, each listing read before the next; each spawn's floor is the source entry loading all 72 commands (about 8.5 s, `os --version` included); slowest CI reading 53.28 s (run 40204927516) in the window of shard-timings refresh run 40275747937 (PR #25960), over 10 s in 4 of 4 runs that executed it, x 1.25, rounded up /** * PIN (#19098) — the retired-generator door of `os generate`, in the run that diff --git a/packages/cli/test/generate-refuses-unimportable-alias.test.ts b/packages/cli/test/generate-refuses-unimportable-alias.test.ts index 0df9f953c2c..1ad674778ac 100644 --- a/packages/cli/test/generate-refuses-unimportable-alias.test.ts +++ b/packages/cli/test/generate-refuses-unimportable-alias.test.ts @@ -1,4 +1,5 @@ // Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license. +// test-budget: 120 — spawns the real producer once per single-cause fixture: seven spawns of the source CLI (`os g dashboard class`, `os g skill let`, the dry run, `os g object class`, `os g object order-line`, and the `order_line` and `type` controls), each in its own empty project; each spawn's floor is the source entry loading all 72 commands (about 8.5 s, `os --version` included); slowest CI reading 94.13 s (run 40204927516) in the window of shard-timings refresh run 40275747937 (PR #25960), over 10 s in 3 of 3 runs that executed it, x 1.25, rounded up /** * PIN (#17410) — `os generate` must not EXIT 0 on a name whose barrel alias no diff --git a/packages/cli/test/generate-refuses-unparseable-name.test.ts b/packages/cli/test/generate-refuses-unparseable-name.test.ts index 47c276d9a4d..2edb2bff459 100644 --- a/packages/cli/test/generate-refuses-unparseable-name.test.ts +++ b/packages/cli/test/generate-refuses-unparseable-name.test.ts @@ -1,4 +1,5 @@ // Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license. +// test-budget: 90 — spawns the real producer once per single-cause fixture: five spawns of the source CLI (`os g object foo.bar`, `os g flow foo.bar`, the dry run, `os g object class` and the `order_line` control); each spawn's floor is the source entry loading all 72 commands (about 8.5 s, `os --version` included); slowest CI reading 66.41 s (run 40200279306) in the window of shard-timings refresh run 40275747937 (PR #25960), over 10 s in 5 of 5 runs that executed it, x 1.25, rounded up /** * PIN (#16541) — `os generate` must not EXIT 0 on a name whose emission does