docs(assets): codify the authored-footprint rule (araminta ruling, PR #214)

footprint_tiles is an authored value, never derived from normalized
mesh geometry — [1,1] defaults only for plausibly-single-tile classes;
ordinarily-multi-tile classes require an explicitly stated footprint at
promotion. Her exact wording in furniture-props.md §3; conventions.md
§4 gains the authored-not-derived sentence pointing at the full rule
(and a pre-existing 'Single Sunday-tile' typo fixed in passing). The
[1,1] values shipped for the four promoted items stand as ruled.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 13:03:55 +02:00
co-authored by Claude Fable 5
parent 2f87c1a65f
commit 82d44cf483
2 changed files with 17 additions and 2 deletions
+11
View File
@@ -76,6 +76,17 @@ manifest for any furniture with a real multi-tile footprint (a table spanning
`[2, 1]`); most `props`-category items, including `lion_statue`, omit the
field or set `[1, 1]`.
**Footprint for normalized assets** (araminta ruling, PR #214).
Blender-normalized GLBs (`target-width=1.0` postprocess, the spike default)
lose real-world scale — footprint cannot be derived from geometry after
normalization. `footprint_tiles` is therefore an **authored** value, not a
measured one: default `[1, 1]` only holds when the object's real-world class
is plausibly single-tile (chairs, stools, small props, compact desks). Any
item whose class is ordinarily multi-tile (dining tables seating 4+, couches,
beds, wardrobes) needs the promoting author to state an intended real-world
footprint explicitly (in the promotion commit/PR, or a per-item scale note in
the brief) — never left to infer from the normalized mesh.
## 4. Generation Path
Two paths, depending on whether the spike asset is being promoted or a new
+6 -2
View File
@@ -131,8 +131,12 @@ sprite-era assumption); it is a `manifest.json` field:
"footprint_tiles": [2, 1]
```
`[width, height]` in whole tiles (1 tile = 1m, D-243's voxel unit). Single
Sunday-tile props omit the field or set it to `[1, 1]`. See
`[width, height]` in whole tiles (1 tile = 1m, D-243's voxel unit). Single-tile
props omit the field or set it to `[1, 1]`. For Blender-normalized assets,
this value is **authored at promotion time, not derived from mesh geometry**
normalization erases real-world scale (araminta ruling, PR #214; the full rule
with the single-tile-class default lives in
`docs/assets/briefs/furniture-props.md` §3). See
`client/assets/models/manifest.json`'s `_fields` block for the authoritative
field definition alongside the rest of the per-asset schema.