Files
houseplan-card/test/fixtures/real-plan-first-floor.json
Claude d5659478aa test: add a second real plan to the masonry gate
The second floor covers one class: the multi-wall corridor eating a neighbouring
wall. The first floor brings what neither it nor any synthetic fixture has —
three virtual spans, two wall columns, two solid edges with no thickness record
at all, and 127 noisy coordinates.

The two plans pin opposite states, which is worth more than two plans with the
same defect: one records a known debt of 181 steps, the other records cleanliness
at zero. A regression is caught in both directions.

A declared virtual span is a declared break, not a defect, so the rule from #285
would have reddened on the first floor's own contract. Samples lying on
open_spans are now excluded: 830 of 6800 on that plan, and the remaining gap
count is zero.

The two zero-thickness solid edges are two grid steps long and covered by the
bodies of their neighbours, so the browser sees no break. Their count is
therefore pinned in the model test rather than the smoke — if it grows, or if the
neighbours stop covering them, that shows up before it becomes a hole.

Both fixtures must stay noisy: the project's synthetic models carry exactly zero
noise, which is why #258 and #248 are not reproducible on them. A profile check
asserts at least a hundred noisy coordinates each, so a future write barrier run
over the fixtures cannot quietly rob them of their purpose.

Privacy: names, ids, markers, device bindings and layout are gone; geometry
stays, coordinates unchanged, because they are the point.

Issue: #286
User-Visible: no
2026-08-24 13:10:33 +03:00

584 lines
10 KiB
JSON

{
"note": "Privacy-minimised geometry of a real first floor (issue #286 (gate introduced in #285)). Room names, ids and every device binding are removed; only geometry, thickness, virtual spans and openings remain. Coordinates are unchanged on purpose: this plan carries the coordinate noise that synthetic fixtures do not.",
"space": {
"id": "real-first-floor",
"title": "Real first floor",
"cell_cm": 5,
"view_box": [
0,
0,
1,
1
],
"settings": {
"show_borders": true,
"show_names": false,
"fill_mode": "custom",
"custom_fill": {
"c": "#607d8b",
"a": 0
},
"glow_enabled": false
},
"rooms": [
{
"id": "room-a",
"name": "Room A",
"poly": [
[
0.070833333,
0.4375
],
[
0.070833333,
0.05
],
[
0.8875,
0.05
],
[
0.8875,
0.345833333
],
[
0.691666667,
0.345833333
],
[
0.691666667,
0.55
],
[
0.620833333,
0.55
],
[
0.620833333,
0.425
],
[
0.420833333,
0.425
],
[
0.420833333,
0.4375
]
]
},
{
"id": "room-b",
"name": "Room B",
"poly": [
[
0.204166667,
0.645833333
],
[
0.204166667,
0.4375
],
[
0.420833333,
0.4375
],
[
0.420833333,
0.645833333
]
]
},
{
"id": "room-c",
"name": "Room C",
"poly": [
[
0.2375,
0.866666667
],
[
0.2375,
0.645833333
],
[
0.420833333,
0.645833333
],
[
0.420833333,
0.866666667
]
]
},
{
"id": "room-d",
"name": "Room D",
"poly": [
[
0.070833333,
0.866666667
],
[
0.070833333,
0.645833333
],
[
0.2375,
0.645833333
],
[
0.2375,
0.866666667
]
]
},
{
"id": "room-e",
"name": "Room E",
"poly": [
[
0.420833333,
0.866666667
],
[
0.420833333,
0.425
],
[
0.620833333,
0.425
],
[
0.620833333,
0.866666667
]
]
},
{
"id": "room-f",
"name": "Room F",
"poly": [
[
0.620833333,
0.866666667
],
[
0.620833333,
0.55
],
[
0.8875,
0.55
],
[
0.8875,
0.866666667
]
]
},
{
"id": "room-g",
"name": "Room G",
"poly": [
[
0.070833333,
0.645833333
],
[
0.070833333,
0.4375
],
[
0.204166667,
0.4375
],
[
0.204166667,
0.645833333
]
]
},
{
"id": "room-h",
"name": "Room H",
"poly": [
[
0.691666667,
0.345833333
],
[
0.979166667,
0.345833333
],
[
0.979166667,
0.55
],
[
0.691666667,
0.55
]
]
}
],
"walls": [
{
"key": "0.479167,0.050000@0.0000",
"cm": 29,
"a": [
0.070833333,
0.05
],
"b": [
0.8875,
0.05
]
},
{
"key": "0.420833,0.645833@1.5706",
"cm": 20,
"a": [
0.420833333,
0.866666667
],
"b": [
0.420833333,
0.425
]
},
{
"key": "0.070833,0.245833@1.5706",
"cm": 29,
"a": [
0.070833333,
0.4375
],
"b": [
0.070833333,
0.05
]
},
{
"key": "0.245833,0.437500@0.0000",
"cm": 33,
"a": [
0.420833333,
0.4375
],
"b": [
0.070833333,
0.4375
]
},
{
"key": "0.620833,0.708333@1.5706",
"cm": 20,
"a": [
0.620833333,
0.55
],
"b": [
0.620833333,
0.866666667
]
},
{
"key": "0.887500,0.708333@1.5706",
"cm": 29,
"a": [
0.8875,
0.55
],
"b": [
0.8875,
0.866666667
]
},
{
"key": "0.887500,0.195833@1.5706",
"cm": 29,
"a": [
0.8875,
0.05
],
"b": [
0.8875,
0.345833333
]
},
{
"key": "0.754167,0.550000@0.0000",
"cm": 20,
"a": [
0.620833333,
0.55
],
"b": [
0.8875,
0.55
]
},
{
"key": "0.754167,0.866667@0.0000",
"cm": 29,
"a": [
0.8875,
0.866666667
],
"b": [
0.620833333,
0.866666667
]
},
{
"key": "0.070833,0.758333@1.5706",
"cm": 29,
"a": [
0.070833333,
0.866666667
],
"b": [
0.070833333,
0.645833333
]
},
{
"key": "0.237500,0.758333@1.5706",
"cm": 20,
"a": [
0.2375,
0.866666667
],
"b": [
0.2375,
0.645833333
]
},
{
"key": "0.312500,0.645833@0.0000",
"cm": 20,
"a": [
0.420833333,
0.645833333
],
"b": [
0.204166667,
0.645833333
]
},
{
"key": "0.070833,0.541667@1.5706",
"cm": 29,
"a": [
0.070833333,
0.645833333
],
"b": [
0.070833333,
0.4375
]
},
{
"key": "0.204167,0.541667@1.5706",
"cm": 20,
"a": [
0.204166667,
0.645833333
],
"b": [
0.204166667,
0.4375
]
},
{
"key": "0.979167,0.445833@1.5706",
"cm": 28,
"a": [
0.979166667,
0.345833333
],
"b": [
0.979166667,
0.55
]
},
{
"key": "0.520833,0.866667@0.0000",
"cm": 29,
"a": [
0.620833333,
0.866666667
],
"b": [
0.420833333,
0.866666667
]
},
{
"key": "0.791667,0.345833@0.0000",
"cm": 22,
"a": [
0.8875,
0.345833333
],
"b": [
0.691666667,
0.345833333
]
},
{
"key": "0.329167,0.866667@0.0000",
"cm": 29,
"a": [
0.420833333,
0.866666667
],
"b": [
0.2375,
0.866666667
]
},
{
"key": "0.154167,0.645833@0.0000",
"cm": 20,
"a": [
0.070833333,
0.645833333
],
"b": [
0.2375,
0.645833333
]
},
{
"key": "0.154167,0.866667@0.0000",
"cm": 29,
"a": [
0.2375,
0.866666667
],
"b": [
0.070833333,
0.866666667
]
},
{
"key": "0.691667,0.400000@1.5706",
"cm": 22,
"a": [
0.691666667,
0.345833333
],
"b": [
0.691666667,
0.454166667
]
},
{
"key": "0.933333,0.550000@0.0000",
"cm": 22,
"a": [
0.979166667,
0.55
],
"b": [
0.8875,
0.55
]
},
{
"key": "0.933333,0.345833@0.0000",
"cm": 22,
"a": [
0.888881904,
0.345833333
],
"b": [
0.979166667,
0.345833333
]
},
{
"key": "0.887500,0.345833@0.0000",
"cm": 15,
"a": [
0.8875,
0.345833333
],
"b": [
0.888881904,
0.345833333
]
}
],
"partitions": [
{
"id": "partition_partition_partition_partition-msjey_30638872",
"a": [
0.691666667,
0.345833333
],
"b": [
0.604166667,
0.345833333
],
"cm": 22
}
],
"open_spans": [
{
"a": [
0.420833333,
0.425
],
"b": [
0.620833333,
0.425
]
},
{
"a": [
0.620833333,
0.425
],
"b": [
0.620833333,
0.541666667
]
},
{
"a": [
0.691666667,
0.454166667
],
"b": [
0.691666667,
0.55
]
}
],
"openings": [],
"wall_columns": [
{
"id": "column_column_column_column-msjeztk0_5a939_96c417e2",
"shape": "square",
"center": [
0.4,
0.441666667
],
"cm": 15
},
{
"id": "column-mt1olibe",
"shape": "square",
"center": [
0.416666667,
0.345833333
],
"cm": 29
}
]
}
}