Files
settled-reach/docs/assets/briefs/furniture-props.md
T
jpmschweitzerandClaude Fable 5 2bac820c77 docs(assets): per-class production briefs + template + formal deferral register (T-1049)
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>
2026-07-25 23:00:51 +02:00

4.8 KiB
Raw Blame History

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
D-241
D-244
D-257
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 metadata
  • docs/assets/visual/palette.md §2, §4 — toon/PBR treatment, saturation-ceiling hierarchy
  • docs/assets/visual/models.md — target catalog
  • client/assets/models/manifest.json
  • spikes/3dpipeline/models/furniture/ — existing unpromoted prior art (3 GLBs)
  • D-241 — spike binaries local-only; promotion = repo-canonical