Repository navigation
fix(test-shards): judge pin 3c's slice count through a symmetric 5% band - #30138
Merged
objectstack-fleet[bot] merged 3 commits intoNov 4, 2026
Merged
Conversation
Pin 3c accepted exactly one slice count, so a CLI median moving 20s inside its own run-to-run spread flipped the derived count and redded the weekly generated refresh PR until a hand-written lane PR changed the map. SLICE_COUNT_HYSTERESIS = 0.05 now bands both halves: RAISE refuses only a slice past 1.05 x the serial-floor limit, LOWER only an n - 1 slice at or under 0.95 x it, and a count inside the band passes. The remedy a RAISE names is still the smallest count meeting the bare limit. planShards(), the density cap and pin 3d are unchanged. The self-test gains two in-band passes (each refused with no band) and two out-of-band refusals beside the band's edges; the four existing fixtures keep their verdicts. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ihL2ebbZkr2QAEG1x7UC8
At the band's edge a whole-second slice and band read the same number (773s past 773s); two decimals show which side of the edge it fell. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ihL2ebbZkr2QAEG1x7UC8
…ice-pin-hysteresis
Contributor
Author
|
domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8 席位核对 — ACCEPT ·
|
objectstack-fleet
Bot
deleted the
claude/issue-29826-slice-pin-hysteresis
branch
November 4, 2026 16:32
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 田騏 · project thread
Fixes #29826
Clause-②: no
Metadata-protocol: none
维护者速读
SLICE_COUNT_HYSTERESIS = 0.05。scripts/partition-test-shards.mjs的sliceCountProblems()两个判定分支,其次是自测新增的 4 个带内/带外夹具。node scripts/partition-test-shards.mjs --self-test,预期打印self-test OK ... file-level slices: @objectstack/cli x2。What changes
Option D as ruled in comment 6634084947 on the card. One file:
scripts/partition-test-shards.mjs.SLICE_COUNT_HYSTERESIS = 0.05, commented as the observed noise width of the CLI median.sliceCountProblems()(pin 3c) judges both halves through the band. RAISE refuses only whenweight / n > (1 + h) x limit. LOWER (or Retire) refuses only whenweight / (n - 1)is at or under(1 - h) x limit. A count inside the band passes. Each refusal names the slice, the limit and the band edge, to two decimals. The count a RAISE names is still the smallest one that meets the bare limit, so a raised count lands with margin.planShards()(NEEDED / SPREADS / WITHIN CAP), the density cap and pin 3d are byte-for-byte unchanged.Raise it to 3withone slice is 69.00s, and 122 s / 3 must sayLower it to 2withone slice (61.00s). The balancing-pins battery floor goes from 25 to 29; it now registers 30 cases.FILE_SHARDED_PACKAGES"RE-DERIVED AT 2" paragraph gains one sentence saying why the band exists.Tests
node scripts/partition-test-shards.mjs --self-test: exit 0 on head1c0a83b762.scripts/ablation-replace.mjs, restored to the HEAD blob with an emptygit diff HEAD:Ablation readings (self-test exit code and first failing case)
SLICE_COUNT_HYSTERESIS = 0limitlimitSLICE_COUNT_HYSTERESIS = 0.07SLICE_COUNT_HYSTERESIS = 0.1Acceptance notes
@objectstack/metadata-protocol566.50 s; limit 736.45 s). I called the exportedsliceCountProblems()on the dataset binned the way the self-test bins it, varied only the CLI weight on a 0.01 s grid, and they agree with the ruling's figures. Map 2 is accepted for CLI 699.63 to 1546.54 s (ruling: up to 1546.5). Map 3 is accepted for CLI 1399.26 to 2319.81 s (ruling: over 1399.3 to 2319.8).one slice is 773.30s -- past 1.3x ... (567s, so 736.45s) by more than its 5% band (773.27s) ... Raise it to 3.At CLI 1399.2 s with map 3:at 2 one slice (699.60s) ... with more than its 5% band to spare (699.63s). Lower it to 2.Verification
All 31 commands that
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderives for this diff exited 0. The exit codes were captured before any pipe, and--ranreconciliation reports31 derived, 31 run, 0 NOT-MEASURED, 0 UNRUN(a derived zero: all 31 recorded an exit code).pnpm check:pm-dispatch-gates(fast tier, 1945 cases) also exited 0. The CI-onlyPlan Test Core shardsstep and the type-check lanes are not measured locally; CI runs them.skip-changeset: the diff touches only rootscripts/, which no package publishes.origin/mainwas merged once before opening.Session: https://claude.ai/code/session_017ihL2ebbZkr2QAEG1x7UC8
🤖 Generated with Claude Code