Repository navigation
Conversation
The perf-review Routine reads Measurements from refs/notes/perf. Bundle byte counts carry a per-Benchmark thresholdPercent, so normal feature growth is not a Regression.
Contributor
🤖 CLOSED
GitHub closed this pull request. No further automated Review will run. |
…ed-chunk guard reads deletedChunks, which nuxt-skew-protection records for JavaScript only. A warm local cache can still inflate css counts; CI's cold exports keep stored
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.
❓ Type of change
📚 Description
Depends on harlan-zw/harlan-agent-kit#355 for the threshold semantics. Until that merges, the perf-review Skill still treats any count movement as a Regression.
I want the perf-review Routine watching skilld.dev's bundle, the same way it watches gscdump's engine. This ports the gscdump harness (
run.mjsonly changes its temp prefix,perf-comment.ymlonly its runner) and adapts the two measuring workflows to the desktop pool: both sides are exported withgit archiveinto fresh directories and built throughrun-with-heartbeat. No skew-protection cache is restored, since that copies earlier deploys' chunks into.output. The cases also drop any chunklatest.jsonlists as retained, so a stale local cache cannot inflate a number either.Six count Benchmarks, each with a
thresholdPercent:server/bytesserver/gzip-bytesclient/js-bytesclient/css-bytesclient/chunk-countclient/entry-bytesThese are a first guess. The one feature commit I measured (997bbdf) moved server bytes by +0.065% and client JS by +0.011%, well under all of them. The backfill series should say whether 2% is too loose.
"Gzip bytes of the worker entry" became gzip of the whole server bundle.
.output/server/index.mjsis a 2.4 KB shim that imports every chunk, so its own size tells nothing.Local run, 997bbdf against 39f41f2:
{ "id": "server/bytes", "kind": "count", "unit": "bytes", "repeats": 1, "head": { "min": 10027098, "median": 10027098 }, "parent": { "min": 10020570, "median": 10020570 }, "control": { "min": 10027098, "median": 10027098 }, "deltaPercent": 0.065, "controlPercent": 0, "verified": true }The builds are not fully deterministic. Three builds of the same commit gave identical client numbers, but server bytes moved by up to 3,135 bytes (0.03%) and gzip by up to 529 bytes (0.015%). Two causes: comark-content emits its
raw/*.json.mjscollections in a racy order, and a coldnuxt-og-imagefont cache builds a slightly differentnitro.mjsthan a warm one. Both sides in CI start cold, and both are far under 2%. The harness's control column cannot see this, since it re-reads the same build.perf-reviewjoins.github/routines.ymlinreportmode. It will only report coverage until ten Measurements exist. The controller accepts it on a maintained repository; onlyenabledgates Routine sync.Open question:
perf-comment.ymlruns on the desktop pool too, to matchtest.yml. It only calls the API, so a hosted runner would also do.