Comfy-Org / Comfy-Org/ComfyUI_frontend
ADR 0016: record the Nodes 2.0 retention decisions that live only in the design thread
- Dominant language
- TypeScript
- Stars
- 2k
- Forks
- 702
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 490
Description
ADR 0016 (`docs/adr/0016-renderer-owned-node-visibility-and-level-of-detail.md`, landing on #15031) documents the retention/LOD design well, but six conclusions from the design discussion are not in it. Christian asked explicitly that the thread's conclusions land in an ADR "for future agents"; these are the parts a future maintainer cannot read off the code.
Detail and suggested wording is in the approval on #15405. Summary:
1. **Chrome is the weakest platform for the chosen default.** KeepAlive is "slower on chrome, but close on all other browsers", and the team's daily drivers are Zen, qutebrowser and Firefox while users are predominantly on Chrome. The Evidence section currently lists Chromium/Firefox/WebKit as uniformly improved. Anyone triaging a Chrome-only perf report needs to know this was the known-weakest platform, accepted deliberately, and under-represented in dogfooding.
2. **Why KeepAlive won.** The ADR implies destroy-offscreen lost on performance. It did not — virtualization measured slightly faster. It lost on maintainability (no `mounted`/`unmounted`, component state survives) and on being the safer default.
3. **The recorded dissent and the remediation order.** The argued position was to keep the virtualization model and fix where it breaks down — overscan, hysteresis/buffered visibility regions, retained rendering — rather than revert the architecture. Also "buffered visibility regions rather than per-node `isInViewport`", noted as partly started in `layoutStore`.
4. **Memory cost is unquantified.** The Negatives read as a measured, accepted cost; it was never measured.
5. **The setting.** `Comfy.VueNodes.ViewportKeepAlive` is a new id rather than a redefinition of the existing virtualization boolean, because that setting had been redefined mid-discussion to select between unmount and keep-alive and no unmount mode exists on the branch. Worth one line so it is not re-litigated.
6. **ECS relationship** is unstated. Given ADR 0008, say it even if the answer is "port deferred".
Also structural: ADR 0016 exists only on #15031, while #15405 is what introduces the KeepAlive architecture and is its base. If #15405 merges first the decision lands in `main` undocumented. Both PRs are approved with the condition that they land together, which resolves this — but if that changes, the ADR needs to move.
Related: #15409 (the perf baselines the Evidence section would otherwise be corroborated by have not been written since March).
Contributor guide
Assessment
This issue has not been assessed yet.