From a49335b4f6e8f332682e3789f3c5fbea74364da1 Mon Sep 17 00:00:00 2001 From: 4gray Date: Wed, 14 Oct 2026 01:51:25 +0200 Subject: [PATCH] perf(web): allow J1's one-tick lazy-chunk race in the first-card tick baseline After merging #1931 (Angular Material off the startup path) the Performance journeys job read renderer.cdTicksToFirstCard 5, 5, 5, 5, 6: the lazily loaded chunk resolves on either side of a render. All 15 iterations before it read 5. The baseline stays 5 with one tick of slack and a note; a return towards zone.js levels (31) still fails, and the idle and first-page tick baselines stayed exact in the same run. Co-Authored-By: Claude Opus 5.5 --- docs/architecture/performance-journeys.md | 9 ++++++--- docs/architecture/zoneless-migration.md | 3 ++- tools/performance/journey-baselines.json | 3 ++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/architecture/performance-journeys.md b/docs/architecture/performance-journeys.md index c2e61aa69..cc211beb1 100644 --- a/docs/architecture/performance-journeys.md +++ b/docs/architecture/performance-journeys.md @@ -1445,9 +1445,12 @@ Not enforced, with the reason: - J3 `renderer.cdTicksToPlaying` (7 or 8) and J4 `renderer.cdTicksToResults` (10 or 11): not identical even zoneless; the player's and the search debounce's events land in one or two ticks. J1 - `renderer.cdTicksToFirstCard` (5), `renderer.cdTicksIdle30s` (3) and J2 - `renderer.cdTicksToFirstPage` (9) are enforced since the zoneless flip - (#1929), identical in all 15 iterations of its three dispatched runs. + `renderer.cdTicksIdle30s` (3) and J2 `renderer.cdTicksToFirstPage` (9) are + enforced exactly since the zoneless flip (#1929), identical in all 15 + iterations of its three dispatched runs. J1 `renderer.cdTicksToFirstCard` + read 5 in those 15 too, but after #1931 moved Angular Material off the + startup path one iteration in six read 6: the lazy chunk resolves on either + side of a render. It is enforced at 5 with `slack: 1`. - J2 `renderer.domMutationsToFirstPage`: 1,602 or 1,603 between runs of recent commits. - J3 `renderer.ipcCallsToPlaying` (4 or 5) and diff --git a/docs/architecture/zoneless-migration.md b/docs/architecture/zoneless-migration.md index 4833bd5e7..29df7c239 100644 --- a/docs/architecture/zoneless-migration.md +++ b/docs/architecture/zoneless-migration.md @@ -307,7 +307,8 @@ Build `electron-performance` and run the journeys as described in `renderer.cdTicksToFirstPage` and `renderer.cdTicksToPlaying` before and after. Until the flip, while zone.js was on, removing Eager did not change the number of ticks, only the work per tick. Since the flip (#1929) -`renderer.cdTicksToFirstCard` (5), `renderer.cdTicksIdle30s` (3) and +`renderer.cdTicksToFirstCard` (5, with one tick of slack for the lazy +Material chunk since #1931), `renderer.cdTicksIdle30s` (3) and `renderer.cdTicksToFirstPage` (9) are ratchet baselines: a change that adds a tick to launch, to the idle dashboard or to opening a source fails the journeys job. diff --git a/tools/performance/journey-baselines.json b/tools/performance/journey-baselines.json index ce7c6cecf..e08e48e0d 100644 --- a/tools/performance/journey-baselines.json +++ b/tools/performance/journey-baselines.json @@ -61,7 +61,8 @@ "renderer.cdTicksToFirstCard": { "value": 5, "unit": "ticks", - "slack": 0, + "slack": 1, + "note": "one-tick race since #1931 moved Angular Material off the startup path: 5 in all 15 iterations of the three dispatched runs before it, 5, 5, 5, 5, 6 in #1929's journeys job after merging it (https://github.com/4gray/iptvnator/actions/runs/38476954719/job/115583649036)", "updatedAt": "2026-10-13", "evidencePr": 1929, "evidenceRun": "https://github.com/4gray/iptvnator/actions/runs/38359088033",