v1.50.4: one model builder for both cards (HP-1503-01)

The full card's _buildModel() was a hand-copied twin of spaceModels(), and
the twin missed the legacy-store fallbacks v1.50.3 gave the shared builder —
the same broken store rendered recovered in the static card and as
viewBox='0 0 0 0' with negative-width rects in the main one. The divergence
of the duplicates IS the bug, so the duplicate is gone: the full card calls
spaceModels() and only swaps the raw plan url back in (its signing flow must
not bake a signed url into a memoized model — 2026-07-27).

New smoke_legacy_geometry runs the audit's exact vector (zero viewport +
negative rect) through both models and both DOM trees and asserts parity:
full-canvas fallback, normalised rectangle, no negative SVG attributes.
Inventory: 140 / 51 / 43 / 65.
This commit is contained in:
Matysh
2026-07-29 08:33:10 +03:00
parent 9da96abb05
commit 9f36b39379
13 changed files with 121 additions and 40 deletions
+13
View File
@@ -6,6 +6,19 @@
> **Правило проекта:** оба файла пополняются в одном коммите с самим
> изменением — как и остальная документация (см. docs/STATUS.md).
## v1.50.4 — 2026-07-29
**По ревью v1.50.3**
- **Обе карточки строят модель одним кодом (HP-1503-01).** Полная карточка
носила рукописную копию общего построителя модели, и копия не получила
фолбэки для legacy-store из v1.50.3 — один и тот же битый store в
статической карточке рендерился починенным, а в основной — пустым
`viewBox="0 0 0 0"`. Дубликат удалён: полная карточка вызывает общий
построитель и лишь подменяет сырой url плана, который нужен её подписи.
Новый смок прогоняет точный вектор аудита через обе модели и оба
DOM-дерева и проверяет паритет.
## v1.50.3 — 2026-07-29
**По ревью v1.50.2**