Repository navigation
test(cli): declare measured budgets on the eight os verify spawn files (#23181 slice 17) - #26507
Merged
Merged
Conversation
Each of the eight packages/cli/test/verify-*.test.ts files spawns the CLI once per distinct (command, flags, fixture) triple, and no triple repeats within a file, so there is no spawn to share and the floor is the spawns. Each takes the ruled one-line header at line 2: the slowest CI reading of the three scheduled runs after the oclif test manifest, x 1.25, rounded up to 10 s. Comment-only; no assertion, timeout, tier or helper changes. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FEkQ5nuFC67LujGL3Fsyiy
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
Contributor
Author
席位核对 · ACCEPT ·
|
| item | reading |
|---|---|
| Shape | Draft, base main, Part of #23181 (slice 17), skip-changeset (test-only, no files[] change). 8 files, +8/−0: one comment line each, all in the claimed os verify family. |
| Fix | All eight test/verify-*.test.ts files spawn only distinct (command, flags, fixture) triples, so each gets the ruled // test-budget: header at line 2 (ruling 6181973363 letter B) and nothing else. |
| Seat check | The seat recomputed all 8 budgets from the slowest of three scheduled CI readings × 1.25, rounded up to 10 s: 55.76→70, 52.68→70, 50.49→70, 49.91→70, 45.37→60, 38.85→50, 32.30→50, 13.13→20. No assertion, timeout or project placement changes. |
| Evidence | CI on head dfec981068 is green: 36 checks succeeded, 16 were expected skips, and none failed or are pending; mergeable clean. Locally 8 of 8 files and 24 of 24 tests; every header parses through readTestBudget. Derived gates: 48 of 48 run, with 0 NOT-MEASURED. |
| Carried | packages/verify's six over-10 s files were measured only, with each one's cause in the report, for a later slice. Slice 16 (#26493) is in the merge queue on other files. |
| Landing | 「按照 pm-dispatch 规则复核过的都授权」 (Leehom, 2026-10-25T11:35Z): ready and auto-merge through the relay, once every check on this head is green or an expected skip. |
Generated by Claude Code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Leehom · project thread
Part of #23181 (slice 17). The card is a series and stays open.
Clause-②: no
Metadata-protocol: none
Test-only, comment-only diff:
skip-changeset. Eight lines underpackages/cli/test/, which is not in@objectstack/cli'sfiles[](dist,README.md,CHANGELOG.md); nofiles[]changes in any package.维护者速读
os verify的测试文件(test/verify-*.test.ts)各加一行第 2 行的// test-budget:声明,只是注释。beforeAll里各跑一次,所以按裁决 6181973363 B 声明实测预算。packages/cli/test/verify-parent-write-reach.test.ts、packages/cli/test/verify-reference-shapes.test.ts第 2 行(预算最大的一行,和第三次 CI 读数抬高了的一行)。scripts/measure-test-shard-timings.mjs的readTestBudget解析这 8 个文件,预期 8 行都返回spawns the real producer once per single-cause fixture、行号 2。What changes
One header line at line 2 of each file below, in the ruled grammar
// test-budget: N — spawns the real producer once per single-cause fixture: REASON(ruling record 6181973363, letter B; grammarreadTestBudgetinscripts/measure-test-shard-timings.mjs). N is the slowest CI reading x 1.25, rounded up to the next 10 s. Nothing else changes: no assertion, timeout, tier or helper.test/verify-parent-write-reach.test.tsbeforeAlltest/verify-delete-behaviors.test.tsbeforeAlltest/verify-dashboard-windows.test.tsbeforeAlltest/verify-unique-scopes.test.tsbeforeAlltest/verify-reference-shapes.test.tsbeforeAlltest/verify-author-time-stage.test.tstest/verify-json-stdout.test.tsbeforeAlltest/verify-host-root.test.tsbeforeAllWhy
The count. In the five flag files (
parent-write-reach,delete-behaviors,dashboard-windows,unique-scopes,reference-shapes) the three spawns areverify --jsonon the app,verify --FLAG --jsonon the app, andverify --FLAG --jsonon the control fixture (inreference-shapes, the same directory underOS_ALLOW_LAX_VALUE_SHAPES=1).author-time-stagerunsvalidate --json,verify --jsonandverifyon the planted stack andverifyon the clean control.json-stdoutrunsverify --jsonandverifyonce each.host-rootruns oneverify --appfrom a foreign cwd. No triple repeats inside a file, and every fixture is the file's own, so there is no spawn to share. Seven of the eight already spawn in onebeforeAll;author-time-stagespawns inside its cases, one distinct triple each, so hoisting them would move the cost and save nothing. What is left is the spawn floor.The readings. No shard-timings refresh has run on
mainsince slice 14 (PR #26256). The CI numbers are the vitest module lines (they includebeforeAll) of the three scheduled full-batteryci.ymlruns onmainafter it: slice 15's two, 40392443783 and 40424746941, and the newer 40447801748 (head26e7c75e9a; its Test Core shards and aggregator all passed, only a Test UI shard failed). The newer run raises one file's maximum:verify-reference-shapes45.37 s, which still rounds to 60.No file left out.
verify-host-rootis under 10 s in one reading (9.64 s) but over in the other two, so it takes a header. No file needed another mechanism.Tests
Comment-only diff, so behaviour and wall are the tree's. A/B of a comment line measures nothing (slice 15's precedent), so the after reading is one run on this head's tree.
Local run of the family (one lock hold)
cd packages/cli && pnpm exec vitest run --project integration --maxWorkers=2 --reporter=defaultplus the eight files, underos-verify-lock, on a shared container, manifest setup on (queue tier):Test Files 8 passed (8),Tests 24 passed (24), VERDICT command-exit 0, lock held 147 s. Every file reads under its declared budget.Header parse
All eight lines parse through
readTestBudget(exit 0): each returns classspawns the real producer once per single-cause fixtureat line 2, seconds 70 / 70 / 70 / 70 / 60 / 50 / 50 / 20.Typecheck and lint
pnpm --filter @objectstack/cli typecheck: VERDICT command-exit 0 (check:test-typecheck: OK).pnpm exec eslint --no-inline-configon the eight files: exit 0.pnpm check:nul-bytes: exit 0.Acceptance notes
packages/verify's own files over 10 s in slice 15's local reading were measured only, not changed; their causes are in the slice report on test budget (domain:cli): 119 test file(s) over 10 s of wall in the hourly full battery (Part of #23151) #23181 for a later slice.Verification
Local gates at
dfec98106:node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 48 commands. Each ran with its exit code captured before any pipe. 46 exited 0 on the first pass.check-plugin-teardown-shape.mjs --self-testexited 3 on the shallow clone and 0 aftergit fetch origin 621a487607881c66b2899b7e3477115229a156b4.check:dual-build-cjs-loadsexited 3 (ten packages outside the cli closure had nodist/) and 0 after building them.--ranreconciliation:48 derived famil(ies) accounted for — 48 run, 0 NOT-MEASURED, exit 0. The repo-widepnpm lintis left to CI.Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses. (eslint on the touched files: exit 0)main, one pull request.skip-changeset)packages/spectouched: its generated artifacts are regenerated and committed. (not touched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_01FEkQ5nuFC67LujGL3Fsyiy