The asset-brief template (scope/visual-reference/naming/gen-path/ acceptance, one page) and five real briefs — station walls, rural walls, doors, floors, furniture/props — each citing its D-235 axis tokens and palette.md register rows (or the D-257 toon default), conventions.md naming/mask/footprint rules, and the image-gen -> glb-gen -> promotion path with concrete acceptance counts. Doors carry the negative no-state-frame-files constraint (runtime mechanism stays Phase 5); furniture/props' first acceptance is promoting the three unpromoted spike GLBs. deferred.md is the formal register for the T-1051 four (lamp posts, barns, TVs, billboards) + cars/Q-067, with rationale and revisit triggers — satisfying T-1051's own 'or record formal deferral' deliverable. Child stories under T-961 are created lead-side at merge. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4.8 KiB
title, description, type, status, ticket, decision_refs, author, created, updated
| title | description | type | status | ticket | decision_refs | author | created | updated | |||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Asset Brief — Furniture / Props | Interior furniture and small props — manifest categories furniture|props, spike prior art exists unpromoted | design | active |
|
Araminta | 2026-07-25 | 2026-07-25 |
Asset Brief — Furniture / Props
One page. Gates its child story — the story does not enter in_progress
without this brief attached.
1. Scope
Freestanding interior objects — the manifest's two categories, furniture
(tables, chairs, storage — occupies a footprint, usually multi-tile) and
props (smaller/decorative objects — usually single-tile). No D-235
ObjectTag axis applies (that vocabulary is building-exterior only); this
class is closest in spirit to D-235's incremental-content mechanism
(specific-to-generic fallback) without the ratified vocabulary itself — an
open question this brief does not resolve (see §5, T-995's ObjectTag
extension). Real prior art exists and is unpromoted: 3 GLBs at
spikes/3dpipeline/models/furniture/ — this brief's first job is promoting
that spike output through the now-real production path (client/assets/ models/, manifest.json), not generating from zero. Out of scope: walls,
doors, floors (separate briefs); vehicles (Q-067, deferred); the four
deferred.md classes (lamp posts, TVs, billboards, barns — those are
furniture-tier objects but are formally deferred by name, not folded into
this brief).
2. Visual Reference
palette.md §2 — furniture and props are explicitly named as sharing the
character toon treatment (toon.gdshader/toon_masked.gdshader,
roughness=1.0/specular=0.0 default from postprocess_glb.py:: setup_materials()), with the standing glazing/polished-metal carve-out
(§2.1) applying to any prop that is deliberately glass or mirror-finish
(a display case, a chrome fixture) — minimal-PBR (roughness 0.05–0.2,
controlled specular), same rule as building glazing, not a new one. §4's
"functional warmth" mood target and the object-tier saturation ceiling
(entity > object > structure, §4 table) both apply directly: furniture/prop
colors stay moderate saturation, below entity color but the class is allowed
more personality than the structural material register (the
shuttered_facade accent-color precedent is the closest analogue — object-
tier is where a saturation bump is permitted, unlike wall/roof/street).
3. Naming
<category>_<descriptor>.glb per conventions.md §1 — the spike's existing
files (baroque_table.glb, modernist_chair.glb) are descriptor-first
and must be renamed to category-first (table_baroque.glb,
chair_modernist.glb) at promotion time; conventions.md §1 explicitly
rules the spike naming "pre-convention scratch work, not a precedent to
preserve." Mask sidecar: <model>_mask.png, single-channel, per §2 — the
existing Trellis convention, just reordered. footprint_tiles in the
manifest for any furniture with a real multi-tile footprint (a table spanning
[2, 1]); most props-category items omit the field or set [1, 1].
4. Generation Path
Two paths, depending on whether the spike asset is being promoted or a new
one generated: (a) Promotion path for the 3 existing spike GLBs — rename
per §3, run through Blender postprocess if not already toon-compatible,
place in client/assets/models/furniture/ (or props/ per actual category),
register in manifest.json. This IS the promotion act (D-241) — nothing
stays "promoted" in spikes/. (b) New-asset path, standard:
/image-gen concept → /glb-gen (Trellis) → Blender postprocess →
client/assets/models/{furniture,props}/ + manifest.json. Both paths
converge on the same manifest registration step.
5. Acceptance
3 starter assets enter models.md + manifest.json at planned: the 3
existing spike GLBs (spikes/3dpipeline/models/furniture/), promoted and
renamed per §3 — this satisfies acceptance without generating anything new,
since the prior art already exists and simply hasn't crossed the promotion
boundary. Note for the story: whether a generic_furniture/generic_prop
placeholder parent becomes a formal fallback-chain member (mirroring D-235's
wall/roof/facade/street pattern) is exactly Q-119's open question ("generic
door/floor/furniture parents") — milestone-0 IF Q-119 resolves yes, not
resolved by this brief.
Cross-References
docs/assets/visual/conventions.md§1, §2, §4 — category-first naming ruling, mask sidecar, footprint metadatadocs/assets/visual/palette.md§2, §4 — toon/PBR treatment, saturation-ceiling hierarchydocs/assets/visual/models.md— target catalogclient/assets/models/manifest.jsonspikes/3dpipeline/models/furniture/— existing unpromoted prior art (3 GLBs)- D-241 — spike binaries local-only; promotion = repo-canonical