Files
houseplan-card/test/fixtures/302-junction-artifacts.json
Codex 76d60b3e1b feat: junction nodes — detector, fans over the approved chamfer, scene set (#302)
Вторая половина переработки узлов поверх ядра из прошлого коммита:

- `junctionContractHoles` — объективный инвариант «тело ⊇ полосы ∪ веера в
  фасадной границе» как экспортная чистая функция; самопроверка на заведомо
  дырявой фикстуре входит в юниты. Первая формулировка детектора из ТЗ
  («окружено кладкой с ≥5 из 8 сторон») уточнена в §8.4 по факту измерения:
  она ложно флагует легитимный пол комнаты в острых внутренних углах.
- `junctionNodeBound` — «гладкая» фасадная граница (конверт с обычными углами)
  экспортирована: ею клиппуются куски узла и ею же пользуются тесты.
- юниты #302: веера/рефлекс/короткий толстый саппорт/детектор/репро
  end-to-end; хелпер тестов старого контракта переведён на strip-safe
  семантику по саппортам и фасадной границе.
- смок `smoke_junction_holes`: контрактные пробы считаются в node из той же
  фикстуры и проверяются в браузере по реальному `d`-пути карточки.
- сет из 16 golden-сцен стыков крупным планом (звёзды лучей: T/X/Y/острые/
  почти коллинеарные/виртуальные/колонна/черновик) + сцена-репро владельца;
  билдер сцен и `zoomCenter` в harness. Контракт сцены
  `multiwall-junction-bevel-view-dark` инвертирован по решению владельца:
  проба в перекрытии полос обязана быть ЗАПОЛНЕНА (strip-safe), а не пустой.
- семь мутантов §14, включая слепоту детектора и невозврат саппортов.
- фикстура #197: площадь кладки выросла на 0.2 юнита² — слайвер вееров вдоль
  хорд фаски; константа обновлена с комментарием.

Эталоны новых сцен идут отдельным коммитом с положенными трейлерами.

Issue: #302
User-Visible: yes
2026-08-25 17:34:19 +03:00

154 lines
2.1 KiB
JSON

{
"cell_cm": 30,
"rooms": [
{
"id": "rmrwhxasn",
"poly": [
[
0.23333333333333334,
0.029166666666666667
],
[
0.525,
0.029166666666666667
],
[
0.525,
0.7666666666666667
],
[
0.23333333333333334,
0.7666666666666667
]
]
},
{
"id": "rmt4w8xzu-0",
"poly": [
[
0.30833333333333335,
0.2375
],
[
0.32916666666666666,
0.14166666666666666
],
[
0.37916666666666665,
0.19166666666666668
],
[
0.37916666666666665,
0.2375
]
]
},
{
"id": "rmt4w9f2r-0",
"poly": [
[
0.37916666666666665,
0.19166666666666668
],
[
0.32916666666666666,
0.14166666666666666
],
[
0.4083333333333333,
0.1
],
[
0.43333333333333335,
0.15833333333333333
]
]
}
],
"walls": [
{
"key": "0.320833,0.191667@1.7850",
"cm": 50,
"a": [
0.30833333333333335,
0.2375
],
"b": [
0.32916666666666666,
0.14166666666666666
]
},
{
"key": "0.370833,0.120833@2.6572",
"cm": 50,
"a": [
0.32916666666666666,
0.14166666666666666
],
"b": [
0.4083333333333333,
0.1
]
},
{
"key": "0.345833,0.237500@0.0000",
"cm": 15,
"a": [
0.37916666666666665,
0.2375
],
"b": [
0.30833333333333335,
0.2375
]
},
{
"key": "0.354167,0.166667@0.7856",
"cm": 70,
"a": [
0.32916666666666666,
0.14166666666666666
],
"b": [
0.37916666666666665,
0.19166666666666668
]
},
{
"key": "0.408333,0.175000@2.5900",
"cm": 50,
"a": [
0.43333333333333335,
0.15833333333333333
],
"b": [
0.37916666666666665,
0.19166666666666668
]
},
{
"key": "0.420833,0.129167@1.1661",
"cm": 50,
"a": [
0.4083333333333333,
0.1
],
"b": [
0.43333333333333335,
0.15833333333333333
]
},
{
"key": "0.379167,0.216667@1.5706",
"cm": 25,
"a": [
0.37916666666666665,
0.19166666666666668
],
"b": [
0.37916666666666665,
0.2375
]
}
]
}