docs(assets): PR #213 review fixes — DoorSpec fields, spike inventory, axis honesty, D-154
doors.md now presents D-231's actual struct shape (initial_state Open/Closed/Locked/Sealed; TemporalWindow lives in the independent credential field) and attaches the Phase-5 runtime bridge to initial_state only. furniture-props.md inventories all five spike GLBs — acceptance is 4 promotable (3 furniture + lion_statue), vw_beetle explicitly excluded to the Q-067 deferral. deferred.md + station-walls gain the axis-completeness note: roof/facade/street textures ride the wall-brief convention as a same-family follow-on, so the register accounts for all four D-235 axes. The briefing's D-257 pointer corrected to palette.md §2.1–2.2, and both the briefing and palette.md (leave-cleaner, gap inherited from PR #211) now carry D-154's amendment to D-033 — relationship colors display only in the insert/perception overlay; normal gameplay is a uniform #1a1a1a outline (D-150). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -51,6 +51,22 @@ mention. There is nothing to protect or unwind by waiting.
|
||||
**Disposition.** Formal deferral, not a story. No brief is authored for any
|
||||
of the four this batch.
|
||||
|
||||
**Note on axis completeness.** This register's exterior-texture examples in
|
||||
`station-walls.md`/`rural-walls.md` cite the D-235 **wall** axis only — that
|
||||
is deliberate scoping to this batch's two briefed classes, not a claim that
|
||||
roof/facade/street are also deferred. `RoofForm` (7 tags), `FacadeRhythm`
|
||||
(8 tags), and `StreetSurface` (7 tags) are the other three D-235 axes and
|
||||
are **not** unbriefed set-dressing in the sense the four classes above are —
|
||||
they are building-exterior surfaces that ride the **same** naming/generation
|
||||
convention the wall briefs establish (`<object_tag>_<map_type>.png` per
|
||||
`conventions.md` §3, `palette.md` §3.2–§3.4's register rows already exist
|
||||
for all three). They are a natural follow-on brief/story within the
|
||||
building-exterior asset-class family once station-walls/rural-walls prove
|
||||
the pattern out — not named as their own class in T-1049's per-class list,
|
||||
and not deferred for the exterior-not-walkable-yet reason the four classes
|
||||
above are. No new brief is authored for them this batch; the accounting
|
||||
above is complete once this note is read alongside the wall briefs.
|
||||
|
||||
## Cars (Q-067)
|
||||
|
||||
**Rationale, same shape, one added layer.** Cars are also set-dressing/
|
||||
|
||||
@@ -26,8 +26,10 @@ Doors have **no D-235 ObjectTag axis** — wall/roof/facade/street are building-
|
||||
exterior surface tags; a door is a discrete object that sits in a wall
|
||||
opening. What DOES exist already: the **logical** `DoorSpec`/
|
||||
`InteriorDescriptor` model (T-979/T-998, D-231) — door count derivation
|
||||
(Main/Service/Emergency/Hidden) and initial-state derivation (`Open`/
|
||||
`Closed`/`TemporalWindow`/`Locked`/`Sealed`) — but that work is server-side
|
||||
(Main/Service/Emergency/Hidden) and **two separate derived fields**:
|
||||
`initial_state` (`Open`/`Closed`/`Locked`/`Sealed`) and, independently,
|
||||
`credential` (`None`/`TemporalWindow(hours)`/`Corporate(corp)`/
|
||||
`Resident(block)`/`Authority`/`Social(f32)`) — but that work is server-side
|
||||
struct definition only, not visual. This brief covers the **visual asset**
|
||||
only; it does not touch T-979/T-998's derivation logic.
|
||||
|
||||
@@ -50,15 +52,19 @@ brief specifies.
|
||||
`<category>_<descriptor>.glb` per `conventions.md` §1 — e.g. `door_sliding
|
||||
.glb`, `door_hinged.glb`. **Negative constraint, binding (`conventions.md`
|
||||
§5): do NOT author state-frame suffix files** (`door_open.glb`/
|
||||
`door_closed.glb`). One door `.glb` per descriptor; the `DoorSpec` states
|
||||
(`Open`/`Closed`/`TemporalWindow`/`Locked`/`Sealed`) are a **runtime
|
||||
`door_closed.glb`). One door `.glb` per descriptor; `DoorSpec`'s
|
||||
`initial_state` (`Open`/`Closed`/`Locked`/`Sealed`) is a **runtime
|
||||
transform/animation** on that single model — the actual mechanism
|
||||
(`AnimationPlayer` swing, procedural hinge rotation, or a named "open" bone
|
||||
convention) is explicitly a **Phase-5 rendering decision**, out of scope for
|
||||
this Phase-4 asset brief and for the story it gates. Mask sidecar
|
||||
(`<model>_mask.png`) only if a tintable variant is wanted; footprint is
|
||||
single-tile (`[1, 1]`, omit the field) — a door does not span multiple sim
|
||||
tiles.
|
||||
this Phase-4 asset brief and for the story it gates. The separate
|
||||
`credential` field (`None`/`TemporalWindow(hours)`/`Corporate(corp)`/
|
||||
`Resident(block)`/`Authority`/`Social(f32)`) is an access-control value, not a
|
||||
door pose — it carries no visual-asset implication at all (no lock-indicator
|
||||
variant, no separate model), so this brief's naming/negative-constraint
|
||||
scope is `initial_state` only. Mask sidecar (`<model>_mask.png`) only if a
|
||||
tintable variant is wanted; footprint is single-tile (`[1, 1]`, omit the
|
||||
field) — a door does not span multiple sim tiles.
|
||||
|
||||
## 4. Generation Path
|
||||
|
||||
|
||||
@@ -26,14 +26,21 @@ 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
|
||||
extension). **Real prior art exists and is unpromoted**: the spike's
|
||||
`models/` tree holds **five** GLBs total — 3 at `spikes/3dpipeline/models/
|
||||
furniture/` (`furniture`-category) and 2 at `spikes/3dpipeline/models/
|
||||
props/` (`props`-category: `lion_statue.glb`, mode "fixed", non-tintable;
|
||||
and `vw_beetle.glb`, a car). Of these five, **four are in this brief's
|
||||
scope** (3 furniture + `lion_statue`) — 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).
|
||||
models/`, `manifest.json`), not generating from zero. `vw_beetle.glb` is
|
||||
explicitly **excluded**: it is a vehicle, covered by the Q-067 car deferral
|
||||
in `deferred.md`, not this brief, regardless of sitting in the same spike
|
||||
`props/` directory as `lion_statue.glb`. Out of scope: walls, doors, floors
|
||||
(separate briefs); vehicles (Q-067, deferred — `vw_beetle.glb` per above);
|
||||
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
|
||||
|
||||
@@ -54,34 +61,47 @@ 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
|
||||
furniture 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." `lion_statue.glb` is already
|
||||
category-first as named and needs no rename. Mask sidecar: `<model>_mask
|
||||
.png`, single-channel, per §2 — the existing Trellis convention, just
|
||||
reordered for the renamed furniture items; `lion_statue.glb` is non-tintable
|
||||
("fixed" mode in the spike) and ships with **no mask sidecar** at all, not an
|
||||
empty one — `conventions.md` §2's `hint_default_black` default already
|
||||
covers "no mask loaded = no tinting" for this case. `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]`.
|
||||
`[2, 1]`); most `props`-category items, including `lion_statue`, 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
|
||||
one generated: (a) **Promotion path** for the 4 in-scope existing spike
|
||||
GLBs (3 furniture + `props/lion_statue.glb`) — rename per §3 (furniture
|
||||
items only; `lion_statue` keeps its name), run through Blender postprocess
|
||||
if not already toon-compatible, place in `client/assets/models/furniture/`
|
||||
or `client/assets/models/props/` per actual category, register in
|
||||
`manifest.json`. This IS the promotion act (D-241) — nothing stays
|
||||
"promoted" in `spikes/`. `props/vw_beetle.glb` does **not** take this path;
|
||||
it stays out of scope per §1 (Q-067 car deferral). (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`
|
||||
**4 promotable GLBs** enter `models.md` + `manifest.json` at `planned`: the
|
||||
3 existing spike furniture GLBs (`spikes/3dpipeline/models/furniture/`),
|
||||
promoted and renamed per §3, plus `spikes/3dpipeline/models/props/
|
||||
lion_statue.glb`, promoted as-is (no rename, no mask). This satisfies
|
||||
acceptance without generating anything new, since the prior art already
|
||||
exists and simply hasn't crossed the promotion boundary. **Excluded from
|
||||
this count:** `spikes/3dpipeline/models/props/vw_beetle.glb` — a car, held
|
||||
under the Q-067 deferral in `deferred.md`, not promoted by this brief's
|
||||
story. 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
|
||||
@@ -96,4 +116,5 @@ resolved by this brief.
|
||||
- `docs/assets/visual/models.md` — target catalog
|
||||
- `client/assets/models/manifest.json`
|
||||
- `spikes/3dpipeline/models/furniture/` — existing unpromoted prior art (3 GLBs)
|
||||
- `spikes/3dpipeline/models/props/` — existing unpromoted prior art; `lion_statue.glb` in scope (this brief), `vw_beetle.glb` excluded (Q-067 car deferral, see `deferred.md`)
|
||||
- D-241 — spike binaries local-only; promotion = repo-canonical
|
||||
|
||||
@@ -33,7 +33,12 @@ _64.png` — all pre-D-244, sprite-era output. This brief's job is to re-run
|
||||
that same wall through the current 3D-model pipeline (D-244), not sprite
|
||||
renders, and register it as the class's first manifest entry. Out of scope:
|
||||
rural walls (timber/stone/rammed-earth vernacular), doors, floors — separate
|
||||
briefs.
|
||||
briefs. Also out of scope, but a natural same-family follow-on once this
|
||||
brief's pattern is proven: the other three D-235 building-exterior axes —
|
||||
`RoofForm`, `FacadeRhythm`, `StreetSurface` — which ride this brief's own
|
||||
`<object_tag>_<map_type>.png` texture convention (`conventions.md` §3) and
|
||||
already have `palette.md` §3.2–§3.4 register rows; see `deferred.md`'s axis-
|
||||
completeness note.
|
||||
|
||||
## 2. Visual Reference
|
||||
|
||||
|
||||
Reference in New Issue
Block a user