fix(adoption): a replaced body stays a reactive host event (#500)

`willUpdate` keys the geometry epoch and render-lifecycle invalidation on
`changed.has('_serverCfg')`. Before #500 every body replacement went through
Lit's accessor and produced that event; the owner wrote its field directly
and the epoch stopped moving on adoption, staging and rollback — the safe
Resize smoke then measured against a stale model (Validate on c360bcc9).
`MutableConfigAdoption` now reports each replaced reference through
`onBodyReplaced`, which the card wires to `requestUpdate(field, previous)`;
echoes and identity-only changes stay silent, exactly as an unchanged
reference never fired the accessor.

Issue: #500
User-Visible: no
This commit is contained in:
claude[bot]
2026-09-10 11:41:16 +00:00
parent 2f41c0b29e
commit 31c2583e46
79 changed files with 14739 additions and 15184 deletions
+2 -2
View File
@@ -212,8 +212,8 @@ export const LOW_HEADROOM_WARNING_BYTES = 15_000;
* `config-adoption.ts` (+~740 Б gzip: владелец идентичности, делегаты хоста
* с harness-сеттерами ревизий, post-write профиль для четырёх путей, которые
* раньше гейт пропускали); дубли в `_loadFromServer`/`_reloadConfigOnly`/
* summary recovery сняты. Измеренный факт 299 718 Б оставляет 582 Б сверху и
* 1 418 Б до нижней границы полосы; общий бюджет 301 066 Б и долг #367 не
* summary recovery сняты. Измеренный факт 299 771 Б оставляет 529 Б сверху и
* 1 471 Б до нижней границы полосы; общий бюджет 301 066 Б и долг #367 не
* меняются.
*/
export const INITIAL_VIEW_GZIP_CEILING = 300_300;