chore(meta): pql changelog — batch-6 prep (T-1049 re-scoped, T-1053 refined, T-1196 body pool recorded)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2329,3 +2329,278 @@ INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, chang
|
||||
First slice landed 2026-07-25 (main, 9ac98542d) via a live incident: PR #211''s gate failed on test_step_canvas_viewer''s two before-any-canvas tests because user://atlas_cache/ is machine-shared (every worktree gate, live capture driver, and play session write the same directory) and the T-1183 disk lookup short-circuits before test_mode''s no-op IPC — a concurrent GJ380c Global live capture (T-1157 eyeball work) warmed the exact key the tests assume cold. Fix: StepCanvasViewer.disk_cache_root_override threading into StepCanvasRequest''s existing test-injection seam; viewer + legend suites route construction through _make_viewer() helpers pinning isolated roots. REMAINING for this ticket: screen-constructed viewers (RegionalScreen builds its viewer internally — no override path), and any future suite constructing viewers directly should use the helper pattern; consider a gdUnit-wide guard (e.g. a shared test base or a lint) so new suites cannot silently ride the shared root.', NULL, '2026-07-25 18:45:59', '2026-07-25 18:45:59.847', '2026-07-25 18:45:59.847', NULL, 'dd331004eee53f809c993e6845b52cbd', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FBPTXPJ910NNR5T2R9F9NWQR', 'status', 'review', 'done', NULL, '2026-07-25 18:55:08', '2026-07-25 18:55:08.780', '2026-07-25 18:55:08.780', NULL, '544c6b5e89dafda431434ef0a9525881', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FBPTXPV39JX54HYP83RZJFDM', 'status', 'review', 'done', NULL, '2026-07-25 18:55:08', '2026-07-25 18:55:08.787', '2026-07-25 18:55:08.787', NULL, '1ee2a69f3be3f8cc551a4d9c725b18f5', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FBPTXPE8FR7TGEM7X6QVPV4M', 'description', '(description follows in first append)
|
||||
|
||||
Filed 2026-06-12 from the fable-ous.md audit (S-43; citations adversarially verified).
|
||||
T-961 (two-sentence description, no acceptance criteria, no brief links) is the only asset-production ticket under T-750, while the epic names eight classes; cars, barns, TVs, billboards appear in NO ticket at all (verified against the full corpus). Refine into child stories per class — station walls, rural walls, doors, floors, furniture/props, street furniture (lamp posts), signage/screens (billboards/TVs), rural structures (barns) — each gated on a one-page brief; explicitly record which classes are deferred (cars: see Q-067 audit note). Decide Q-119 (generic-parent placeholder set as first milestone) before sequencing.
|
||||
Audit per-class status matrix (verified 2026-06-12):
|
||||
# docs/assets/ survey (13 files + downloads/)
|
||||
|
||||
| File | One-line summary |
|
||||
|---|---|
|
||||
| README.md | Master index: audio/visual/video pipelines, status vocabulary (planned/in-progress/placeholder/final), structure that promises visual/{sprites,furniture,tilesets,icons,effects}.md |
|
||||
| _templates/audio.md | Row + detailed-entry template for audio assets |
|
||||
| _templates/sprite.md | Row + detailed-entry template for sprites (ID prefixes SPR/FUR/TILE/ICO/FX, status, method, directions columns) |
|
||||
| _templates/video.md | Row + detailed-entry template for video |
|
||||
| audio/README.md | ACTIVE production-status catalog — per-category counts table (12 assets tracked), generation tools, bus architecture |
|
||||
| audio/palette.md | Sonic style bible |
|
||||
| audio/ambient.md / sfx.md / ui.md | Per-category audio asset tables |
|
||||
| visual/README.md | STUB — links 5 category files that do not exist, all counts 0 |
|
||||
| visual/palette.md | STUB — 4 bullet decisions (D-019/D-033/D-045, "functional warmth"), defers to art-direction workshop |
|
||||
| video/README.md / palette.md | Stubs |
|
||||
| downloads/ | Purchased character sources (Quaternius Universal Base Characters, Modular Character Outfits FBX) — characters only |
|
||||
|
||||
# Per-asset-class matrix
|
||||
|
||||
| Class | Written brief | Style guide | Naming/res conventions | Gen path | Produced assets | Tickets |
|
||||
|---|---|---|---|---|---|---|
|
||||
| Walls (station) | art-direction workshop-outcomes.md §3.3 (v0.1.1 set, pre-cascade) + docs/design/placeholder-art-spec-v01.md §2.1 | visual-grammar-v01.md §1/§4.3, workshop-outcomes §1.8 era palette (partly superseded by D-235), D-235 WallMaterial vocab | renderer/README.md:80-95 (`<model>_<dir>_<res>.png`, 1024→256→64 chain) | working — renderer/models/wall_structural.tscn rendered | wall_structural ×4 dirs in client/assets/sprites/; wall_bar_green model unrendered; 2 textures | T-961 (backlog), T-988 (token vocab, backlog) |
|
||||
| Walls (rural) | none found | D-235 tokens only (timber/rammed-earth etc.) | renderer/README.md (generic) | same path, unused | none | T-961 text mention only |
|
||||
| Doors | placeholder-art-spec-v01.md §2.1 (procedural rects, v0.1) + workshop-outcomes §3.3 `door_sliding` | none for generated world | none for open/closed state frames | same path, unused | none | T-979/T-998 (DoorSpec — logical only), T-961 |
|
||||
| Floors | placeholder-art-spec-v01.md §2.1 + workshop-outcomes §3.3 (4 floor sprites) | D-228 FloorMaterial axis (open vocab) | 64px visual tile (placeholder-art-spec §1) | same path, unused | none — client/assets/tilesets/ is .gitkeep only | T-959 (tile fill, logical), T-961 |
|
||||
| Styled buildings | D-232 + D-235 + wiki/economics/architecture_trait_catalog.toml (T-1005 done, ~35 visual bundles) | D-235 material/color-register grammar — tokens only, no rendered art direction | token→fallback-parent chain (catalog header :34-44) | no model/texture path defined for building exteriors | none | T-977, T-988, T-994, T-1004 (all backlog), T-1005 (done) |
|
||||
| Furniture | docs/assets/visual/furniture.md MISSING (linked); workshop-outcomes §3.3 lists 8-10 objects (pre-cascade) | era table §1.8 only | character-asset-organization.md explicitly excludes furniture ("follow Trellis spike conventions") | proven in spike | spikes/3dpipeline/models/furniture/ ×3 GLB (unpromoted); zero in client/assets | T-961, T-995 (ObjectTag vocab, backlog) |
|
||||
| Items | docs/design/icon-set-v01.md (HUD/inventory icons only) | D-086 icon constraints | SVG icon_ prefix (client/assets/icons/) | n/a for icons | 13 SVGs in client/assets/icons/ | none for in-world item sprites |
|
||||
| Cars/vehicles | none found | none | none | spike only | spikes/3dpipeline/models/props/vw_beetle.glb (spike) | none — Q-067 open ("driveable vs NPC traffic?") |
|
||||
| Lamp posts | none found (zero repo hits) | none | none | unused | none | T-961 text mention only |
|
||||
| Barns | none found (only T-750 epic text) | none | none | unused | none | none |
|
||||
| TVs | none found (only T-750 epic text) | none | none | unused | none | none |
|
||||
| Billboards | none found (only T-750 epic text; other hits = LOD impostors) | none | none | unused | none | none |
|
||||
| Characters (reference class — the working model) | docs/architecture/character-asset-organization.md + docs/design/character-visuals-spec.md | yes | full (manifest.json, seg_ naming, body-type keys) | proven end-to-end | 1002 files in client/assets/characters/ | done |
|
||||
|
||||
# Generation path (verified files)
|
||||
image-gen (.claude/skills/image-gen/SKILL.md + scripts/image_connector.py, Gemini) → glb-gen (SKILL.md + tooling/db/trellis_connector.py + tooling/trellis-batch.sh + Blender postprocess scripts) → sprite-gen (SKILL.md + scripts/render.sh) → renderer/ (project.godot, render_scene.tscn, render_export.gd; D-019 camera, 3-light rig, 1024/256/64 chain) → client/assets/sprites/. renderer/output/ holds only .gdignore (intermediates gitignored).
|
||||
|
||||
# Produced assets in client/assets (non-.import files)
|
||||
audio 16 · characters 1002 · fonts 3 · icons 13 · planets 7 · sprites 9 (npc_generic ×4, wall_structural ×4, .gitkeep) · theme 1 · tilesets 1 (.gitkeep only)
|
||||
|
||||
---
|
||||
Refinement (2026-06-16, /whats-next Si pass) — READY. This is a PLANNING task: break T-961 into per-class child stories.
|
||||
|
||||
CLASS LIST (8 stories, parented under T-961, each gated on a one-page brief): station walls, rural walls, doors, floors, furniture/props, street furniture (lamp posts), signage/screens (TVs/billboards), rural structures (barns).
|
||||
- CARS (9th class named in T-750): DEFERRED — Q-067 needs a phase decision (Phase-4 deliverable vs Phase-5+) before any car story. File a deferral note, not a story.
|
||||
- Q-119 (generic-parent placeholder set as milestone-0): NOT a blocker — sequencing only. On each relevant story note that the generic parents (generic_wall/roof/facade/street + generic_door/floor/furniture; D-235 / wiki/economics/architecture_trait_catalog.toml:33-41) are milestone-0 IF Q-119 resolves "yes".
|
||||
|
||||
BRIEF TEMPLATE: none exists. Create docs/assets/_templates/asset-brief.md (scope · visual reference · naming/resolution conventions · generation path · acceptance), or adopt docs/_templates/design.md. Each story states where its brief + catalog file live under docs/assets/visual/.
|
||||
READ before filing: docs/assets/README.md, docs/design/{placeholder-art-spec-v01,visual-grammar-v01}.md, docs/workshops/art-direction-mood-board/workshop-outcomes.md, D-235/D-228/D-232, docs/architecture/character-asset-organization.md (the reference model).
|
||||
NOTE: T-1050 (sibling) owns the catalog + naming conventions these stories reference — sequence T-1049 to consume T-1050''s conventions where they overlap.
|
||||
|
||||
---
|
||||
HELD 2026-06-16 (separated from the cascade batch; needs re-scoping before resuming).
|
||||
The asset pipeline this ticket assumes is sprite-centric (docs/assets/visual/sprites.md
|
||||
"Entities", _templates/sprite.md, SPR/FUR/TILE/ICO/FX prefixes, the /sprite-gen
|
||||
render-3D->2D-sprites step). Direction correction: we are NOT producing sprites — Trellis
|
||||
produces 3D objects (.glb) displayed in-world; the only flattened 2D content is TEXTURES.
|
||||
Re-scope this ticket around a 3D-model + texture catalog (not a sprite catalog) before
|
||||
activating. See the sprite-vs-3D root-cause note (this session).', '(description follows in first append)
|
||||
|
||||
Filed 2026-06-12 from the fable-ous.md audit (S-43; citations adversarially verified).
|
||||
T-961 (two-sentence description, no acceptance criteria, no brief links) is the only asset-production ticket under T-750, while the epic names eight classes; cars, barns, TVs, billboards appear in NO ticket at all (verified against the full corpus). Refine into child stories per class — station walls, rural walls, doors, floors, furniture/props, street furniture (lamp posts), signage/screens (billboards/TVs), rural structures (barns) — each gated on a one-page brief; explicitly record which classes are deferred (cars: see Q-067 audit note). Decide Q-119 (generic-parent placeholder set as first milestone) before sequencing.
|
||||
Audit per-class status matrix (verified 2026-06-12):
|
||||
# docs/assets/ survey (13 files + downloads/)
|
||||
|
||||
| File | One-line summary |
|
||||
|---|---|
|
||||
| README.md | Master index: audio/visual/video pipelines, status vocabulary (planned/in-progress/placeholder/final), structure that promises visual/{sprites,furniture,tilesets,icons,effects}.md |
|
||||
| _templates/audio.md | Row + detailed-entry template for audio assets |
|
||||
| _templates/sprite.md | Row + detailed-entry template for sprites (ID prefixes SPR/FUR/TILE/ICO/FX, status, method, directions columns) |
|
||||
| _templates/video.md | Row + detailed-entry template for video |
|
||||
| audio/README.md | ACTIVE production-status catalog — per-category counts table (12 assets tracked), generation tools, bus architecture |
|
||||
| audio/palette.md | Sonic style bible |
|
||||
| audio/ambient.md / sfx.md / ui.md | Per-category audio asset tables |
|
||||
| visual/README.md | STUB — links 5 category files that do not exist, all counts 0 |
|
||||
| visual/palette.md | STUB — 4 bullet decisions (D-019/D-033/D-045, "functional warmth"), defers to art-direction workshop |
|
||||
| video/README.md / palette.md | Stubs |
|
||||
| downloads/ | Purchased character sources (Quaternius Universal Base Characters, Modular Character Outfits FBX) — characters only |
|
||||
|
||||
# Per-asset-class matrix
|
||||
|
||||
| Class | Written brief | Style guide | Naming/res conventions | Gen path | Produced assets | Tickets |
|
||||
|---|---|---|---|---|---|---|
|
||||
| Walls (station) | art-direction workshop-outcomes.md §3.3 (v0.1.1 set, pre-cascade) + docs/design/placeholder-art-spec-v01.md §2.1 | visual-grammar-v01.md §1/§4.3, workshop-outcomes §1.8 era palette (partly superseded by D-235), D-235 WallMaterial vocab | renderer/README.md:80-95 (`<model>_<dir>_<res>.png`, 1024→256→64 chain) | working — renderer/models/wall_structural.tscn rendered | wall_structural ×4 dirs in client/assets/sprites/; wall_bar_green model unrendered; 2 textures | T-961 (backlog), T-988 (token vocab, backlog) |
|
||||
| Walls (rural) | none found | D-235 tokens only (timber/rammed-earth etc.) | renderer/README.md (generic) | same path, unused | none | T-961 text mention only |
|
||||
| Doors | placeholder-art-spec-v01.md §2.1 (procedural rects, v0.1) + workshop-outcomes §3.3 `door_sliding` | none for generated world | none for open/closed state frames | same path, unused | none | T-979/T-998 (DoorSpec — logical only), T-961 |
|
||||
| Floors | placeholder-art-spec-v01.md §2.1 + workshop-outcomes §3.3 (4 floor sprites) | D-228 FloorMaterial axis (open vocab) | 64px visual tile (placeholder-art-spec §1) | same path, unused | none — client/assets/tilesets/ is .gitkeep only | T-959 (tile fill, logical), T-961 |
|
||||
| Styled buildings | D-232 + D-235 + wiki/economics/architecture_trait_catalog.toml (T-1005 done, ~35 visual bundles) | D-235 material/color-register grammar — tokens only, no rendered art direction | token→fallback-parent chain (catalog header :34-44) | no model/texture path defined for building exteriors | none | T-977, T-988, T-994, T-1004 (all backlog), T-1005 (done) |
|
||||
| Furniture | docs/assets/visual/furniture.md MISSING (linked); workshop-outcomes §3.3 lists 8-10 objects (pre-cascade) | era table §1.8 only | character-asset-organization.md explicitly excludes furniture ("follow Trellis spike conventions") | proven in spike | spikes/3dpipeline/models/furniture/ ×3 GLB (unpromoted); zero in client/assets | T-961, T-995 (ObjectTag vocab, backlog) |
|
||||
| Items | docs/design/icon-set-v01.md (HUD/inventory icons only) | D-086 icon constraints | SVG icon_ prefix (client/assets/icons/) | n/a for icons | 13 SVGs in client/assets/icons/ | none for in-world item sprites |
|
||||
| Cars/vehicles | none found | none | none | spike only | spikes/3dpipeline/models/props/vw_beetle.glb (spike) | none — Q-067 open ("driveable vs NPC traffic?") |
|
||||
| Lamp posts | none found (zero repo hits) | none | none | unused | none | T-961 text mention only |
|
||||
| Barns | none found (only T-750 epic text) | none | none | unused | none | none |
|
||||
| TVs | none found (only T-750 epic text) | none | none | unused | none | none |
|
||||
| Billboards | none found (only T-750 epic text; other hits = LOD impostors) | none | none | unused | none | none |
|
||||
| Characters (reference class — the working model) | docs/architecture/character-asset-organization.md + docs/design/character-visuals-spec.md | yes | full (manifest.json, seg_ naming, body-type keys) | proven end-to-end | 1002 files in client/assets/characters/ | done |
|
||||
|
||||
# Generation path (verified files)
|
||||
image-gen (.claude/skills/image-gen/SKILL.md + scripts/image_connector.py, Gemini) → glb-gen (SKILL.md + tooling/db/trellis_connector.py + tooling/trellis-batch.sh + Blender postprocess scripts) → sprite-gen (SKILL.md + scripts/render.sh) → renderer/ (project.godot, render_scene.tscn, render_export.gd; D-019 camera, 3-light rig, 1024/256/64 chain) → client/assets/sprites/. renderer/output/ holds only .gdignore (intermediates gitignored).
|
||||
|
||||
# Produced assets in client/assets (non-.import files)
|
||||
audio 16 · characters 1002 · fonts 3 · icons 13 · planets 7 · sprites 9 (npc_generic ×4, wall_structural ×4, .gitkeep) · theme 1 · tilesets 1 (.gitkeep only)
|
||||
|
||||
---
|
||||
Refinement (2026-06-16, /whats-next Si pass) — READY. This is a PLANNING task: break T-961 into per-class child stories.
|
||||
|
||||
CLASS LIST (8 stories, parented under T-961, each gated on a one-page brief): station walls, rural walls, doors, floors, furniture/props, street furniture (lamp posts), signage/screens (TVs/billboards), rural structures (barns).
|
||||
- CARS (9th class named in T-750): DEFERRED — Q-067 needs a phase decision (Phase-4 deliverable vs Phase-5+) before any car story. File a deferral note, not a story.
|
||||
- Q-119 (generic-parent placeholder set as milestone-0): NOT a blocker — sequencing only. On each relevant story note that the generic parents (generic_wall/roof/facade/street + generic_door/floor/furniture; D-235 / wiki/economics/architecture_trait_catalog.toml:33-41) are milestone-0 IF Q-119 resolves "yes".
|
||||
|
||||
BRIEF TEMPLATE: none exists. Create docs/assets/_templates/asset-brief.md (scope · visual reference · naming/resolution conventions · generation path · acceptance), or adopt docs/_templates/design.md. Each story states where its brief + catalog file live under docs/assets/visual/.
|
||||
READ before filing: docs/assets/README.md, docs/design/{placeholder-art-spec-v01,visual-grammar-v01}.md, docs/workshops/art-direction-mood-board/workshop-outcomes.md, D-235/D-228/D-232, docs/architecture/character-asset-organization.md (the reference model).
|
||||
NOTE: T-1050 (sibling) owns the catalog + naming conventions these stories reference — sequence T-1049 to consume T-1050''s conventions where they overlap.
|
||||
|
||||
---
|
||||
HELD 2026-06-16 (separated from the cascade batch; needs re-scoping before resuming).
|
||||
The asset pipeline this ticket assumes is sprite-centric (docs/assets/visual/sprites.md
|
||||
"Entities", _templates/sprite.md, SPR/FUR/TILE/ICO/FX prefixes, the /sprite-gen
|
||||
render-3D->2D-sprites step). Direction correction: we are NOT producing sprites — Trellis
|
||||
produces 3D objects (.glb) displayed in-world; the only flattened 2D content is TEXTURES.
|
||||
Re-scope this ticket around a 3D-model + texture catalog (not a sprite catalog) before
|
||||
activating. See the sprite-vs-3D root-cause note (this session).
|
||||
|
||||
Refinement (batch-6 Si pass, 2026-07-25) — SUPERSEDES the 2026-06-16 READY block
|
||||
(sprite-era, invalidated by D-244) and the 2026-06-16 HELD note. T-1050 (catalog +
|
||||
conventions.md + manifest.json) and T-1052 (palette.md style bible) are both DONE
|
||||
(PR #211, merged 2026-07-25) — the conventions this ticket needed to consume now
|
||||
exist and are read, not hypothetical.
|
||||
|
||||
SCOPE, 3D REALITY: T-961 breaks into per-asset-class stories, each gated on a
|
||||
one-page brief. A "written brief" is now a short doc that states, per class:
|
||||
(1) scope — which manifest category (furniture|props) and which D-235 ObjectTag
|
||||
axis if any; (2) visual reference — cites palette.md §3''s hue/grain/weathering
|
||||
register for the relevant token(s), or palette.md §2 toon/PBR default for classes
|
||||
with no D-235 token; (3) naming — conventions.md §1 model naming
|
||||
(<category>_<descriptor>.glb), §2 mask sidecar if tintable, §4 footprint_tiles if
|
||||
multi-tile; (4) generation path — /image-gen concept → /glb-gen (Trellis) →
|
||||
postprocess → promotion into client/assets/models/{furniture,props}/ +
|
||||
manifest.json entry (conventions.md, models.md); (5) acceptance — N assets at
|
||||
"planned" status registered in the manifest with a real manifest.json entry,
|
||||
status flips as production proceeds (models.md''s shared status vocab).
|
||||
|
||||
BRIEF TEMPLATE (create docs/assets/_templates/asset-brief.md): the five headers
|
||||
above (scope / visual reference / naming / gen path / acceptance), one page,
|
||||
adopting docs/_templates/design.md frontmatter. Do NOT reuse _templates/sprite.md
|
||||
(SPR/FUR/TILE/ICO/FX prefixes) — explicitly retired by D-244/T-1050.
|
||||
|
||||
CLASS LIST — station walls, rural walls, doors, floors, furniture/props already
|
||||
have partial prior art (station walls: wall_structural GLB exists unrendered per
|
||||
the 2026-06-12 audit matrix; doors: DoorSpec logical model exists, T-979/T-998;
|
||||
floors: D-228 FloorMaterial axis exists) — each gets a real story + brief, citing
|
||||
its relevant D-235 axis (wall/roof/facade/street) or, for doors/floors/furniture,
|
||||
the non-ObjectTag conventions (mask sidecars, footprint_tiles).
|
||||
|
||||
STREET FURNITURE / SIGNAGE-SCREENS / RURAL STRUCTURES (lamp posts, barns,
|
||||
TVs, billboards — T-1051''s four classes): RECOMMEND FORMAL DEFERRAL, not real
|
||||
briefs, this batch. Rationale: Phase 4''s deliverable is "deterministic
|
||||
walkable-world data + per-layer Atlas maps + asset catalog" (cascade table) —
|
||||
outside-in generation (D-166) needs building EXTERIOR templates
|
||||
(D-235 wall/roof/facade/street axes) to make districts/blocks walkable and
|
||||
Atlas-legible. Lamp posts (street furniture), TVs/billboards (signage/screens
|
||||
placed as interior or exterior set-dressing), and barns (a rural building
|
||||
*type*, not a wall/roof/facade axis token) are furniture-tier detail objects
|
||||
that populate a walkable exterior once it exists — they read as Phase 6
|
||||
"detail coloring / room-level population" (cascade table) or, at best, late
|
||||
Phase 4 polish, not blocking asset classes for getting the world walkable.
|
||||
Zero repo hits exist for any of the four beyond epic text (T-1049''s own 2026-06-12
|
||||
audit matrix, unchanged) — there is no partial work to protect by deferring.
|
||||
Treat identically to Q-067''s car deferral: file a deferral note on the story
|
||||
(or fold into one placeholder story "T-1051 classes — deferred pending Phase 4
|
||||
exterior-generation completion"), do not write real briefs now. Distinguish from
|
||||
cars only in degree, not in kind — Q-067 is a still-open decision question
|
||||
(vehicle simulation is a bigger unresolved design surface); the T-1051 four are
|
||||
simpler set-dressing whose deferral needs no open question, just a scope note,
|
||||
because nothing about their eventual brief depends on an undecided mechanic.
|
||||
|
||||
Q-119 (generic-parent placeholder set as milestone-0) is STILL OPEN (unresolved
|
||||
as of this pass) — unchanged from the prior block: not a blocker, sequencing-only.
|
||||
Each relevant story notes the generic_wall/roof/facade/street (+ generic
|
||||
door/floor/furniture) parents as milestone-0 IF Q-119 resolves yes.
|
||||
|
||||
READ before filing: docs/assets/visual/{conventions,palette,models,textures,
|
||||
artwork}.md (T-1050/T-1052, merged), D-244, D-257, D-235 (ratified token list),
|
||||
D-243 (footprint unit), docs/architecture/character-asset-organization.md
|
||||
(mask/manifest precedent).
|
||||
|
||||
VERDICT: READY (activation = batch 6; the T-1051 deferral recommendation above is
|
||||
ratified at activation, then T-1051 is updated to match the ruling this ticket records).', NULL, '2026-07-25 19:00:33', '2026-07-25 19:00:33.469', '2026-07-25 19:00:33.469', NULL, 'f74a4367cd0a4eb2664f4d575e7d31c2', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FBPTXPZ0ZTM1QQXD5K972CMM', 'description', '(description follows in first append)', '(description follows in first append)
|
||||
|
||||
Refinement (batch-6 Si pass, 2026-07-25) — READY.
|
||||
|
||||
WHAT''S WRONG WITH THE CURRENT BRIEFING: frozen at the 2026-03-13 v0.2 pivot.
|
||||
(1) Frames the role around "v0.2 Pivot — Key Changes" — v0.2 is formally dropped
|
||||
("No scoping negotiations. Build the base systems fully"), so the framing section
|
||||
is obsolete, not just outdated. (2) Assumes the sprite-era pipeline throughout
|
||||
("Phase 1-3 placeholder art pipeline," "sprite replacements" in Phase 4) —
|
||||
contradicted by D-244 (3D objects in-world, no per-object sprite layer) and D-149
|
||||
(live 3D characters). (3) Cites D-019 as simply "top-down art style" with no note
|
||||
that D-148 superseded it for gameplay (palette.md §1 had to correct exactly this
|
||||
conflation in its own stub — the briefing repeats the same error). (4) Zone visual
|
||||
grammar / tile palette framing predates D-235''s ObjectTag vocabulary and D-232''s
|
||||
trait-template catalog entirely. (5) Character customisation section (D-126,
|
||||
Q-WTF-039/040) predates the shipped D-159–D-164 body-type + slot-compositing
|
||||
system and the wardrobe/garment-token pipeline — describes a design question that
|
||||
has since been built. (6) No mention of the Atlas at all (D-255 stepped ladder,
|
||||
D-169/D-170 implant UI) despite araminta being a named co-designer of D-255''s
|
||||
named-feature encoding/payload schema/lakes work.
|
||||
|
||||
WHAT THE REWRITE MUST CONTAIN:
|
||||
- Role framing: visual art direction for the Phase-4 asset pipeline + Atlas
|
||||
map-art rendering (not "generator spike prerequisites").
|
||||
- palette.md (T-1052, merged) as the SINGLE LIVE STYLE AUTHORITY — point to it,
|
||||
do not restate camera/color/material content (avoids a second drifting copy;
|
||||
visual-grammar-v01.md / workshop-outcomes.md supersession is palette.md §5''s
|
||||
to state, the briefing defers).
|
||||
- conventions.md (T-1050, merged) for naming/mask/manifest mechanics — note the
|
||||
category-first naming ruling (conventions.md §1) and the D-257 toon/PBR ruling
|
||||
with glazing carve-out as HER standing rulings she''ll be asked to extend.
|
||||
- D-235 ObjectTag vocabulary as the logical layer she renders a look on top of —
|
||||
co-maintained with Miri per D-235''s own text.
|
||||
- The character wardrobe pipeline (character-asset-organization.md) as the proven
|
||||
reference model conventions.md imitates (mask sidecars, manifest schema).
|
||||
- D-255 stepped Atlas as active/ongoing work she co-designed.
|
||||
- Current open items: T-1049 (per-class asset stories, re-scoped this batch), the
|
||||
D-257 glazing shader implementation (unassigned per palette.md §2.3), Q-119
|
||||
(generic-parent milestone question, hers to weigh in on per D-235
|
||||
co-maintenance).
|
||||
- Drop: v0.2 pivot section, Q-WTF-039/040, tycoon-bookmark/apartment-wakeup
|
||||
framing, and the v0.2-era decision list (D-114/D-117/D-119/D-122/D-128/D-131/
|
||||
D-135) — verify each against current decision status before dropping outright;
|
||||
a few (D-033 entity color, D-126 customisation dimensions) may still have live
|
||||
sub-parts even though the surrounding section is obsolete.
|
||||
|
||||
ACCEPTANCE: rewritten briefing reflects the current Phase-4 landscape (D-235,
|
||||
D-244, D-257, D-255), points to palette.md/conventions.md as live authorities
|
||||
rather than duplicating content, drops v0.2-pivot and superseded-question
|
||||
framing, lists araminta''s actual current/open tickets.
|
||||
|
||||
SEQUENCING: independent of T-1049 (different files, no shared input) — both can
|
||||
run in the same batch.', NULL, '2026-07-25 19:00:36', '2026-07-25 19:00:36.464', '2026-07-25 19:00:36.464', NULL, 'ebe504fa1213997aad9ae74f82212f6f', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FSM3MQ5GFSPKKFJF6GGZN8CM', 'description', 'Araminta''s PR #192 companion note, kept open by her PR #208 ruling (option b): the Quarter-vs-District relief-differentiation check was accepted for the T-1160 merge on a plains/river substitution (GJ380c world center -17723392,-10532864 — Quarter clearly shows finer higher-frequency texture than District), but plains texture and jagged tectonic relief are different visual regimes and the sharper case still needs its own capture. Task: identify the body pool with tectonics:high (or planet_class values mapping to TectonicClass::Volcanic/Active) and RECORD the pool in this ticket first — the PR #208 eyeball proved GJ380c/GJ820Bc are both tectonics:low via exhaustive two-Global color scans, don''t re-run that search blind — then capture quarter-relief vs district-relief at a true Alpine/MountainPass crop (MorphologyZone 13/14) at the same world center, matched crop, and have Araminta judge the differentiation. Reuse the pr208_driver fixed-center --step protocol (T-1157 harness inventory). Related: T-1160, PR #192, PR #208.', 'Araminta''s PR #192 companion note, kept open by her PR #208 ruling (option b): the Quarter-vs-District relief-differentiation check was accepted for the T-1160 merge on a plains/river substitution (GJ380c world center -17723392,-10532864 — Quarter clearly shows finer higher-frequency texture than District), but plains texture and jagged tectonic relief are different visual regimes and the sharper case still needs its own capture. Task: identify the body pool with tectonics:high (or planet_class values mapping to TectonicClass::Volcanic/Active) and RECORD the pool in this ticket first — the PR #208 eyeball proved GJ380c/GJ820Bc are both tectonics:low via exhaustive two-Global color scans, don''t re-run that search blind — then capture quarter-relief vs district-relief at a true Alpine/MountainPass crop (MorphologyZone 13/14) at the same world center, matched crop, and have Araminta judge the differentiation. Reuse the pr208_driver fixed-center --step protocol (T-1157 harness inventory). Related: T-1160, PR #192, PR #208.
|
||||
|
||||
POOL RECORDED (2026-07-25, read-only survey per this ticket''s own first step —
|
||||
do not re-run the search blind).
|
||||
|
||||
MAPPING MECHANISM: server/src/atlas/district_profile.rs:296-312
|
||||
derive_tectonic_class(): BodyParams::tectonic_activity authored override first
|
||||
("volcanic"/"active"/"tidally_forced", NO column in current systems.db schema and
|
||||
no authored overrides in the wiki TOMLs — so today the override path is dead),
|
||||
else planet_class fallback: "volcanic" → Volcanic; "oceanic"/"ocean_world" →
|
||||
Active; everything else → Stable. Sanity anchors agree with the PR #208 eyeball:
|
||||
GJ380c (arid) and GJ820Bc (arid) both → Stable.
|
||||
|
||||
THE FULL POOL (7 bodies):
|
||||
- Volcanic: GJ0c (Venus, no heightmap), GJ0f-1 (Io, no heightmap), GJ4056b
|
||||
(heightmap, airless, relief_energy_q=1.0), GJ660Ad (Seongho Prime, heightmap,
|
||||
thin atmosphere, relief_energy_q=1.0)
|
||||
- Active: GJ1002b (Caparica, heightmap, island world, standard atmosphere),
|
||||
GJ103c (Vlieland, heightmap, island world, standard atmosphere), GJ447c
|
||||
(Marevna, heightmap, ocean world) — all relief_energy_q=0.70 per D-239 §5.
|
||||
|
||||
CAPTURE RECOMMENDATION (lead): for the true Alpine/MountainPass (MorphologyZone
|
||||
13/14) crop this ticket wants, the Active terrestrial island worlds GJ1002b and
|
||||
GJ103c are the primary candidates (coastal orogeny, standard climate — closest
|
||||
analogue to the GJ380c plains/river substitution being replaced). The Volcanic
|
||||
pair (GJ4056b, GJ660Ad) are alternates with maximum relief energy but
|
||||
airless/thin atmospheres — shield/lava-field morphology, likely NOT
|
||||
Alpine-classed; use only if the Active pair fails to produce MorphologyZone
|
||||
13/14 crops. GJ0c/GJ0f-1 lack terrain_reference and cannot open in the Atlas.', NULL, '2026-07-25 19:00:39', '2026-07-25 19:00:39.731', '2026-07-25 19:00:39.731', NULL, '194ab5efa1ff3b059c0296830334f801', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
|
||||
@@ -3887,3 +3887,215 @@ archiving/marking those superseded, or by palette.md stating exactly what it inh
|
||||
Lead note (batch-5 activation): the toon-vs-PBR treatment call for environment props is delegated to
|
||||
araminta (art seat) this batch — her ruling lands in palette.md with rationale; surfaced to Jeroen in
|
||||
the batch report for cheap veto. VERDICT: READY.', 'done', 'medium', 'araminta', 'visual', 'D-235', '2026-06-12 10:40:59', '2026-07-25 18:55:08.787', NULL, '0c2f33e6e2b24c61cff46c61d2df9a8f', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash);
|
||||
INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FBPTXPE8FR7TGEM7X6QVPV4M', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Refine T-961 into per-asset-class stories, each gated on a written brief', '(description follows in first append)
|
||||
|
||||
Filed 2026-06-12 from the fable-ous.md audit (S-43; citations adversarially verified).
|
||||
T-961 (two-sentence description, no acceptance criteria, no brief links) is the only asset-production ticket under T-750, while the epic names eight classes; cars, barns, TVs, billboards appear in NO ticket at all (verified against the full corpus). Refine into child stories per class — station walls, rural walls, doors, floors, furniture/props, street furniture (lamp posts), signage/screens (billboards/TVs), rural structures (barns) — each gated on a one-page brief; explicitly record which classes are deferred (cars: see Q-067 audit note). Decide Q-119 (generic-parent placeholder set as first milestone) before sequencing.
|
||||
Audit per-class status matrix (verified 2026-06-12):
|
||||
# docs/assets/ survey (13 files + downloads/)
|
||||
|
||||
| File | One-line summary |
|
||||
|---|---|
|
||||
| README.md | Master index: audio/visual/video pipelines, status vocabulary (planned/in-progress/placeholder/final), structure that promises visual/{sprites,furniture,tilesets,icons,effects}.md |
|
||||
| _templates/audio.md | Row + detailed-entry template for audio assets |
|
||||
| _templates/sprite.md | Row + detailed-entry template for sprites (ID prefixes SPR/FUR/TILE/ICO/FX, status, method, directions columns) |
|
||||
| _templates/video.md | Row + detailed-entry template for video |
|
||||
| audio/README.md | ACTIVE production-status catalog — per-category counts table (12 assets tracked), generation tools, bus architecture |
|
||||
| audio/palette.md | Sonic style bible |
|
||||
| audio/ambient.md / sfx.md / ui.md | Per-category audio asset tables |
|
||||
| visual/README.md | STUB — links 5 category files that do not exist, all counts 0 |
|
||||
| visual/palette.md | STUB — 4 bullet decisions (D-019/D-033/D-045, "functional warmth"), defers to art-direction workshop |
|
||||
| video/README.md / palette.md | Stubs |
|
||||
| downloads/ | Purchased character sources (Quaternius Universal Base Characters, Modular Character Outfits FBX) — characters only |
|
||||
|
||||
# Per-asset-class matrix
|
||||
|
||||
| Class | Written brief | Style guide | Naming/res conventions | Gen path | Produced assets | Tickets |
|
||||
|---|---|---|---|---|---|---|
|
||||
| Walls (station) | art-direction workshop-outcomes.md §3.3 (v0.1.1 set, pre-cascade) + docs/design/placeholder-art-spec-v01.md §2.1 | visual-grammar-v01.md §1/§4.3, workshop-outcomes §1.8 era palette (partly superseded by D-235), D-235 WallMaterial vocab | renderer/README.md:80-95 (`<model>_<dir>_<res>.png`, 1024→256→64 chain) | working — renderer/models/wall_structural.tscn rendered | wall_structural ×4 dirs in client/assets/sprites/; wall_bar_green model unrendered; 2 textures | T-961 (backlog), T-988 (token vocab, backlog) |
|
||||
| Walls (rural) | none found | D-235 tokens only (timber/rammed-earth etc.) | renderer/README.md (generic) | same path, unused | none | T-961 text mention only |
|
||||
| Doors | placeholder-art-spec-v01.md §2.1 (procedural rects, v0.1) + workshop-outcomes §3.3 `door_sliding` | none for generated world | none for open/closed state frames | same path, unused | none | T-979/T-998 (DoorSpec — logical only), T-961 |
|
||||
| Floors | placeholder-art-spec-v01.md §2.1 + workshop-outcomes §3.3 (4 floor sprites) | D-228 FloorMaterial axis (open vocab) | 64px visual tile (placeholder-art-spec §1) | same path, unused | none — client/assets/tilesets/ is .gitkeep only | T-959 (tile fill, logical), T-961 |
|
||||
| Styled buildings | D-232 + D-235 + wiki/economics/architecture_trait_catalog.toml (T-1005 done, ~35 visual bundles) | D-235 material/color-register grammar — tokens only, no rendered art direction | token→fallback-parent chain (catalog header :34-44) | no model/texture path defined for building exteriors | none | T-977, T-988, T-994, T-1004 (all backlog), T-1005 (done) |
|
||||
| Furniture | docs/assets/visual/furniture.md MISSING (linked); workshop-outcomes §3.3 lists 8-10 objects (pre-cascade) | era table §1.8 only | character-asset-organization.md explicitly excludes furniture ("follow Trellis spike conventions") | proven in spike | spikes/3dpipeline/models/furniture/ ×3 GLB (unpromoted); zero in client/assets | T-961, T-995 (ObjectTag vocab, backlog) |
|
||||
| Items | docs/design/icon-set-v01.md (HUD/inventory icons only) | D-086 icon constraints | SVG icon_ prefix (client/assets/icons/) | n/a for icons | 13 SVGs in client/assets/icons/ | none for in-world item sprites |
|
||||
| Cars/vehicles | none found | none | none | spike only | spikes/3dpipeline/models/props/vw_beetle.glb (spike) | none — Q-067 open ("driveable vs NPC traffic?") |
|
||||
| Lamp posts | none found (zero repo hits) | none | none | unused | none | T-961 text mention only |
|
||||
| Barns | none found (only T-750 epic text) | none | none | unused | none | none |
|
||||
| TVs | none found (only T-750 epic text) | none | none | unused | none | none |
|
||||
| Billboards | none found (only T-750 epic text; other hits = LOD impostors) | none | none | unused | none | none |
|
||||
| Characters (reference class — the working model) | docs/architecture/character-asset-organization.md + docs/design/character-visuals-spec.md | yes | full (manifest.json, seg_ naming, body-type keys) | proven end-to-end | 1002 files in client/assets/characters/ | done |
|
||||
|
||||
# Generation path (verified files)
|
||||
image-gen (.claude/skills/image-gen/SKILL.md + scripts/image_connector.py, Gemini) → glb-gen (SKILL.md + tooling/db/trellis_connector.py + tooling/trellis-batch.sh + Blender postprocess scripts) → sprite-gen (SKILL.md + scripts/render.sh) → renderer/ (project.godot, render_scene.tscn, render_export.gd; D-019 camera, 3-light rig, 1024/256/64 chain) → client/assets/sprites/. renderer/output/ holds only .gdignore (intermediates gitignored).
|
||||
|
||||
# Produced assets in client/assets (non-.import files)
|
||||
audio 16 · characters 1002 · fonts 3 · icons 13 · planets 7 · sprites 9 (npc_generic ×4, wall_structural ×4, .gitkeep) · theme 1 · tilesets 1 (.gitkeep only)
|
||||
|
||||
---
|
||||
Refinement (2026-06-16, /whats-next Si pass) — READY. This is a PLANNING task: break T-961 into per-class child stories.
|
||||
|
||||
CLASS LIST (8 stories, parented under T-961, each gated on a one-page brief): station walls, rural walls, doors, floors, furniture/props, street furniture (lamp posts), signage/screens (TVs/billboards), rural structures (barns).
|
||||
- CARS (9th class named in T-750): DEFERRED — Q-067 needs a phase decision (Phase-4 deliverable vs Phase-5+) before any car story. File a deferral note, not a story.
|
||||
- Q-119 (generic-parent placeholder set as milestone-0): NOT a blocker — sequencing only. On each relevant story note that the generic parents (generic_wall/roof/facade/street + generic_door/floor/furniture; D-235 / wiki/economics/architecture_trait_catalog.toml:33-41) are milestone-0 IF Q-119 resolves "yes".
|
||||
|
||||
BRIEF TEMPLATE: none exists. Create docs/assets/_templates/asset-brief.md (scope · visual reference · naming/resolution conventions · generation path · acceptance), or adopt docs/_templates/design.md. Each story states where its brief + catalog file live under docs/assets/visual/.
|
||||
READ before filing: docs/assets/README.md, docs/design/{placeholder-art-spec-v01,visual-grammar-v01}.md, docs/workshops/art-direction-mood-board/workshop-outcomes.md, D-235/D-228/D-232, docs/architecture/character-asset-organization.md (the reference model).
|
||||
NOTE: T-1050 (sibling) owns the catalog + naming conventions these stories reference — sequence T-1049 to consume T-1050''s conventions where they overlap.
|
||||
|
||||
---
|
||||
HELD 2026-06-16 (separated from the cascade batch; needs re-scoping before resuming).
|
||||
The asset pipeline this ticket assumes is sprite-centric (docs/assets/visual/sprites.md
|
||||
"Entities", _templates/sprite.md, SPR/FUR/TILE/ICO/FX prefixes, the /sprite-gen
|
||||
render-3D->2D-sprites step). Direction correction: we are NOT producing sprites — Trellis
|
||||
produces 3D objects (.glb) displayed in-world; the only flattened 2D content is TEXTURES.
|
||||
Re-scope this ticket around a 3D-model + texture catalog (not a sprite catalog) before
|
||||
activating. See the sprite-vs-3D root-cause note (this session).
|
||||
|
||||
Refinement (batch-6 Si pass, 2026-07-25) — SUPERSEDES the 2026-06-16 READY block
|
||||
(sprite-era, invalidated by D-244) and the 2026-06-16 HELD note. T-1050 (catalog +
|
||||
conventions.md + manifest.json) and T-1052 (palette.md style bible) are both DONE
|
||||
(PR #211, merged 2026-07-25) — the conventions this ticket needed to consume now
|
||||
exist and are read, not hypothetical.
|
||||
|
||||
SCOPE, 3D REALITY: T-961 breaks into per-asset-class stories, each gated on a
|
||||
one-page brief. A "written brief" is now a short doc that states, per class:
|
||||
(1) scope — which manifest category (furniture|props) and which D-235 ObjectTag
|
||||
axis if any; (2) visual reference — cites palette.md §3''s hue/grain/weathering
|
||||
register for the relevant token(s), or palette.md §2 toon/PBR default for classes
|
||||
with no D-235 token; (3) naming — conventions.md §1 model naming
|
||||
(<category>_<descriptor>.glb), §2 mask sidecar if tintable, §4 footprint_tiles if
|
||||
multi-tile; (4) generation path — /image-gen concept → /glb-gen (Trellis) →
|
||||
postprocess → promotion into client/assets/models/{furniture,props}/ +
|
||||
manifest.json entry (conventions.md, models.md); (5) acceptance — N assets at
|
||||
"planned" status registered in the manifest with a real manifest.json entry,
|
||||
status flips as production proceeds (models.md''s shared status vocab).
|
||||
|
||||
BRIEF TEMPLATE (create docs/assets/_templates/asset-brief.md): the five headers
|
||||
above (scope / visual reference / naming / gen path / acceptance), one page,
|
||||
adopting docs/_templates/design.md frontmatter. Do NOT reuse _templates/sprite.md
|
||||
(SPR/FUR/TILE/ICO/FX prefixes) — explicitly retired by D-244/T-1050.
|
||||
|
||||
CLASS LIST — station walls, rural walls, doors, floors, furniture/props already
|
||||
have partial prior art (station walls: wall_structural GLB exists unrendered per
|
||||
the 2026-06-12 audit matrix; doors: DoorSpec logical model exists, T-979/T-998;
|
||||
floors: D-228 FloorMaterial axis exists) — each gets a real story + brief, citing
|
||||
its relevant D-235 axis (wall/roof/facade/street) or, for doors/floors/furniture,
|
||||
the non-ObjectTag conventions (mask sidecars, footprint_tiles).
|
||||
|
||||
STREET FURNITURE / SIGNAGE-SCREENS / RURAL STRUCTURES (lamp posts, barns,
|
||||
TVs, billboards — T-1051''s four classes): RECOMMEND FORMAL DEFERRAL, not real
|
||||
briefs, this batch. Rationale: Phase 4''s deliverable is "deterministic
|
||||
walkable-world data + per-layer Atlas maps + asset catalog" (cascade table) —
|
||||
outside-in generation (D-166) needs building EXTERIOR templates
|
||||
(D-235 wall/roof/facade/street axes) to make districts/blocks walkable and
|
||||
Atlas-legible. Lamp posts (street furniture), TVs/billboards (signage/screens
|
||||
placed as interior or exterior set-dressing), and barns (a rural building
|
||||
*type*, not a wall/roof/facade axis token) are furniture-tier detail objects
|
||||
that populate a walkable exterior once it exists — they read as Phase 6
|
||||
"detail coloring / room-level population" (cascade table) or, at best, late
|
||||
Phase 4 polish, not blocking asset classes for getting the world walkable.
|
||||
Zero repo hits exist for any of the four beyond epic text (T-1049''s own 2026-06-12
|
||||
audit matrix, unchanged) — there is no partial work to protect by deferring.
|
||||
Treat identically to Q-067''s car deferral: file a deferral note on the story
|
||||
(or fold into one placeholder story "T-1051 classes — deferred pending Phase 4
|
||||
exterior-generation completion"), do not write real briefs now. Distinguish from
|
||||
cars only in degree, not in kind — Q-067 is a still-open decision question
|
||||
(vehicle simulation is a bigger unresolved design surface); the T-1051 four are
|
||||
simpler set-dressing whose deferral needs no open question, just a scope note,
|
||||
because nothing about their eventual brief depends on an undecided mechanic.
|
||||
|
||||
Q-119 (generic-parent placeholder set as milestone-0) is STILL OPEN (unresolved
|
||||
as of this pass) — unchanged from the prior block: not a blocker, sequencing-only.
|
||||
Each relevant story notes the generic_wall/roof/facade/street (+ generic
|
||||
door/floor/furniture) parents as milestone-0 IF Q-119 resolves yes.
|
||||
|
||||
READ before filing: docs/assets/visual/{conventions,palette,models,textures,
|
||||
artwork}.md (T-1050/T-1052, merged), D-244, D-257, D-235 (ratified token list),
|
||||
D-243 (footprint unit), docs/architecture/character-asset-organization.md
|
||||
(mask/manifest precedent).
|
||||
|
||||
VERDICT: READY (activation = batch 6; the T-1051 deferral recommendation above is
|
||||
ratified at activation, then T-1051 is updated to match the ruling this ticket records).', 'backlog', 'high', NULL, 'visual', NULL, '2026-06-12 10:40:58', '2026-07-25 19:00:33.468', NULL, 'e7ab3b683997f5e8bf5e80ab8d270840', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash);
|
||||
INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FBPTXPZ0ZTM1QQXD5K972CMM', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Rewrite docs/briefings/araminta.md around the Phase-4 asset pipeline', '(description follows in first append)
|
||||
|
||||
Refinement (batch-6 Si pass, 2026-07-25) — READY.
|
||||
|
||||
WHAT''S WRONG WITH THE CURRENT BRIEFING: frozen at the 2026-03-13 v0.2 pivot.
|
||||
(1) Frames the role around "v0.2 Pivot — Key Changes" — v0.2 is formally dropped
|
||||
("No scoping negotiations. Build the base systems fully"), so the framing section
|
||||
is obsolete, not just outdated. (2) Assumes the sprite-era pipeline throughout
|
||||
("Phase 1-3 placeholder art pipeline," "sprite replacements" in Phase 4) —
|
||||
contradicted by D-244 (3D objects in-world, no per-object sprite layer) and D-149
|
||||
(live 3D characters). (3) Cites D-019 as simply "top-down art style" with no note
|
||||
that D-148 superseded it for gameplay (palette.md §1 had to correct exactly this
|
||||
conflation in its own stub — the briefing repeats the same error). (4) Zone visual
|
||||
grammar / tile palette framing predates D-235''s ObjectTag vocabulary and D-232''s
|
||||
trait-template catalog entirely. (5) Character customisation section (D-126,
|
||||
Q-WTF-039/040) predates the shipped D-159–D-164 body-type + slot-compositing
|
||||
system and the wardrobe/garment-token pipeline — describes a design question that
|
||||
has since been built. (6) No mention of the Atlas at all (D-255 stepped ladder,
|
||||
D-169/D-170 implant UI) despite araminta being a named co-designer of D-255''s
|
||||
named-feature encoding/payload schema/lakes work.
|
||||
|
||||
WHAT THE REWRITE MUST CONTAIN:
|
||||
- Role framing: visual art direction for the Phase-4 asset pipeline + Atlas
|
||||
map-art rendering (not "generator spike prerequisites").
|
||||
- palette.md (T-1052, merged) as the SINGLE LIVE STYLE AUTHORITY — point to it,
|
||||
do not restate camera/color/material content (avoids a second drifting copy;
|
||||
visual-grammar-v01.md / workshop-outcomes.md supersession is palette.md §5''s
|
||||
to state, the briefing defers).
|
||||
- conventions.md (T-1050, merged) for naming/mask/manifest mechanics — note the
|
||||
category-first naming ruling (conventions.md §1) and the D-257 toon/PBR ruling
|
||||
with glazing carve-out as HER standing rulings she''ll be asked to extend.
|
||||
- D-235 ObjectTag vocabulary as the logical layer she renders a look on top of —
|
||||
co-maintained with Miri per D-235''s own text.
|
||||
- The character wardrobe pipeline (character-asset-organization.md) as the proven
|
||||
reference model conventions.md imitates (mask sidecars, manifest schema).
|
||||
- D-255 stepped Atlas as active/ongoing work she co-designed.
|
||||
- Current open items: T-1049 (per-class asset stories, re-scoped this batch), the
|
||||
D-257 glazing shader implementation (unassigned per palette.md §2.3), Q-119
|
||||
(generic-parent milestone question, hers to weigh in on per D-235
|
||||
co-maintenance).
|
||||
- Drop: v0.2 pivot section, Q-WTF-039/040, tycoon-bookmark/apartment-wakeup
|
||||
framing, and the v0.2-era decision list (D-114/D-117/D-119/D-122/D-128/D-131/
|
||||
D-135) — verify each against current decision status before dropping outright;
|
||||
a few (D-033 entity color, D-126 customisation dimensions) may still have live
|
||||
sub-parts even though the surrounding section is obsolete.
|
||||
|
||||
ACCEPTANCE: rewritten briefing reflects the current Phase-4 landscape (D-235,
|
||||
D-244, D-257, D-255), points to palette.md/conventions.md as live authorities
|
||||
rather than duplicating content, drops v0.2-pivot and superseded-question
|
||||
framing, lists araminta''s actual current/open tickets.
|
||||
|
||||
SEQUENCING: independent of T-1049 (different files, no shared input) — both can
|
||||
run in the same batch.', 'backlog', 'medium', NULL, 'visual', NULL, '2026-06-12 10:40:59', '2026-07-25 19:00:36.463', NULL, '6080da556144a938b435764dd8ed6a18', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash);
|
||||
INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FSM3MQ5GFSPKKFJF6GGZN8CM', 'task', '06FBPPMZNNEV052DBYYY3A897C', 'Alpine relief capture — Quarter-vs-District differentiation on a tectonics:high body', 'Araminta''s PR #192 companion note, kept open by her PR #208 ruling (option b): the Quarter-vs-District relief-differentiation check was accepted for the T-1160 merge on a plains/river substitution (GJ380c world center -17723392,-10532864 — Quarter clearly shows finer higher-frequency texture than District), but plains texture and jagged tectonic relief are different visual regimes and the sharper case still needs its own capture. Task: identify the body pool with tectonics:high (or planet_class values mapping to TectonicClass::Volcanic/Active) and RECORD the pool in this ticket first — the PR #208 eyeball proved GJ380c/GJ820Bc are both tectonics:low via exhaustive two-Global color scans, don''t re-run that search blind — then capture quarter-relief vs district-relief at a true Alpine/MountainPass crop (MorphologyZone 13/14) at the same world center, matched crop, and have Araminta judge the differentiation. Reuse the pr208_driver fixed-center --step protocol (T-1157 harness inventory). Related: T-1160, PR #192, PR #208.
|
||||
|
||||
POOL RECORDED (2026-07-25, read-only survey per this ticket''s own first step —
|
||||
do not re-run the search blind).
|
||||
|
||||
MAPPING MECHANISM: server/src/atlas/district_profile.rs:296-312
|
||||
derive_tectonic_class(): BodyParams::tectonic_activity authored override first
|
||||
("volcanic"/"active"/"tidally_forced", NO column in current systems.db schema and
|
||||
no authored overrides in the wiki TOMLs — so today the override path is dead),
|
||||
else planet_class fallback: "volcanic" → Volcanic; "oceanic"/"ocean_world" →
|
||||
Active; everything else → Stable. Sanity anchors agree with the PR #208 eyeball:
|
||||
GJ380c (arid) and GJ820Bc (arid) both → Stable.
|
||||
|
||||
THE FULL POOL (7 bodies):
|
||||
- Volcanic: GJ0c (Venus, no heightmap), GJ0f-1 (Io, no heightmap), GJ4056b
|
||||
(heightmap, airless, relief_energy_q=1.0), GJ660Ad (Seongho Prime, heightmap,
|
||||
thin atmosphere, relief_energy_q=1.0)
|
||||
- Active: GJ1002b (Caparica, heightmap, island world, standard atmosphere),
|
||||
GJ103c (Vlieland, heightmap, island world, standard atmosphere), GJ447c
|
||||
(Marevna, heightmap, ocean world) — all relief_energy_q=0.70 per D-239 §5.
|
||||
|
||||
CAPTURE RECOMMENDATION (lead): for the true Alpine/MountainPass (MorphologyZone
|
||||
13/14) crop this ticket wants, the Active terrestrial island worlds GJ1002b and
|
||||
GJ103c are the primary candidates (coastal orogeny, standard climate — closest
|
||||
analogue to the GJ380c plains/river substitution being replaced). The Volcanic
|
||||
pair (GJ4056b, GJ660Ad) are alternates with maximum relief energy but
|
||||
airless/thin atmospheres — shield/lava-field morphology, likely NOT
|
||||
Alpine-classed; use only if the Active pair fails to produce MorphologyZone
|
||||
13/14 crops. GJ0c/GJ0f-1 lack terrain_reference and cannot open in the Atlas.', 'ready', 'low', NULL, 'client', NULL, '2026-07-25 16:14:35.308', '2026-07-25 19:00:39.730', NULL, 'c56c7d2a7a030ee4e959478459ee3d12', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash);
|
||||
|
||||
Reference in New Issue
Block a user