Skip to content

Revert "ci(test-shards): grade the Test Core split on predicted shard wall and slice the CLI per run (#22415)" - #22435

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-22075-revert-shard-wall-split
Oct 9, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-22075-revert-shard-wall-split

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #22075
Clause-②: no

Reverts PR #22415 (c64130bafa), made with git revert --no-edit c64130bafa. Since it landed, full runs on main and in the merge queue red Test Core at the step "Check this shard's timing drift", while the step "Run this shard's tests" passes on the same shard. Each red removes a PR from the queue and rebuilds every group behind it.

Diagnosis

From the seat's revert-round claim (6076043190, "Why a revert") and the domain:services seat 2 data note (6076007681) on the card:

  • PR ci(test-shards): grade the Test Core split on predicted shard wall and slice the CLI per run #22415 packs about 2,000–3,000 s of predicted windows onto each whole-package shard. The drift step's prediction is the dataset's per-package windows, and those were measured on shards carrying about 1,400 s.
  • Under 4-wide concurrency each package's window inflates on the denser shards: objectql 1.84x, plugin-security 1.80x, rest 1.61x, plugin-auth 1.87x (seat claim). The drift step's red is 1.5x.
  • The red is not deterministic. Some groups pass because the shards sit at the line. The dense packing is the part that misses, and a fix forward needs a contention-aware design. That design is the card's next round, not a hotfix.

Red full runs. Each was re-read from the jobs API in this round. In every one, the drift step is failure and "Run this shard's tests" is success on the same shard.

run event red shard(s)
37894048074 push, main at e02833c240 4/6, 6/6
37894050587 merge_group, PR #22412 on e02833c240 6/6
37893672824 merge_group, PR #22426 on 628df0cc 5/6
37894053453 merge_group, PR #22426 on b0a4aed6 5/6
37892033675 merge_group, PR #22396 on e02833c2 6/6

The drift line from 37894048074, Test Core (6/6), job 113701465749:

shard-timing-drift: DRIFT -- Test Core (6/6), 3992.4s measured vs 2467.1s predicted across 13 package(s) = 1.62x (warning past 1.3x, red past 1.5x).
    @objectstack/objectql: predicted 551.9s, measured 1054.9s (1.91x, +503.0s)
    @objectstack/rest: predicted 508.3s, measured 865.2s (1.70x, +356.9s)
    @objectstack/plugin-security: predicted 391.5s, measured 713.1s (1.82x, +321.6s)

The data note's rows: 37892033675 shard 6/6 read 3028.0 s against 1962.3 s (1.54x), and 37893672824 shard 5/6 read 2904.1 s against 1828.0 s (1.59x).

What full runs read before c64130bafa (the state this restores)

  • main push 37888117205 (27a8b33dec): the drift step is success on all six shards.
    • Test Core (1/6): 1885.9s measured vs 1766.8s predicted across 4 package(s) = 1.07x.
    • Test Core (6/6): 2136.1s measured vs 1766.1s predicted across 13 package(s) = 1.21x.
  • main push 37883152892 (abd254508b): the drift step is success on all six shards. These are the step conclusions from the jobs API; the log lines were not read.
  • merge_group 37875522518 (the PR fix(service-automation, objectql): runAs refusal and run-setup warning texts hold on both kernels #22390 group): the drift step is success on all six shards. c64130bafa's own ci.yml comment records shard 1/6 at 1.07x and shard 2/6 at 0.74x there.
  • Same shard, same 13 packages: shard 6/6's prediction rose from 1766.1 s to 2467.1 s under the reverted model, and its ratio went from 1.21x to 1.62x.

Proof

  • Byte identity with the reverted commit's single parent, at head b49b02297d:
    • git diff f05649f6aa HEAD -- .github/workflows/ci.yml scripts/partition-test-shards.mjs prints nothing (0 bytes).
    • The blob ids match at f05649f6aa, at HEAD and on disk: ci.yml 0d2576cbf2, partition-test-shards.mjs a7c6fc76ec.
    • The diff against main is exactly these 2 files, +184/−576.
    • Nothing on origin/main touched either file, or scripts/test-shard-timings.json, after c64130bafa (read again at b9222dc701).
  • Self-test on the reverted tree: node scripts/partition-test-shards.mjs --self-test exits 0:
    partition-test-shards: self-test OK (72 measured packages -> 72 shard items, 6 shards, max/mean 1.00x <= 1.3x, floor 1739s, bins 1771/1773/1772/1772/1772/1771s, file-level slices: none).
    The dataset is unchanged since f05649f6aa.
  • Gates, derived on this diff with node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at b49b02297d: 58 commands.
    • 53 exit 0, including check:stall-guard-budget (Test Core: cap 20m against budget 45m), check:required-contexts, check:shard-attestation and check:nul-bytes.
    • pnpm check:pm-dispatch-gates printed ✓ dispatch-gates self-test: 2011 cases pass. (1071.5 s). It ran in the background, and its exit code was not captured. The verdict line is quoted instead.
    • 4 are NOT MEASURED, exit 3 PREREQUISITE NOT MET (they read built dist/, and this diff touches no package): check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content.
    • Reconciliation, --ran at b49b02297d: ✓ dispatch-gates --ran: 58 derived famil(ies) accounted for — 54 run, 4 NOT-MEASURED (⛔ a FLOOR — 4 derived from exit 3; 1 of 58 recorded no exit code).

Scope

  • Two files: .github/workflows/ci.yml and scripts/partition-test-shards.mjs, both restored to f05649f6aa.
  • No fix forward, no constant tuned, and no self-test case added. The redesign is the card's next round, decided by the owning seat.
  • skip-changeset: root scripts/ and workflows publish nothing.
  • The card stays open. Its post-landing read (6075708656) no longer applies once this lands, because the change it measured is gone.

Acceptance notes

  • The dispatch cited the pre-change drift range as 0.61x–1.07x. That range describes shard 1/6 only: 0.61x–1.05x on eight scheduled main runs, per the restored ci.yml comment, and 1.07x on 37875522518 and 37888117205. Shards 2–6 read higher before the change; shard 6/6 on 37888117205 read 1.21x. That is green, and under the 1.3x warning. Carrier: the seat's redesign brief for the card's next round.

Generated by Claude Code

… wall and slice the CLI per run (#22415)"

This reverts commit c64130b.

Why: PR #22415 packs about 2000-3000 s of predicted windows onto each
whole-package Test Core shard. The dataset's per-package windows were
measured on shards carrying about 1,400 s, and under 4-wide concurrency
each package's window inflates on the denser shards (objectql 1.84x,
plugin-security 1.80x, rest 1.61x, plugin-auth 1.87x). That carries the
shard past the "Check this shard's timing drift" step's 1.5x red while
the test step itself passes.

Red full runs on that partition model:
- main push 37894048074 (e02833c; shards 4/6 and 6/6; 6/6 read
  3992.4s measured vs 2467.1s predicted = 1.62x)
- merge_group builds 37894050587, 37893672824, 37894053453 and
  37892033675

The revert restores .github/workflows/ci.yml and
scripts/partition-test-shards.mjs byte-for-byte to their content at
f05649f, the reverted commit's single parent. A contention-aware
redesign is the next round, not a hotfix.

Claude-Session: https://claude.ai/code/session_0115N1oNnQS5WqofZ2DzaT3q
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added the size/l label Oct 9, 2026
@github-actions github-actions Bot added the ci/cd label Oct 9, 2026
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 9, 2026
@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 9, 2026 07:53
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 9, 2026 07:53
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 9, 2026
Merged via the queue into main with commit 806b03e Oct 9, 2026
39 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-22075-revert-shard-wall-split branch October 9, 2026 08:51
This was referenced Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd 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