chore(meta): changelog + pql — batch 6 closed (T-1049/T-1051/T-1053 done; stories T-1200..T-1204 created under T-961)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3061,3 +3061,53 @@ INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, chang
|
||||
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', 'assigned_to', NULL, 'qatux', NULL, '2026-07-25 20:54:36', '2026-07-25 20:54:36.535', '2026-07-25 20:54:36.535', NULL, '8d500e97152680a0b4b83d45e614cff9', 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', 'status', 'in_progress', 'review', NULL, '2026-07-25 21:01:13', '2026-07-25 21:01:13.522', '2026-07-25 21:01:13.522', NULL, 'c1c914bd42a1bbce8315aecb9f722d40', 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', 'status', 'in_progress', 'review', NULL, '2026-07-25 21:01:13', '2026-07-25 21:01:13.529', '2026-07-25 21:01:13.529', NULL, '01322543711363e4d353f07a045a5255', 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 ('06FBPTXPPHC9FZ4T0GNKR615PR', 'description', '(description follows in first append)
|
||||
|
||||
Refinement (batch-5 Si pass, 2026-07-25) — GAPS. Formally deferred rather than refined into an
|
||||
actionable brief-writing task now.
|
||||
|
||||
WHY: T-1051 was filed as a child of T-1049''s per-class breakdown (the fable-ous.md audit T-1049 cites,
|
||||
2026-06-12). T-1049 itself is HELD pending the same sprite-to-3D re-scope as T-1050 (its "Refinement
|
||||
2026-06-16 — READY" block still frames the per-class stories, briefs, and catalog files in sprite-era
|
||||
language, and its own text says "sequence T-1049 to consume T-1050''s conventions where they overlap" —
|
||||
so T-1049 cannot be un-held before T-1050 lands). T-1051 is one layer further down that same
|
||||
dependency: it cannot be meaningfully scoped (what does a "one-page brief" even template against?)
|
||||
until (1) T-1050 lands conventions.md + the catalog structure a brief would reference, AND (2) T-1049
|
||||
is re-scoped and un-held (it owns the per-class story breakdown T-1051 is part of).
|
||||
|
||||
Zero repo hits exist for lamp posts, barns, TVs, or billboards beyond the T-750 epic description text
|
||||
(confirmed by T-1049''s own audit matrix) — there is no existing partial work this ticket would be
|
||||
resuming, so there is no cost to deferring it cleanly.
|
||||
|
||||
DISPOSITION: blocker edge wired (T-1051 blocked-by T-1049). When T-1049 is re-scoped (a future Si
|
||||
pass, after T-1050 lands), that re-scope explicitly decides whether lamp posts/barns/TVs/billboards
|
||||
get real briefs or a formal deferral note (T-1049''s existing block already leaned toward "explicitly
|
||||
record which classes are deferred" for cars via Q-067 — the same treatment likely applies to these
|
||||
four, but that is T-1049''s call when re-scoped, not this ticket''s in isolation).', '(description follows in first append)
|
||||
|
||||
Refinement (batch-5 Si pass, 2026-07-25) — GAPS. Formally deferred rather than refined into an
|
||||
actionable brief-writing task now.
|
||||
|
||||
WHY: T-1051 was filed as a child of T-1049''s per-class breakdown (the fable-ous.md audit T-1049 cites,
|
||||
2026-06-12). T-1049 itself is HELD pending the same sprite-to-3D re-scope as T-1050 (its "Refinement
|
||||
2026-06-16 — READY" block still frames the per-class stories, briefs, and catalog files in sprite-era
|
||||
language, and its own text says "sequence T-1049 to consume T-1050''s conventions where they overlap" —
|
||||
so T-1049 cannot be un-held before T-1050 lands). T-1051 is one layer further down that same
|
||||
dependency: it cannot be meaningfully scoped (what does a "one-page brief" even template against?)
|
||||
until (1) T-1050 lands conventions.md + the catalog structure a brief would reference, AND (2) T-1049
|
||||
is re-scoped and un-held (it owns the per-class story breakdown T-1051 is part of).
|
||||
|
||||
Zero repo hits exist for lamp posts, barns, TVs, or billboards beyond the T-750 epic description text
|
||||
(confirmed by T-1049''s own audit matrix) — there is no existing partial work this ticket would be
|
||||
resuming, so there is no cost to deferring it cleanly.
|
||||
|
||||
DISPOSITION: blocker edge wired (T-1051 blocked-by T-1049). When T-1049 is re-scoped (a future Si
|
||||
pass, after T-1050 lands), that re-scope explicitly decides whether lamp posts/barns/TVs/billboards
|
||||
get real briefs or a formal deferral note (T-1049''s existing block already leaned toward "explicitly
|
||||
record which classes are deferred" for cars via Q-067 — the same treatment likely applies to these
|
||||
four, but that is T-1049''s call when re-scoped, not this ticket''s in isolation).
|
||||
|
||||
DELIVERED BY DEFERRAL (2026-07-25, PR #213): docs/assets/briefs/deferred.md is the formal deferral record this ticket''s title asked for — lamp posts, barns, TVs, billboards each recorded with rationale (Phase-4 walkability needs exteriors; these are set-dressing for a walkable world — Phase 6 or late-4 polish), the Q-067 precedent, and the revisit trigger (Phase-4 exterior generation complete). Ratified on T-1049 (batch-6 activation), reviewed by Tyre (PR #213 — including his ruling that no D-record is needed) with the axis-completeness note ensuring the register accounts for all four D-235 axes. The ''or record formal deferral'' arm of this ticket''s deliverable is satisfied; closing done.', NULL, '2026-07-25 21:11:23', '2026-07-25 21:11:23.912', '2026-07-25 21:11:23.912', NULL, 'e4bc916a158945bf54d40d9585473f90', 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 ('06FBPTXPPHC9FZ4T0GNKR615PR', 'status', 'backlog', 'done', NULL, '2026-07-25 21:11:27', '2026-07-25 21:11:27.653', '2026-07-25 21:11:27.653', NULL, 'dafe6739e5ec3e606557ef89f48a59e5', 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', 'status', 'review', 'done', NULL, '2026-07-25 21:11:27', '2026-07-25 21:11:27.660', '2026-07-25 21:11:27.660', NULL, 'ec46f47d92d5c6fe9490a72aa929c9f2', 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', 'status', 'review', 'done', NULL, '2026-07-25 21:11:27', '2026-07-25 21:11:27.661', '2026-07-25 21:11:27.661', NULL, '8cebf78377da9513e22843c0e0c72a02', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
|
||||
@@ -5041,3 +5041,243 @@ 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.', 'review', 'medium', 'qatux', 'visual', NULL, '2026-06-12 10:40:59', '2026-07-25 21:01:13.529', NULL, '39fd0f0834893092949d4ccbb46647cf', 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 ('06FSP7EJPBDP1JB4FFMG0BV11M', 'story', '06FB0TNSRXDCJS4P9Z5JQ1DAAM', 'Station walls asset production', 'Per-class production story (T-1049 breakdown, batch 6). Brief: docs/assets/briefs/station-walls.md — the one-page contract: D-235 wall-axis tokens for station/urban/industrial types, palette.md §3 register rows, conventions.md naming/mask/texture rules, image-gen -> glb-gen -> promotion into client/assets/models/ + manifest.json. Prior art: renderer/models/wall_structural.tscn (unrendered GLB) — re-promote through the current 3D pipeline. Acceptance per the brief (starter assets enter manifest.json at ''planned''). Roof/facade/street textures ride this class family''s texture convention as a follow-on (deferred.md axis-completeness note). Q-119 generic-parent milestone-0 conditionality noted in the brief, unresolved.', 'backlog', 'medium', NULL, 'visual', NULL, '2026-07-25 21:10:50.802', '2026-07-25 21:10:50.802', NULL, 'de3474e555baaa5182138e98d70b2b42', 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 ('06FSP7F5THEPJWGV04B4542SFR', 'story', '06FB0TNSRXDCJS4P9Z5JQ1DAAM', 'Rural walls asset production', 'Per-class production story (T-1049 breakdown, batch 6). Brief: docs/assets/briefs/rural-walls.md — D-235 wall-axis tokens for rural/vernacular types (stone/timber/rammed-earth/stucco/brick), palette.md §3 register rows, conventions.md rules, image-gen -> glb-gen -> promotion path. Clean slate, no prior art. Acceptance per the brief. Q-119 conditionality noted, unresolved.', 'backlog', 'medium', NULL, 'visual', NULL, '2026-07-25 21:10:55.700', '2026-07-25 21:10:55.700', NULL, 'a55a60ef67f9f81cd46804f68704dc07', 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 ('06FSP7FZ4F20AMWCXSP23Q5H54', 'story', '06FB0TNSRXDCJS4P9Z5JQ1DAAM', 'Doors asset production', 'Per-class production story (T-1049 breakdown, batch 6). Brief: docs/assets/briefs/doors.md — door models (no D-235 axis; D-257 toon default), conventions.md rules incl. the BINDING negative constraint: no baked state-file variants (door_open/door_closed) — D-231''s initial_state (Open/Closed/Locked/Sealed) is runtime; the credential field (None/TemporalWindow/Corporate/Resident/Authority/Social) is independent metadata. The Phase-5 rendering mechanism attaches to initial_state and is explicitly out of this story''s scope. Visual asset only — does not touch T-979/T-998 DoorSpec derivation logic. Acceptance per the brief.', 'backlog', 'medium', NULL, 'visual', NULL, '2026-07-25 21:11:02.179', '2026-07-25 21:11:02.179', NULL, '9c04e928128ecaca82310e838055ca28', 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 ('06FSP7GX9J2SSHE7ZJB3PH0FEW', 'story', '06FB0TNSRXDCJS4P9Z5JQ1DAAM', 'Floors asset production', 'Per-class production story (T-1049 breakdown, batch 6). Brief: docs/assets/briefs/floors.md — floor surface textures on D-228''s FloorMaterial axis (distinct from D-235 StreetSurface), texture-only pipeline (no Trellis step), conventions.md D-235-token-style texture naming, palette.md treatment. Acceptance per the brief. Q-119 conditionality noted, unresolved.', 'backlog', 'medium', NULL, 'visual', NULL, '2026-07-25 21:11:09.900', '2026-07-25 21:11:09.900', NULL, '9cc31cc39392291e6ee4ae075428bea0', 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 ('06FSP7HT5ES8D83VZA6ETACRAW', 'story', '06FB0TNSRXDCJS4P9Z5JQ1DAAM', 'Furniture/props asset production', 'Per-class production story (T-1049 breakdown, batch 6). Brief: docs/assets/briefs/furniture-props.md — interior furniture + small props (manifest categories furniture|props), D-257 toon treatment, conventions.md naming/mask/footprint_tiles rules. FIRST acceptance: promote + rename the 4 promotable spike GLBs (baroque_table, modernist_chair, scifi_desk + props/lion_statue) into client/assets/models/ + manifest.json per D-241 — no new generation needed; vw_beetle stays excluded (Q-067 car deferral, see briefs/deferred.md). Note: spike GLB binaries are gitignored — regenerate or restore locally at promotion time per the spike README.', 'backlog', 'medium', NULL, 'visual', NULL, '2026-07-25 21:11:17.291', '2026-07-25 21:11:17.291', NULL, '6157e2bfc58eb3ce34ba64396e4bd162', 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 ('06FBPTXPPHC9FZ4T0GNKR615PR', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Author one-page briefs (or record formal deferral) for lamp posts, barns, TVs, billboards', '(description follows in first append)
|
||||
|
||||
Refinement (batch-5 Si pass, 2026-07-25) — GAPS. Formally deferred rather than refined into an
|
||||
actionable brief-writing task now.
|
||||
|
||||
WHY: T-1051 was filed as a child of T-1049''s per-class breakdown (the fable-ous.md audit T-1049 cites,
|
||||
2026-06-12). T-1049 itself is HELD pending the same sprite-to-3D re-scope as T-1050 (its "Refinement
|
||||
2026-06-16 — READY" block still frames the per-class stories, briefs, and catalog files in sprite-era
|
||||
language, and its own text says "sequence T-1049 to consume T-1050''s conventions where they overlap" —
|
||||
so T-1049 cannot be un-held before T-1050 lands). T-1051 is one layer further down that same
|
||||
dependency: it cannot be meaningfully scoped (what does a "one-page brief" even template against?)
|
||||
until (1) T-1050 lands conventions.md + the catalog structure a brief would reference, AND (2) T-1049
|
||||
is re-scoped and un-held (it owns the per-class story breakdown T-1051 is part of).
|
||||
|
||||
Zero repo hits exist for lamp posts, barns, TVs, or billboards beyond the T-750 epic description text
|
||||
(confirmed by T-1049''s own audit matrix) — there is no existing partial work this ticket would be
|
||||
resuming, so there is no cost to deferring it cleanly.
|
||||
|
||||
DISPOSITION: blocker edge wired (T-1051 blocked-by T-1049). When T-1049 is re-scoped (a future Si
|
||||
pass, after T-1050 lands), that re-scope explicitly decides whether lamp posts/barns/TVs/billboards
|
||||
get real briefs or a formal deferral note (T-1049''s existing block already leaned toward "explicitly
|
||||
record which classes are deferred" for cars via Q-067 — the same treatment likely applies to these
|
||||
four, but that is T-1049''s call when re-scoped, not this ticket''s in isolation).
|
||||
|
||||
DELIVERED BY DEFERRAL (2026-07-25, PR #213): docs/assets/briefs/deferred.md is the formal deferral record this ticket''s title asked for — lamp posts, barns, TVs, billboards each recorded with rationale (Phase-4 walkability needs exteriors; these are set-dressing for a walkable world — Phase 6 or late-4 polish), the Q-067 precedent, and the revisit trigger (Phase-4 exterior generation complete). Ratified on T-1049 (batch-6 activation), reviewed by Tyre (PR #213 — including his ruling that no D-record is needed) with the axis-completeness note ensuring the register accounts for all four D-235 axes. The ''or record formal deferral'' arm of this ticket''s deliverable is satisfied; closing done.', 'backlog', 'medium', NULL, 'visual', NULL, '2026-06-12 10:40:59', '2026-07-25 21:11:23.912', NULL, '8d2a1c6f1e65787cd02d4f2daf01db8a', 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 ('06FBPTXPPHC9FZ4T0GNKR615PR', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Author one-page briefs (or record formal deferral) for lamp posts, barns, TVs, billboards', '(description follows in first append)
|
||||
|
||||
Refinement (batch-5 Si pass, 2026-07-25) — GAPS. Formally deferred rather than refined into an
|
||||
actionable brief-writing task now.
|
||||
|
||||
WHY: T-1051 was filed as a child of T-1049''s per-class breakdown (the fable-ous.md audit T-1049 cites,
|
||||
2026-06-12). T-1049 itself is HELD pending the same sprite-to-3D re-scope as T-1050 (its "Refinement
|
||||
2026-06-16 — READY" block still frames the per-class stories, briefs, and catalog files in sprite-era
|
||||
language, and its own text says "sequence T-1049 to consume T-1050''s conventions where they overlap" —
|
||||
so T-1049 cannot be un-held before T-1050 lands). T-1051 is one layer further down that same
|
||||
dependency: it cannot be meaningfully scoped (what does a "one-page brief" even template against?)
|
||||
until (1) T-1050 lands conventions.md + the catalog structure a brief would reference, AND (2) T-1049
|
||||
is re-scoped and un-held (it owns the per-class story breakdown T-1051 is part of).
|
||||
|
||||
Zero repo hits exist for lamp posts, barns, TVs, or billboards beyond the T-750 epic description text
|
||||
(confirmed by T-1049''s own audit matrix) — there is no existing partial work this ticket would be
|
||||
resuming, so there is no cost to deferring it cleanly.
|
||||
|
||||
DISPOSITION: blocker edge wired (T-1051 blocked-by T-1049). When T-1049 is re-scoped (a future Si
|
||||
pass, after T-1050 lands), that re-scope explicitly decides whether lamp posts/barns/TVs/billboards
|
||||
get real briefs or a formal deferral note (T-1049''s existing block already leaned toward "explicitly
|
||||
record which classes are deferred" for cars via Q-067 — the same treatment likely applies to these
|
||||
four, but that is T-1049''s call when re-scoped, not this ticket''s in isolation).
|
||||
|
||||
DELIVERED BY DEFERRAL (2026-07-25, PR #213): docs/assets/briefs/deferred.md is the formal deferral record this ticket''s title asked for — lamp posts, barns, TVs, billboards each recorded with rationale (Phase-4 walkability needs exteriors; these are set-dressing for a walkable world — Phase 6 or late-4 polish), the Q-067 precedent, and the revisit trigger (Phase-4 exterior generation complete). Ratified on T-1049 (batch-6 activation), reviewed by Tyre (PR #213 — including his ruling that no D-record is needed) with the axis-completeness note ensuring the register accounts for all four D-235 axes. The ''or record formal deferral'' arm of this ticket''s deliverable is satisfied; closing done.', 'done', 'medium', NULL, 'visual', NULL, '2026-06-12 10:40:59', '2026-07-25 21:11:27.653', NULL, 'e37d290f426f3bf7c1ab4d979f29088d', 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).
|
||||
|
||||
Lead ratification (batch-6 activation, 2026-07-25): the refinement block''s T-1051 recommendation is RATIFIED — lamp posts, barns, TVs, billboards get a formal Q-067-style deferral, not briefs. Implementation of this ticket authors the deferral note (four classes, rationale, Q-067 precedent, ''revisit when Phase-4 exterior generation completes'') alongside the real briefs; T-1051''s own deliverable (''or record formal deferral'') is satisfied by that note and T-1051 closes when it lands. Child story tickets under T-961: the implementing agent DRAFTS the story list (title + one-line scope + brief path per class) in its report; the lead creates them on main at merge (avoids cross-vault worktree pql writes, FR-4). Surfaced to Jeroen in the batch report for cheap veto.', 'done', 'high', 'araminta', 'visual', NULL, '2026-06-12 10:40:58', '2026-07-25 21:11:27.660', NULL, 'feddf82eb748e9b8106743886529d69f', 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.', 'done', 'medium', 'qatux', 'visual', NULL, '2026-06-12 10:40:59', '2026-07-25 21:11:27.661', NULL, 'df35c3bfd15e38822bc24019e04cadd1', 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);
|
||||
|
||||
@@ -7,6 +7,7 @@ Format based on [Keep a Changelog](https://keepachangelog.com/).
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
- **Every asset class now has a production contract** (T-1049, T-1051, T-1053) — one-page briefs for the first five environment asset classes (station walls, rural walls, doors, floors, furniture/props), each pinning its materials, look, naming, generation path, and concrete acceptance against the merged style bible and conventions; a formal deferral register for the set-dressing classes (lamp posts, barns, TVs, billboards, cars) with recorded revisit triggers; and the art director's briefing rewritten from its year-old shape to the current landscape. Five production stories are now queued — the first real environment assets of the game have a defined path from concept to the world
|
||||
- **The visual asset pipeline has a production home** (D-244, T-1050) — the 3D-model/texture/artwork/icon/effect catalogs are instantiated with live status tables (the icon set's 13 as-built SVGs inventoried with their real wiring), `client/assets/models/` exists as the promotion target for glb-gen output with a schema-documented manifest, and a single conventions document fixes model naming (category-first), mask sidecars, and D-235-token texture naming — with door-state and TileSet conventions recorded as explicit Phase-5 deferrals rather than silent gaps
|
||||
- **The Phase-4 visual style bible** (D-257, T-1052) — palette.md is no longer a stub: gameplay vs offline-render cameras untangled, a rendered-look register for every ratified building material/roof/facade/street tag (hue range, grain, weathering), and the newly-recorded D-257 rendering treatment — environment props share the character toon look, with a minimal-PBR carve-out for glazing so glass reads truthfully about sightlines. Exactly one live style authority remains; the superseded v0.1 documents now say so themselves
|
||||
- **The Atlas can be driven by agents** (D-226, T-971) — a named-intent control channel (AtlasAgentInterface) lets automated QA agents navigate the real Atlas UI through the exact same handlers a click calls: open/select/descend, jump straight to any world coordinate at any zoom step, toggle overlays, and read back a summary of what's on screen — turning the hand-scripted verification drives into a first-class, repeatable QA capability. In-process consumers only for now; a shipped reference driver replaces the ad-hoc scripts
|
||||
|
||||
Reference in New Issue
Block a user