docs(assets): ratify 3D asset direction (D-244) + repurpose sprite-gen as 2D-artwork generator #169

Closed
jpmschweitzer wants to merge 0 commits from asset-direction-3d into main
Owner

Summary

Ratifies the asset-rendering direction and roots out the sprite-vs-3D drift surfaced this session.

D-244 records what the character architecture (D-159–D-164, runtime CharacterVisualDescriptor compositing) and the Trellis environment pipeline already implied but no decision had captured: the in-world view renders 3D objects directly; the only flattened 2D content is textures + flat 2D artwork (paintings, flags, billboards, signage). There is no per-object sprite layer — a character with runtime slot compositing (body × head × hair × clothing × shape-keys × …) is combinatorially impossible to express as pre-rendered sprites.

Root cause it fixes

The early-spike 3D→2D sprite pipeline (#541) and the sprite-centric docs/assets/visual/ catalog were never cleaned out when the project went 3D, so the 2026-06-12 fable-ous audit read them as live ground truth and re-injected the dead sprite model into T-1049/T-1050. Leaving retired scaffolding in the repo with no decision marking it dead is exactly how it re-propagated.

Changes

  • D-244 (governance/decisions/architecture.md) — the ratifying record.
  • docs/assets/visual/README.md + docs/assets/README.md — re-scoped from a sprite catalog (sprites/tilesets-as-entities) to 3D models + textures + flat artwork.
  • /sprite-gen skill + renderer/README.mdrepurposed as the 2D-artwork generator (paintings/flags/billboards/signage); the legacy 4-direction object-sprite mode flagged as retired.
  • T-961/T-1049/T-1050 already held in backlog pending re-scope (the asset-hold meta commit rides along).

Notes

  • Docs/governance/skill only — no code; pre-push gate skipped Rust/GDScript/Python.
  • Follow-up (not in scope): a flat-artwork single-view mode for the render script; re-scoping T-961/T-1049/T-1050 around 3D models + textures.

🤖 Generated with Claude Code

## Summary Ratifies the asset-rendering direction and roots out the sprite-vs-3D drift surfaced this session. **D-244** records what the character architecture (D-159–D-164, runtime `CharacterVisualDescriptor` compositing) and the Trellis environment pipeline already implied but no decision had captured: **the in-world view renders 3D objects directly; the only flattened 2D content is textures + flat 2D artwork** (paintings, flags, billboards, signage). There is **no per-object sprite layer** — a character with runtime slot compositing (body × head × hair × clothing × shape-keys × …) is combinatorially impossible to express as pre-rendered sprites. ### Root cause it fixes The early-spike 3D→2D sprite pipeline (#541) and the sprite-centric `docs/assets/visual/` catalog were **never cleaned out** when the project went 3D, so the 2026-06-12 `fable-ous` audit read them as live ground truth and re-injected the dead sprite model into T-1049/T-1050. Leaving retired scaffolding in the repo with no decision marking it dead is exactly how it re-propagated. ### Changes - **D-244** (governance/decisions/architecture.md) — the ratifying record. - **docs/assets/visual/README.md** + **docs/assets/README.md** — re-scoped from a sprite catalog (sprites/tilesets-as-entities) to **3D models + textures + flat artwork**. - **/sprite-gen skill + renderer/README.md** — **repurposed as the 2D-artwork generator** (paintings/flags/billboards/signage); the legacy 4-direction object-sprite mode flagged as retired. - T-961/T-1049/T-1050 already held in backlog pending re-scope (the asset-hold meta commit rides along). ### Notes - Docs/governance/skill only — no code; pre-push gate skipped Rust/GDScript/Python. - Follow-up (not in scope): a flat-artwork single-view mode for the render script; re-scoping T-961/T-1049/T-1050 around 3D models + textures. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jpmschweitzer added 2 commits 2026-06-16 23:21:42 +02:00
Separated the asset pipeline from the cascade work. T-1049/T-1050 assume a sprite-centric
catalog; direction is 3D objects (Trellis .glb) in-world with textures as the only
flattened content. Held for re-scope. Cascade track (T-1044/T-1047) continues.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
D-244 ratifies what the character architecture (D-159..D-164, runtime
CharacterVisualDescriptor compositing) and the Trellis env pipeline already implied
but no decision had recorded: the in-world view renders 3D objects directly; the only
flattened 2D content is textures + flat 2D artwork (paintings/flags/billboards/signage).
There is no per-object sprite layer.

Roots out the drift: the early-spike 3D->2D sprite pipeline (#541) and the sprite-centric
docs/assets/visual catalog were never cleaned out when the project went 3D, so the
2026-06-12 fable-ous audit read them as live and re-injected the dead sprite model into
T-1049/T-1050. Fix:
- docs/assets/visual/README.md + docs/assets/README.md re-scoped to 3D models + textures
  + flat artwork (dropped the sprites/tilesets-as-entities framing).
- /sprite-gen + renderer/README repurposed as the 2D-artwork generator (paintings/flags/
  billboards/signage), not the in-world object format; legacy 4-direction object-sprite
  mode flagged as retired.
- T-961/T-1049/T-1050 already held in backlog pending this.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author
Owner

PR #169 Review — asset-direction-3d → main (decision + docs)

Reviewers: Tyre (architecture) + Hoshe (doc QA), both on the branch via git show.

Verdict: CHANGES REQUESTED. D-244's rationale and scope are correct and the repurpose is coherent — but the record landed disconnected from the decision graph, and there are concrete doc defects. All findings below verified against the tree.

Tyre (Architecture) — REQUEST_CHANGES

  • D-244 must reference its precedent. D-148 (30° camera, supersedes D-019) and D-149 ("3D characters rendered live in scene — not pre-rendered sprites") already ratified the 3D pivot for camera + characters in Sprint 28. D-244 completes it (objects + assets) but doesn't cite either.
  • Reconcile the 5 sprite-era decisions D-244 contradicts/obsoletes — none are mentioned by D-244:
    • D-043 (perception.md) — "not 3D… Light2D pipeline" — sharpest contradiction; needs a superseded-for-in-world amendment.
    • D-044 — entity 2×2 sprite footprint / 24×32px (sim occupancy survives; pixel footprint is sprite-era).
    • D-049 — z-stack "Entity sprites" / CanvasLayer y-sort (logical layering survives; implementation language is sprite-era).
    • D-066 — "sprite footprint" / "sprites look right" language (coordinate model + 2×2 geometry minimum survive).
    • D-019 — already superseded by D-148, but renderer/README still cites it as the active camera spec.

Hoshe (Doc QA) — REQUEST_CHANGES

# File Issue
1 architecture.md D-244 Broken anchors — [D-159](#d-159) and [D-241](#d-241) resolve to architecture.md, but D-159 lives in scope.md and D-241 in process.md. Use the cross-file slug form.
2 renderer/README.md:4 Bare [D-244] — not a link.
3 renderer/README.md "Adding a New Model" step 6 (client/assets/sprites/), Material Guidelines, Design Constraints, Models table — unmarked legacy object-sprite instructions under the "repurposed" header.
4 docs/assets/README.md _templates/sprite.md comment relabeled "2D artwork rows" but the template file still carries the full object-sprite schema (SPR-001, 4-dir, resolutions) — inconsistent.

Disposition (decided: amend all 5 now)

In this PR: D-244 references D-148/D-149 + lists all 5 in cross-refs with status notes; D-043/D-044/D-049/D-066 amended with superseded/clarified notes; renderer/README camera note → D-148, legacy markers added; broken anchors + bare link + template inconsistency fixed.

## PR #169 Review — `asset-direction-3d` → main (decision + docs) Reviewers: **Tyre** (architecture) + **Hoshe** (doc QA), both on the branch via `git show`. **Verdict: CHANGES REQUESTED.** D-244's rationale and scope are correct and the repurpose is coherent — but the record landed disconnected from the decision graph, and there are concrete doc defects. All findings below verified against the tree. ### Tyre (Architecture) — REQUEST_CHANGES - **D-244 must reference its precedent.** **D-148** (30° camera, supersedes D-019) and **D-149** ("3D characters rendered live in scene — not pre-rendered sprites") already ratified the 3D pivot for camera + characters in Sprint 28. D-244 *completes* it (objects + assets) but doesn't cite either. - **Reconcile the 5 sprite-era decisions D-244 contradicts/obsoletes** — none are mentioned by D-244: - **D-043** (`perception.md`) — *"not 3D… Light2D pipeline"* — sharpest contradiction; needs a superseded-for-in-world amendment. - **D-044** — entity 2×2 sprite footprint / 24×32px (sim occupancy survives; pixel footprint is sprite-era). - **D-049** — z-stack "Entity sprites" / CanvasLayer y-sort (logical layering survives; implementation language is sprite-era). - **D-066** — "sprite footprint" / "sprites look right" language (coordinate model + 2×2 geometry minimum survive). - **D-019** — already superseded by D-148, but `renderer/README` still cites it as the active camera spec. ### Hoshe (Doc QA) — REQUEST_CHANGES | # | File | Issue | |---|------|-------| | 1 | `architecture.md` D-244 | Broken anchors — `[D-159](#d-159)` and `[D-241](#d-241)` resolve to `architecture.md`, but D-159 lives in `scope.md` and D-241 in `process.md`. Use the cross-file slug form. | | 2 | `renderer/README.md:4` | Bare `[D-244]` — not a link. | | 3 | `renderer/README.md` | "Adding a New Model" step 6 (`client/assets/sprites/`), Material Guidelines, Design Constraints, Models table — unmarked legacy object-sprite instructions under the "repurposed" header. | | 4 | `docs/assets/README.md` | `_templates/sprite.md` comment relabeled "2D artwork rows" but the template file still carries the full object-sprite schema (SPR-001, 4-dir, resolutions) — inconsistent. | ### Disposition (decided: amend all 5 now) In this PR: D-244 references D-148/D-149 + lists all 5 in cross-refs with status notes; **D-043/D-044/D-049/D-066 amended** with superseded/clarified notes; `renderer/README` camera note → D-148, legacy markers added; broken anchors + bare link + template inconsistency fixed.
jpmschweitzer added 1 commit 2026-06-17 09:40:48 +02:00
Tyre: D-244 now references its precedent (D-148 3D camera / D-149 live 3D characters
— D-244 completes that pivot for objects + assets) and reconciles the 5 sprite-era
decisions it touched, all amended 2026-06-17:
- D-043: 'not 3D' / Light2D scoped to overlay layers; in-world is 3D.
- D-044: sprite footprint retired (sim occupancy + visual hierarchy survive).
- D-049: z-stack logical model survives; sprite/CanvasLayer implementation language retired.
- D-066: dual-scale coordinate model + 2x2 geometry minimum survive; sprite-footprint language legacy.

Hoshe (doc QA):
- D-244 broken cross-file anchors fixed ([D-159]->scope.md, [D-241]->process.md).
- renderer/README: bare [D-244] linked; D-019->D-148 camera note; legacy banner over the
  object-sprite workflow sections; resolution-chain output path qualified.
- docs/assets/_templates/sprite.md + README: marked the template legacy object-sprite schema
  (model/texture/artwork template TBD).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author
Owner

Review findings addressed — ae7606ed8

All findings resolved; decisions sync + validate clean.

Tyre (architecture) — decision-graph reconciliation

  • D-244 now references its precedent: [D-148] (3D camera, supersedes D-019) + [D-149] (live 3D characters, not sprites) — D-244 completes that pivot for all objects + the asset pipeline.
  • The 5 sprite-era decisions reconciled, all amended 2026-06-17:
    • D-043 — "not 3D"/Light2D scoped to the overlay layers; in-world is 3D.
    • D-044 — 2×2/24×32px sprite footprint retired; 1×1 sim occupancy + visual hierarchy survive.
    • D-049 — z-stack as a logical layering model survives; "entity sprites"/CanvasLayer y-sort implementation language retired.
    • D-066 — dual-scale coordinate model + 2×2 geometry minimum survive; "sprite footprint" language flagged legacy.
  • D-244's cross-references now list all of the above with status notes.

Hoshe (doc QA)

# Fix
1 D-244 broken anchors corrected — [D-159]scope.md#…, [D-241]process.md#… (cross-file slug form).
2 renderer/README.md:4 bare [D-244] now a proper link.
3 renderer/README: D-019→D-148 camera note; a "⚠️ Legacy: object-sprite workflow (retired)" banner over the object-sprite sections; the resolution-chain output path qualified (artwork → textures/artwork, not sprites/).
4 _templates/sprite.md marked the legacy object-sprite row schema (model/texture/artwork template TBD); the docs/assets/README.md comment updated to match.

Ready for re-review or merge.

## Review findings addressed — `ae7606ed8` All findings resolved; decisions sync + validate clean. ### Tyre (architecture) — decision-graph reconciliation - **D-244 now references its precedent:** [D-148] (3D camera, supersedes D-019) + [D-149] (live 3D characters, not sprites) — D-244 *completes* that pivot for all objects + the asset pipeline. - **The 5 sprite-era decisions reconciled, all amended 2026-06-17:** - **D-043** — "not 3D"/Light2D scoped to the overlay layers; in-world is 3D. - **D-044** — 2×2/24×32px sprite footprint retired; 1×1 sim occupancy + visual hierarchy survive. - **D-049** — z-stack as a *logical* layering model survives; "entity sprites"/CanvasLayer y-sort implementation language retired. - **D-066** — dual-scale coordinate model + 2×2 geometry minimum survive; "sprite footprint" language flagged legacy. - D-244's cross-references now list all of the above with status notes. ### Hoshe (doc QA) | # | Fix | |---|-----| | 1 | D-244 broken anchors corrected — `[D-159]`→`scope.md#…`, `[D-241]`→`process.md#…` (cross-file slug form). | | 2 | `renderer/README.md:4` bare `[D-244]` now a proper link. | | 3 | `renderer/README`: D-019→D-148 camera note; a "⚠️ Legacy: object-sprite workflow (retired)" banner over the object-sprite sections; the resolution-chain output path qualified (artwork → textures/artwork, not sprites/). | | 4 | `_templates/sprite.md` marked the legacy object-sprite row schema (model/texture/artwork template TBD); the `docs/assets/README.md` comment updated to match. | Ready for re-review or merge.
jpmschweitzer closed this pull request 2026-06-17 09:52:09 +02:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jpmschweitzer/settled-reach#169