Skip to content

v1.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Sep 13:30
c6549b3

Minor Changes

  • #215 85054d1 - Add the allocation gate. A GC-pressure regression that allocates hard but costs little CPU passed every
    gate before; now alloc-diff <baseline> <current> --fail-on-regression gates on net allocated bytes
    (mirroring cpu-diff), and assert --max-alloc-mb <mb> gates the total against a budget. Both read an
    --target node --alloc recording; a recording with no allocation model is a loud n/a-FAIL, never a
    silent pass, and an alloc-diff refuses across an incompatible workload/lane/capture.

    The gate floor scales with the workload, the same as cpu-diff: max(--noise-floor MB, --noise-pct% of the baseline), default max(1 MB, 25%), since sampled byte totals are ~15-20% directional. New view
    AllocDiffResult.

  • #213 d62f653 - assert gains --format json|toon, emitting a typed AssertView: a row per threshold (axis,
    budget, measured value or null, verdict pass/fail/n-a-fail, plus the routed member on a
    run-group), the overall passed, and the violations. A CI PR-comment script now consumes the gate
    verdict structurally instead of scraping the ASCII table. The exit code is unchanged (0 = passed, 1 =
    any failed), so a --format json gate fails the build exactly as the human report does.

  • #212 1af338b - cpu-diff --fail-on-regression: the noise floor now scales with the workload. The net JS self-time
    must clear max(--noise-floor ms, --noise-pct% of the baseline), default max(0.5 ms, 15%). The old
    fixed 0.5 ms floor false-reds byte-identical code more as the workload grows (measured ~2% at a 5 ms
    workload, ~40% at 220 ms / --iterations 20), because summed self-time grows while the floor stays
    absolute; the percentage term tracks it, so identical code stays green at any iteration count while a
    30%+ regression on a small workload still fails.

    New flags --noise-floor <ms> and --noise-pct <n> widen (or tighten) the two terms; CpuDiffResult
    JSON now carries noisePct and the effective gateFloorMs.

  • #219 c25e640 - Keep the timing series for repeated named measures in capture order and expose it
    through query span --format json|toon. The timing block uses
    sampleUnit: "occurrence", since one iteration can produce several measures with the same name.
    The profile bar keeps its actual lower-median occurrence; its slices are not averaged.

  • #218 f230801 - Expose run and driver-step timing samples through query span --format json|toon.
    The exported SpanTiming type names each sample's clock and boundary and keeps
    measured statistics separate from the profiled bar window. Run-group members carry
    their own timing blocks. Missing samples remain null.

Patch Changes

  • #209 ec6a66e - Bot-wall detection no longer forces a layout flush while it inspects a page. The collector reads
    iframe viewport coverage through an IntersectionObserver and the near-empty-DOM signal through
    textContent, instead of getBoundingClientRect/innerText, and the on-ramp inspection runs outside
    the wpd:run window. On a page that keeps layout dirty this drops a few spurious layout/style counts
    that the inspection previously added to the run span. Detection results are unchanged.

  • #211 2b6eaef - Add WPD_INP_ENTRY_WAIT_MS to raise the bounded in-page drain that a step waits for a trusted
    interaction's Event Timing entry. The default stays 250ms; a genuinely slow host, where the entry's
    task slips later, can extend it (whole ms) so per-step INP still lands. No change to default behaviour
    or output.

  • #217 f541c48 - A stale latest now explains itself instead of surfacing a raw ENOENT on an internal path. When the
    artifact the pointer names has been deleted, every consumer verb says which one is gone (recording,
    CPU/allocation profile, or run-group manifest), shows its path the way the reports do, and names the
    fix: record again, or pass an explicit path. A deleted run-group member names the member.