Comfy-Org / Comfy-Org/ComfyUI_frontend
ECS retirement condition 5 gates shim removal on an "agreed budget" that was never set
- Dominant language
- TypeScript
- Stars
- 2k
- Forks
- 699
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 490
Description
Retirement condition 5 in the ECS migration plan requires renderer performance to "meet the agreed budget". No budget was ever agreed, and no baseline exists to compare against, so the condition cannot be evaluated.
`docs/architecture/ecs/ecs-migration-plan.md` §3 lists "renderer performance meets the agreed budget" as one of six conditions for retiring a compatibility path per concern. It gates the "legacy layout aliases" retirement (`pos`/`size` on `LGraphNode`).
Measured 2026-08-22 against `feature/ecs-migration` head `08f7232d4bfea282b1901723c7b4c2f156c92f59`:
- `browser_tests/tests/performance.spec.ts` has **19 `recordMeasurement()` calls and 3 `expect`s** (lines 203, 384, 453). None of the three is a frame-time or duration threshold. Line 203 asserts a node moved, line 384 is a zoom-out culling precondition, line 453 waits for an output widget value. The file is a measurement harness, not a gate.
- `.github/workflows/ci-perf-report.yaml:61` sets `continue-on-error: true` on the perf step and `:76` gates the baseline save on `steps.perf.outcome == 'success'`, so a failing perf step suppresses the baseline indefinitely.
- Latest file on the `perf-data` branch: `baselines/perf-20260317T125017Z-a75444d5.json`, committed 2026-03-17T12:50:17Z. Five months with no baseline, immediately before a renderer migration merges.
The pipeline half of this is already filed twice, as #15409 and #15545 (which duplicate each other). This issue is the part neither covers: **the plan cites a budget that was never set.** Fixing the workflow restores measurement; it does not produce a number to meet.
**Needed:**
1. A stated budget for the hot paths the migration touches. Node drag p95, renderer toggle, and link interaction at 200 and 500 nodes are the obvious set, since those are the scenarios `performance.spec.ts` already measures.
2. At least one assertion in `performance.spec.ts` that fails when the budget is exceeded, so the condition has an instrument.
3. Either amend §3 to name the budget document, or mark condition 5 as unevaluable until 1 and 2 land.
Until then, no performance stop condition on this migration can fire, because every threshold is stated against a baseline that does not exist.
Contributor guide
Assessment
This issue has not been assessed yet.