Commit d97c04c
committed
fix: trim is never a free body, and the export checks that the scene loads clean
Found by running the pipeline with `--author-steps 20`. A short authoring
session wrote `Skirting0` with `rests_on: Floor0` and no `attached_to`, and
`rests_on` short-circuits every other test — so 86 kg of trim ringing the room
was emitted as a FREE body, 40 mm inside the door lining. MuJoCo read the
overlap as stored energy and threw it 158 mm; the scene failed the stability
gate on that one body. The fully authored room escaped only because the author
got as far as writing `attached_to: Room_Shell`, which is to say the room was
one interrupted session away from unusable with nothing to warn anyone.
Two changes, one specific and one general.
TRIM, alongside the existing SCENERY set: skirting, trunking, coving,
architrave and the rest are nailed to the fabric and run inside the walls they
trim. They are never free bodies, and unlike SCENERY that holds at any height —
trunking sits at 0.95 m. Pinned whatever the layout claims, and reported as
`trim_pinned`.
And the backstop that would have caught it whatever it was called: the export
now compiles the file it just wrote, steps it once, and records whether it
starts clean. `loads_clean` and `initial_overlaps` go in the report and the
simulate stage refuses to call a scene that starts interpenetrating a quiet
success. Best-effort and non-fatal — a scene that cannot be loaded is still
written, because a file you can inspect beats no file at all.
Office-Elliott authored at 20 steps: FAIL (22 contacts, -39.6 mm, ejected
158 mm) -> PASS (0 contacts, 0.0 mm, no warnings, nothing escaped). The fully
authored room re-exports unchanged and also reports `loads_clean: true`.1 parent 97f49ad commit d97c04c
2 files changed
Lines changed: 61 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
115 | 126 | | |
116 | 127 | | |
117 | 128 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
111 | 127 | | |
112 | 128 | | |
113 | 129 | | |
| |||
1180 | 1196 | | |
1181 | 1197 | | |
1182 | 1198 | | |
| 1199 | + | |
| 1200 | + | |
| 1201 | + | |
| 1202 | + | |
| 1203 | + | |
1183 | 1204 | | |
1184 | | - | |
| 1205 | + | |
1185 | 1206 | | |
1186 | 1207 | | |
1187 | 1208 | | |
| |||
1652 | 1673 | | |
1653 | 1674 | | |
1654 | 1675 | | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
| 1702 | + | |
| 1703 | + | |
1655 | 1704 | | |
1656 | 1705 | | |
1657 | 1706 | | |
| |||
0 commit comments