Repository navigation
test(spec): four ruled-class test files declare their measured CI budget - #23613
Merged
objectstack-fleet[bot] merged 1 commit intoOct 15, 2026
Merged
Conversation
Each file carries one `// test-budget: SECONDS — CLASS: REASON` header line (ruling record 6181973363, letter B): the slowest CI reading of the three hourly full-battery runs that executed @objectstack/spec after the liveness read memo landed, x 1.25, rounded up to the next 10 s. - scripts/build-schemas-check-mode.test.ts: 940 s (749.9 s, run 38657693085) - scripts/liveness/check-liveness.test.ts: 410 s (320.4 s, run 38657693085) - src/shared/alias-integrity.test.ts: 50 s (34.9 s, run 38651452634) - src/eager-entry-import.test.ts: 30 s (19.9 s, run 38657693085) No other line changes. Claude-Session: https://claude.ai/code/session_01LFqdRsuM5nkqoJdHd5ztVk Co-authored-by: Claude <noreply@anthropic.com>
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 ·
|
objectstack-fleet
Bot
deleted the
claude/issue-23180-test-budget-declarations
branch
October 15, 2026 06:16
This was referenced Oct 16, 2026
Merged
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.
Part of #23180
Clause-②: no
This PR adds only the budget declarations that ruling record
6181973363(letter B, item 5) assigns to the spec lane. Each of four test files gets one header line,// test-budget: SECONDS — CLASS: REASON. Since PR #23595,scripts/measure-test-shard-timings.mjs --diffreads that line and lists the file only when a window reading goes above the declared budget. The other rows on #23180 stay listed for later rounds.Each diff is one inserted line at line 2, right below the copyright line. No other line changes: no timeout, no deletion, no project move.
The readings
Source: the hourly
scheduleruns ofci.yml, the same population the refresh lane reads. Only runs that executed@objectstack/speccount (turbo cache miss). Replayed rows are excluded, as the refresh excludes them.Window: every such run after PR #23535 (the liveness read memo,
51b9990f47) landed. All three runs contain51b9990f47: the compare API answersaheadwithbehind_by0 for each. Each value is the vitest module line for the file, in seconds, from the shard that ran spec (Test Core (1/6)in all three runs). Each value also matches the run's merged timing table where that table lists the file.build-schemas-check-mode(repo)check-liveness(local)alias-integrity(local)eager-entry-import(local)compliance-families-retirement(repo)3863694915210-14 21:015fd2c76d6c3865145263410-14 23:018226755ee93865769308510-15 00:02b57228913aReplayed runs, for the record. The five other
scheduleruns in the same span (22:01, 01:12, 02:01, 03:01, 04:01) replayed@objectstack/specfrom the cache. The refresh does not count them. Their replayed lines come from whichever run filled the cache, and every one is under the budget declared here:build-schemas-check-mode: 626.95 to 731.05 s.check-liveness: 239.63 to 320.70 s.eager-entry-import: 19.3 s (03:01).compliance-families-retirement: 3.0 s (03:01) and 6.1 s (04:01).The declarations
packages/spec/scripts/build-schemas-check-mode.test.tspackages/spec/scripts/liveness/check-liveness.test.tspackages/spec/src/shared/alias-integrity.test.tspackages/spec/src/eager-entry-import.test.tsEach REASON states what the file spawns or imports, and the CI reading and run its number comes from. That gives a later re-measure PR the baseline it has to state (ruling item 2).
The two candidates this seat was asked to decide:
eager-entry-import.test.ts: declared. Its CI readings are 15.7 to 19.9 s, over the 10 s line. Every published entry of the package (19 module entries) is imported first in its own freshtsxchild process, plus two unflagged controls. Its subject is the package's whole entry surface, so it takes thewhole-package importclass. Ruling item 5 names it once measured.compliance-families-retirement.test.ts: not declared. Its CI readings are 5.1 to 7.7 s, all under the 10 s line, so a declaration would lift nothing. The reader refuses a budget of 10 s or less anyway. Its import is the system barrel, one domain rather than the whole package, so it would not be literallywhole-package importeither. The card's 14.6 s came from the old window, and the card's own pin (the next refresh list) decides that row.PM mechanism assumptions, measured
check-liveness, partly for the others.check-liveness: the memo moved it from 493.4 s to 269 to 320 s in CI.build-schemas-check-mode,alias-integrity,eager-entry-import,compliance-families: PRs perf(spec): check:liveness reads each cited file once per run #23535, test(spec): scoped-context and connector-author-shape compile their probes in one program, reading only the probe files' diagnostics #23547 and test(spec): six retirement walks skip generated json-schema, unmatched pattern runs and a repeated corpus walk #23575 touch none of these files. They read lower in the new window anyway: 749.9 against 902.1 s, 34.9 against 40.8 s, 19.9 against 25.7 s, and 7.7 against 14.6 s.check-liveness, by design.schedulerun has executed spec since PR test(spec): six retirement walks skip generated json-schema, unmatched pattern runs and a repeated corpus walk #23575 landed: the 03:01 and 04:01 runs replayed it. Of the three readings, only the 00:02 run includes PR test(spec): scoped-context and connector-author-shape compile their probes in one program, reading only the probe files' diagnostics #23547.productionresultssa*.blob.core.windows.net, and so does the REST job-log endpoint. The egress proxy refuses that host (CONNECT 403). The artifacts aretest-core-timings-N-of-6and the 14-daytest-core-timing-table.measure-test-shard-timings.mjs --diff --capturescannot be fed from here.Test Coreaggregator job echoes the merged top-20 table, and says whether spec was measured or replayed;readTestBudget(text, label)is exported atscripts/measure-test-shard-timings.mjs:1264: holds (at8d05456cb).Tests
All local results are at
ccb64dc967, the PR head.declaredBudgetInTree('@objectstack/spec', FILE)with the vitest-printed paths. It gave 940, 410, 50 and 30, andnullforcompliance-families-retirement.test.ts.whole-packge importis refused atalias-typo:2, not skipped.os-verify-lock.sh,--project local --maxWorkers=2, default reporter), all VERDICT command-exit 0:alias-integrity.test.ts20/20 (18.1 s);eager-entry-import.test.ts22/22 (15.3 s);check-liveness.test.ts71/71 (82.4 s).build-schemas-check-mode.test.tswas not run locally: about 900 s on this box, for a comment-only change. CI runs it in therepoproject.Gates
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 77 commands atccb64dc967: 4 paths, +4 / -0. All 77 ran in sequence, and each exit was recorded before any pipe.pnpm --filter @objectstack/lint run check:doc-formula-expressionsfirst exited 3 (PREREQUISITE NOT MET, formula and lint not built). Afterturbo run build --filter=@objectstack/formula --filter=@objectstack/lintit re-ran and exited 0.pnpm check:dual-build-cjs-loadsandpnpm check:lean-entry-closureboth exit 3 (PREREQUISITE NOT MET). They load other packages' builtdist/(hono, account, objectql) and cannot read a test-file comment. CI runs both.--ran:✓ dispatch-gates --ran: 77 derived famil(ies) accounted for — 75 run, 2 NOT-MEASURED (2 DERIVED from a recorded exit 3).pnpm check:dev-prereqs, andeslint --no-inline-configon the 4 files.Publish
Nothing publishes. A packed
@objectstack/spec(18.0.0-next.1,npm pack --dry-run) lists 2,092 files: 0*.test.ts, 0 underscripts/, and none of the four files. The positive control,src/data/field.zod.ts, is present. The PR therefore carriesskip-changeset, not a changeset.Acceptance notes (not filed)
compliance-families-retirement.test.tsread 5.1 to 7.7 s in the three executed runs, against the card's 14.6 s. It is not declared, and it stays on test budget (domain:spec): 26 test file(s) over 10 s of wall in the hourly full battery (Part of #23151) #23180's list until the next refresh list decides it. Carrier: test budget (domain:spec): 26 test file(s) over 10 s of wall in the hourly full battery (Part of #23151) #23180.Generated by Claude Code