Skip to content

test(cli): declare measured budgets on the eight os verify spawn files (#23181 slice 17) - #26507

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-dtehci
Oct 27, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-dtehci

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

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 under packages/cli/test/, which is not in @objectstack/cli's files[] (dist, README.md, CHANGELOG.md); no files[] changes in any package.

维护者速读

  • 改了什么:给 cli 里 8 个真实启动 os verify 的测试文件(test/verify-*.test.ts)各加一行第 2 行的 // test-budget: 声明,只是注释。
  • 为什么改:这 8 个文件在 CI 上仍超 10 s;逐个数过,每个文件里每次 CLI 启动都是不同的(命令、参数、夹具)组合,没有重复可共享,而且已在 beforeAll 里各跑一次,所以按裁决 6181973363 B 声明实测预算。
  • 风险与回滚:零运行时风险,不改断言、超时与分层;回滚即删这 8 行。
  • 先看: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; grammar readTestBudget in scripts/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.

file tests CLI spawns (counted) distinct (command, flags, fixture) CI 40392443783 (s) CI 40424746941 (s) CI 40447801748 (s) local (s) budget
test/verify-parent-write-reach.test.ts 3 3, in one beforeAll 3 55.76 36.47 35.05 40.9 70
test/verify-delete-behaviors.test.ts 3 3, in one beforeAll 3 52.68 34.05 31.86 35.6 70
test/verify-dashboard-windows.test.ts 3 3, in one beforeAll 3 50.49 34.23 32.75 35.3 70
test/verify-unique-scopes.test.ts 3 3, in one beforeAll 3 48.96 49.91 31.63 36.1 70
test/verify-reference-shapes.test.ts 3 3, in one beforeAll 3 37.07 43.50 45.37 32.1 60
test/verify-author-time-stage.test.ts 3 4, one per case and step 4 38.85 28.55 31.82 31.0 50
test/verify-json-stdout.test.ts 4 2, in one beforeAll 2 32.04 32.30 21.23 21.3 50
test/verify-host-root.test.ts 2 1, in its beforeAll 1 13.13 9.64 10.37 10.5 20

Why

The count. In the five flag files (parent-write-reach, delete-behaviors, dashboard-windows, unique-scopes, reference-shapes) the three spawns are verify --json on the app, verify --FLAG --json on the app, and verify --FLAG --json on the control fixture (in reference-shapes, the same directory under OS_ALLOW_LAX_VALUE_SHAPES=1). author-time-stage runs validate --json, verify --json and verify on the planted stack and verify on the clean control. json-stdout runs verify --json and verify once each. host-root runs one verify --app from 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 one beforeAll; author-time-stage spawns 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 main since slice 14 (PR #26256). The CI numbers are the vitest module lines (they include beforeAll) of the three scheduled full-battery ci.yml runs on main after it: slice 15's two, 40392443783 and 40424746941, and the newer 40447801748 (head 26e7c75e9a; its Test Core shards and aggregator all passed, only a Test UI shard failed). The newer run raises one file's maximum: verify-reference-shapes 45.37 s, which still rounds to 60.

No file left out. verify-host-root is 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=default plus the eight files, under os-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 class spawns the real producer once per single-cause fixture at 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-config on the eight files: exit 0. pnpm check:nul-bytes: exit 0.

Acceptance notes

Verification

Local gates at dfec98106: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 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-test exited 3 on the shallow clone and 0 after git fetch origin 621a487607881c66b2899b7e3477115229a156b4. check:dual-build-cjs-loads exited 3 (ten packages outside the cli closure had no dist/) and 0 after building them. --ran reconciliation: 48 derived famil(ies) accounted for — 48 run, 0 NOT-MEASURED, exit 0. The repo-wide pnpm lint is left to CI.

Human Minimum

  • 1. Schemas start as Zod; packages/spec holds no runtime logic. (not touched)
  • 2. Every name I added uses the casing for its kind. (no names added)
  • 3. No formatter ran; pnpm lint passes. (eslint on the touched files: exit 0)
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset. (publishes nothing: skip-changeset)
  • 6. packages/spec touched: its generated artifacts are regenerated and committed. (not touched)
  • 7. No hand edits to content/docs/references/, packages/*/CHANGELOG.md or content/docs/releases/.
  • 8. Title, body and comments are in English. (the maintainer brief is in Chinese, per AGENTS.md)
  • The Before Submitting list in CONTRIBUTING.md is done.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FEkQ5nuFC67LujGL3Fsyiy

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
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing 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): node scripts/docs-audit/affected-docs.mjs --json 98c025775df1b77449e89465dbd2469f85dc16a1 → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · domain:server seat 1 · os-project-manager · session_01R1q2xdtYgU6FKrZ7LgjPCC · 2026-10-27T06:09Z

Head dfec981068, report 6434906896 (on #23181), claim 6434344323. No contract review is owed: there is no packages/spec/** diff, no governed path, no narrowing and no Clause-②: yes.

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

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 27, 2026 06:10
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 27, 2026 06:10
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit 7234f33 Oct 27, 2026
53 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-dtehci branch October 27, 2026 06:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants