Skip to content

ci(test-shards): refresh the Test Core dataset and cut the CLI into 4 slices on plain-sum placement, and pin the whole-package leg - #26186

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

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

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Elon · project thread

Part of #25870. The card stays open until its after-landing reading: the first 10 full merge-queue Test Core builds with no load-shaped red.

Clause-②: no
Metadata-protocol: none

What

This is the second attempt at #25870, after #25968 was reverted by #26077. It keeps only the parts of #25968 that did not cause the merge-queue reds. Two files change.

  • scripts/test-shard-timings.json: the 2026-10-26 refresh (14 runs, newest 40272142430). The file is byte-identical to the one ci(test-shards): place Test Core bins by predicted wall, and cut the CLI into 4 slices on the refreshed dataset #25968 carried (git diff f36f6190 HEAD -- scripts/test-shard-timings.json is empty).
  • scripts/partition-test-shards.mjs:
    • FILE_SHARDED_PACKAGES cli 3 → 4, and PREVIOUS_FILE_SHARDED_PACKAGES = {cli: 3}, so the refresh lane can still decode the 3-slice summaries it retains. The derivation table for 4 sits next to the map.
    • Placement does not change. partition() stays the plain-sum LPT. There is no wall model and no loadOf/wallOf.
    • New pin 3d in --self-test (WHOLE_LEG_CAP_SECONDS, LOAD_SENSITIVE_APART, wholeLegProblems()), described below.

No .github/** edit, so this is not Tier H, and no governed path is touched.

Why

Shard table: planRun() on the full list

These numbers come from turbo ls --output=json at 365fe5e with --exclude @objectstack/dogfood, run through planRun() exactly as ci.yml calls it. "whole" is the shard's whole-package seconds with the package count in brackets. "slice" is the CLI slice's seconds. "step" is the #25376 wall model (whole / 2.9 + slice), included for reference only.

shard main (plain sum, 10-23 dataset, cli ×3) this PR (plain sum, 10-26 dataset, cli ×4)
1/8 1866 (6) · step 643 1499 (16) · step 517
2/8 1866 (11) objectql · 643 1501 (10) · 518
3/8 900 (8) + cli 1/3 966 · 1276 826 (9) + cli 1/4 674 · 959
4/8 900 (9) + cli 2/3 966 · 1276 827 (9) + cli 2/4 674 · 959
5/8 899 (8) + cli 3/3 966 plugin-security · 1276 826 (9) + cli 3/4 674 · 959
6/8 1866 (10) · 643 826 (9) + cli 4/4 674 plugin-security · 959
7/8 1868 (11) · 644 1501 (10) objectql · 518
8/8 1866 (19) · 643 1500 (10) · 517

The dispatch set three conditions, and all three hold:

Bin totals are 1499–1501 s (max/mean 1.00×), inside the 2697.45 s density cap. #25968's layout for comparison: 186/185/185/185 + 674 s slices, and 2141/2139/2141/2142 s whole.

Pin 3d: the whole-package leg cap and the load-sensitive pair

Pins 2–3c grade bin sums and slice counts, and #25968's 2141 s layout passed all of them. Pin 3d grades what actually broke, on the committed dataset's full list as CI splits it:

The battery has 5 cases: the committed-dataset grade, which first proves the split's whole-leg sums add up to the dataset's whole seconds, and 4 fixtures (pass, pair together, over cap, member missing). The battery roster floor goes from 15 to 16.

Tests

Gates

  • node scripts/pm/dispatch-gates.mjs --commands (merge base 365fe5e): all 35 derived families exit 0. dispatch-gates.mjs --ran reconciles: 35 derived, 35 run, 0 NOT-MEASURED.
  • Serial check before pushing: none of the 36 other open PRs on this repo touches scripts/partition-test-shards.mjs or scripts/test-shard-timings.json. I checked each with git diff --name-only origin/main...pull/N/head.
  • Everything else is left to this PR's CI.

Acceptance notes

🤖 Generated with Claude Code

https://claude.ai/code/session_01CLvWYcHLpbpu8X8PvozD7F

… slices, keep plain-sum placement, and pin the whole-package leg

Retry of #25968 without its wall-model placement (reverted by #26077):
the 2026-10-26 dataset refresh, `@objectstack/cli` at 4 slices with
PREVIOUS_FILE_SHARDED_PACKAGES {cli: 3}, and pin 3d -- no shard's
whole-package sum past 1868s, and objectql and plugin-security never
whole on one shard.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CLvWYcHLpbpu8X8PvozD7F
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 26, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对

Verdict: ACCEPT at head 6e20eda8e1c2ddc2035d4273b650d68d7d80842f. This is not governed: check-governed-merges --pr 26186 reports 0 of 2 paths on the register, and the size is 791 changed lines, under 3000. Ordinary queue landing applies, and the seat flips it now.

Against the dispatch order (dispatch-25870-retry.md)

Seat's own reading at the head (detached worktree)

  • node scripts/partition-test-shards.mjs --self-test exits 0 with this output:
    75 measured packages -> 78 shard items, 8 shards, max/mean 1.00x <= 1.3x, bins 1499.31/1501.21/1499.98/1500.86/1499.98/1500.12/1501.22/1500.45s, whole legs 1499/1501/826/827/826/826/1501/1500s within 1868s, file-level slices: @objectstack/cli x4.

Gates at head 6e20eda

  • 37 success and 20 skipped.
  • The one failure row is job 121652694439, "Part-of PR must not also close its card". That run read the 15:05Z body, which still had a closing keyword. The body was reworded through a relay issue_patch, and the re-run on the edited event (job 121654491671) passed at this same head. The current body has no closing keyword.

After landing (owed on #25870)


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants