Skip to content

perf(ci): correct pack hints from measured stripe walls#109899

Merged
steipete merged 1 commit into
mainfrom
claude/ci-pack-corrections
Jul 17, 2026
Merged

perf(ci): correct pack hints from measured stripe walls#109899
steipete merged 1 commit into
mainfrom
claude/ci-pack-corrections

Conversation

@steipete

Copy link
Copy Markdown
Contributor

What Problem This Solves

First measured feedback loop after #109769: the compact PR plan's packing tail dropped 419s -> 299s, but the new tail bin (compact-small-11) was overfilled because core-unit-fast-isolated actually costs 78.6s on a 4 vCPU runner against a 25s hint — fork-per-file isolation parallelizes poorly on the small class. Unit-fast stripes also measured far cheaper than hinted (~25-37s vs 100/60) and tooling stripes measured 71-87s.

Why This Change Was Made

Hint drift directly sets PR wall time now that packing is cost-aware; these are the first corrections from real post-landing group walls (parsed from [shard:*] timestamps in compact run 29564411446).

User Impact

Compact PR bins repack closer to the 220s target: the isolated shard moves to the 8 vCPU class (measured ~50s there), and honest stripe hints stop the packer from overfilling small bins. Expected compact tail: ~250s -> ~230s and better balance; no coverage or topology changes.

Evidence

  • Group walls measured from compact run 29564411446: core-unit-fast-isolated 78.6s (4 vCPU), core-unit-fast-2 36.7s, core-tooling-1..4 87/80/82/71s, core-tooling-isolated 44.6s.
  • core-unit-fast-isolated joins KEEP_LARGE_NODE_TEST_RUNNER; verified both plans now route it to blacksmith-8vcpu (full-plan shard runner and compact bin class).
  • Planner suite green: ci-node-test-plan, ci-changed-node-test-plan, ci-workflow-guards, ci-run-node-test-shard (126 passed, 1 skipped). The compact test now only requires stripe presence — with honest hints, cheap stripes legally co-locate in one bin.
  • Codex autoreview (gpt-5.6-sol, xhigh): clean.

Group walls measured from compact run 29564411446 (post-#109769):
core-unit-fast-isolated runs 78.6s on 4 vCPU because fork-per-file
isolation parallelizes poorly there; pin it to the 8 vCPU class where
the same segment runs ~50s. Unit-fast stripes measure ~25-37s (hinted
100/60) and tooling stripes 71-87s; refresh both so the packer stops
overfilling small bins (the 299s compact tail this run produced).
Cheap stripes may now co-locate in one bin, so the compact test only
requires their presence.
@openclaw-barnacle openclaw-barnacle Bot added scripts Repository scripts size: XS maintainer Maintainer-authored PR labels Jul 17, 2026
@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. labels Jul 17, 2026
@clawsweeper

clawsweeper Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed July 17, 2026, 6:02 AM ET / 10:02 UTC.

Summary
The PR refreshes compact CI shard runtime hints from observed walls, promotes core-unit-fast-isolated to the 8-vCPU runner class, and permits inexpensive stripes to share compact bins.

PR surface: Tests -1, Other +5. Total +4 across 2 files.

Reproducibility: yes. at the evidence level: the predecessor workflow timestamps identify the overfilled bin and quantify the hint mismatch, though this review could not independently replay that historical run.

Review metrics: none identified.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🌊 off-meta tidepool
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Confirm the completed exact-head compact plan routes core-unit-fast-isolated to 8 vCPU and improves or preserves the packing tail.

Risk before merge

  • [P1] The supplied exact-head compact CI jobs were still running, so the expected tail reduction and final bin balance were not yet independently confirmed on this head.

Maintainer options:

  1. Confirm exact-head packing (recommended)
    Wait for the compact node jobs to finish and verify the generated runner classes and tail walls before merging the calibration.
  2. Accept iterative calibration
    Merge from the predecessor-run measurements if maintainers accept that runtime hints will be refined through subsequent observed runs.

Next step before merge

  • [P1] No repair defect is identified; this protected maintainer-labeled PR needs normal exact-head CI completion and owner review rather than fix dispatch.

Security
Cleared: The diff changes deterministic CI planner constants and tests without adding dependencies, permissions, secrets access, downloads, or third-party execution.

Review details

Best possible solution:

Keep the canonical cost-aware packer and merge the measured hint update after exact-head compact CI confirms the isolated shard uses 8 vCPU and the resulting bin walls remain near the target.

Do we have a high-confidence way to reproduce the issue?

Yes at the evidence level: the predecessor workflow timestamps identify the overfilled bin and quantify the hint mismatch, though this review could not independently replay that historical run.

Is this the best way to solve the issue?

Yes. Updating the canonical measured hints and runner-class exception is narrower and more maintainable than changing shard topology or introducing a second packing path.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 44f20956e330.

Label changes

Label changes:

  • add P3: This is narrowly scoped internal CI performance tuning with no product runtime or user-data impact.
  • add merge-risk: 🚨 automation: The changed cost hints and runner-class assignment directly control required CI job packing and could lengthen or imbalance checks if the calibration is inaccurate.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: The protected maintainer label makes the external-contributor proof gate inapplicable; predecessor-run wall timestamps still provide useful operational evidence.

Label justifications:

  • P3: This is narrowly scoped internal CI performance tuning with no product runtime or user-data impact.
  • merge-risk: 🚨 automation: The changed cost hints and runner-class assignment directly control required CI job packing and could lengthen or imbalance checks if the calibration is inaccurate.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: The protected maintainer label makes the external-contributor proof gate inapplicable; predecessor-run wall timestamps still provide useful operational evidence.
Evidence reviewed

PR surface:

Tests -1, Other +5. Total +4 across 2 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 1 1 2 -1
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 1 13 8 +5
Total 2 14 10 +4

What I checked:

Likely related people:

  • steipete: Authored the merged striping change and this immediate measured calibration on the same planner and test paths. (role: introduced behavior and recent area contributor; confidence: high; commits: 543244e7bbdb, 6e987d8e98aa; files: scripts/lib/ci-node-test-plan.mjs, test/scripts/ci-node-test-plan.test.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@steipete
steipete merged commit 4880231 into main Jul 17, 2026
146 of 155 checks passed
@steipete
steipete deleted the claude/ci-pack-corrections branch July 17, 2026 10:08
@steipete

Copy link
Copy Markdown
Contributor Author

Merged via squash.

steipete added a commit that referenced this pull request Jul 17, 2026
…walls

Second calibration pass after the cli-runner reliability whale fix
(#109772) and the stripe-wall correction (#109899): the compact group
hints drifted below loaded-fleet reality, so FFD packed the heaviest
groups into ~300s bins (checks-node-compact-large-2 at 242-314s shard
wall, up to 389s job wall) while tail bins idled.

Method: parsed [shard:*] begin/end timestamps from all 147 compact job
logs across seven green CI runs whose head SHAs carry the whale-fix
hints (runs 29605136624, 29605203485, 29605983019, 29606701461,
29611308972, 29611457693, 29611500865; 7 samples per group). Each hint
is the per-group mean after dropping cache-warm/contention outliers
outside [median/1.5, median*1.5].

Packing cap: with honest loaded walls a 220s cap no longer fits either
pool (adds one job to each); 235s keeps the same job count (6 large +
15 small + dist) and flattens the ceiling. Median job setup overhead
measured 60s (p90 87s), so a 235s bin stays near the 5-minute PR
budget.

Predicted bin shard walls (sum of measured group means):
  before: large 220/301/200/219/257/112, small heavies 251/235/218/217/215, max 301
  after:  large 235/232/229/228/228/156, small heavies 236/234/234/234/233, max 236
  large-pool max/mean 1.38 -> 1.08

Biggest hint deltas (old -> new): startup-core 98->156, core-tooling-4
71->125, core-unit-fast-isolated 50->90, core-tooling-3 82->108,
runtime-server 14->29, storage-state 55->70, media-ui 113->124,
tui-pty 103->116, runner-cli-1 18->8, unit-src-security 108->95.

Exclusive bins keep their 150s cap and 5-bin count: tui-pty (116) no
longer shares a bin with tooling-isolated (166s combined measured);
FFD now pairs tooling-2 with tooling-isolated at 144s.

STRIPE_FILE_SECONDS_HINTS left unchanged: measured stripe walls sit in
exclusive bins far below the packing ceiling (tooling stripes
94-125s), and refitting per-file hints would reshuffle stripe
membership and invalidate the measured group means above.
steipete added a commit that referenced this pull request Jul 17, 2026
…walls (#110172)

Second calibration pass after the cli-runner reliability whale fix
(#109772) and the stripe-wall correction (#109899): the compact group
hints drifted below loaded-fleet reality, so FFD packed the heaviest
groups into ~300s bins (checks-node-compact-large-2 at 242-314s shard
wall, up to 389s job wall) while tail bins idled.

Method: parsed [shard:*] begin/end timestamps from all 147 compact job
logs across seven green CI runs whose head SHAs carry the whale-fix
hints (runs 29605136624, 29605203485, 29605983019, 29606701461,
29611308972, 29611457693, 29611500865; 7 samples per group). Each hint
is the per-group mean after dropping cache-warm/contention outliers
outside [median/1.5, median*1.5].

Packing cap: with honest loaded walls a 220s cap no longer fits either
pool (adds one job to each); 235s keeps the same job count (6 large +
15 small + dist) and flattens the ceiling. Median job setup overhead
measured 60s (p90 87s), so a 235s bin stays near the 5-minute PR
budget.

Predicted bin shard walls (sum of measured group means):
  before: large 220/301/200/219/257/112, small heavies 251/235/218/217/215, max 301
  after:  large 235/232/229/228/228/156, small heavies 236/234/234/234/233, max 236
  large-pool max/mean 1.38 -> 1.08

Biggest hint deltas (old -> new): startup-core 98->156, core-tooling-4
71->125, core-unit-fast-isolated 50->90, core-tooling-3 82->108,
runtime-server 14->29, storage-state 55->70, media-ui 113->124,
tui-pty 103->116, runner-cli-1 18->8, unit-src-security 108->95.

Exclusive bins keep their 150s cap and 5-bin count: tui-pty (116) no
longer shares a bin with tooling-isolated (166s combined measured);
FFD now pairs tooling-2 with tooling-isolated at 144s.

STRIPE_FILE_SECONDS_HINTS left unchanged: measured stripe walls sit in
exclusive bins far below the packing ceiling (tooling stripes
94-125s), and refitting per-file hints would reshuffle stripe
membership and invalidate the measured group means above.
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 18, 2026
)

Group walls measured from compact run 29564411446 (post-openclaw#109769):
core-unit-fast-isolated runs 78.6s on 4 vCPU because fork-per-file
isolation parallelizes poorly there; pin it to the 8 vCPU class where
the same segment runs ~50s. Unit-fast stripes measure ~25-37s (hinted
100/60) and tooling stripes 71-87s; refresh both so the packer stops
overfilling small bins (the 299s compact tail this run produced).
Cheap stripes may now co-locate in one bin, so the compact test only
requires their presence.
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 18, 2026
…walls (openclaw#110172)

Second calibration pass after the cli-runner reliability whale fix
(openclaw#109772) and the stripe-wall correction (openclaw#109899): the compact group
hints drifted below loaded-fleet reality, so FFD packed the heaviest
groups into ~300s bins (checks-node-compact-large-2 at 242-314s shard
wall, up to 389s job wall) while tail bins idled.

Method: parsed [shard:*] begin/end timestamps from all 147 compact job
logs across seven green CI runs whose head SHAs carry the whale-fix
hints (runs 29605136624, 29605203485, 29605983019, 29606701461,
29611308972, 29611457693, 29611500865; 7 samples per group). Each hint
is the per-group mean after dropping cache-warm/contention outliers
outside [median/1.5, median*1.5].

Packing cap: with honest loaded walls a 220s cap no longer fits either
pool (adds one job to each); 235s keeps the same job count (6 large +
15 small + dist) and flattens the ceiling. Median job setup overhead
measured 60s (p90 87s), so a 235s bin stays near the 5-minute PR
budget.

Predicted bin shard walls (sum of measured group means):
  before: large 220/301/200/219/257/112, small heavies 251/235/218/217/215, max 301
  after:  large 235/232/229/228/228/156, small heavies 236/234/234/234/233, max 236
  large-pool max/mean 1.38 -> 1.08

Biggest hint deltas (old -> new): startup-core 98->156, core-tooling-4
71->125, core-unit-fast-isolated 50->90, core-tooling-3 82->108,
runtime-server 14->29, storage-state 55->70, media-ui 113->124,
tui-pty 103->116, runner-cli-1 18->8, unit-src-security 108->95.

Exclusive bins keep their 150s cap and 5-bin count: tui-pty (116) no
longer shares a bin with tooling-isolated (166s combined measured);
FFD now pairs tooling-2 with tooling-isolated at 144s.

STRIPE_FILE_SECONDS_HINTS left unchanged: measured stripe walls sit in
exclusive bins far below the packing ceiling (tooling stripes
94-125s), and refitting per-file hints would reshuffle stripe
membership and invalidate the measured group means above.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintainer Maintainer-authored PR merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. scripts Repository scripts size: XS status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant