Prioritize local reference collection and record the licence-free local-only override
Full build / Import + headless tests (push) Successful in 46s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-03 17:04:19 +01:00
1 parent 15f9117517
commit 03f4d4bc49
2 files changed
+60 -12

No files matched your search

+7
View File
@@ -4,6 +4,13 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
## Decisions ## Decisions
- **Local-only reference override (2026-11-03, owner decision):** for development-only photo
research the licence gate does **not** apply. Downloads for this track live in `tmp/research/`
(gitignored) and may come from DuckDuckGo image search, street-view frames, neighbouring
properties and buildings across the street — never committed, never shipped, never used as a
committed asset. The moment a frame is promoted to `docs/screens/refs/<venue>/` it passes the
sidecar licence + privacy gate and `CREDITS.md`; the committed boards and the deferred Gaussian
splatting gate are unchanged. Tracked in `TODO.md` §3D model re-evaluation → A.
- **Godot 4.7.2 `--import` gotcha (2026-11-03):** with a stale `.godot/` cache, `--import` - **Godot 4.7.2 `--import` gotcha (2026-11-03):** with a stale `.godot/` cache, `--import`
(and `--editor --quit-after N`) scans new image files but never imports them — no `.import` (and `--editor --quit-after N`) scans new image files but never imports them — no `.import`
files are created, and `preload()` of the new texture then fails to compile every dependent files are created, and `preload()` of the new texture then fails to compile every dependent
+53 -12
View File
@@ -18,6 +18,12 @@ the real gaps, and fix only what the rankings justify. Evidence comes from three
licensed real-location photos, generated concept boards, and build captures. This is an unversioned development track: licensed real-location photos, generated concept boards, and build captures. This is an unversioned development track:
it must not change the `npc_base` contract, the renderer or the 0.10.0 release candidate. it must not change the `npc_base` contract, the renderer or the 0.10.0 release candidate.
Reference material is collected first (section A): local, gitignored, development-only photo
research may use any source the owner authorises (DuckDuckGo image search, street-view frames,
neighbouring properties, buildings across the street) **without the licence gate**. The licence
and privacy gates still apply the moment a frame is promoted into `docs/screens/refs/` or any
committed asset — local `tmp/research/` is the only licence-free zone.
Scope: 8 library characters (`npc_casual`, `npc_jacket`, `npc_coat`, `npc_vest`, `npc_dress`, Scope: 8 library characters (`npc_casual`, `npc_jacket`, `npc_coat`, `npc_vest`, `npc_dress`,
`npc_hoodie`, `npc_firefighter`, `npc_guard`), the frozen `npc_base` fallback, 18 gear pieces, `npc_hoodie`, `npc_firefighter`, `npc_guard`), the frozen `npc_base` fallback, 18 gear pieces,
20 library props, 6 generated props, and the three venue families. 20 library props, 6 generated props, and the three venue families.
@@ -27,7 +33,37 @@ explicitly accepted with a measurement; `inspect`/`audit`/`fit`/proportions, the
and the capture gates are green; no runtime contract, dependency or release artifact changed and the capture gates are green; no runtime contract, dependency or release artifact changed
except the rebuilt assets themselves. except the rebuilt assets themselves.
### A. Baseline, scorecard and routing ### A. Local reference material collection (development-only, gitignored)
*Owner override (2026-11-03):* for local, development-only photo research the licence gate does
**not** apply. Anything downloaded for this track stays under `tmp/research/` (gitignored) and is
never committed, shipped, or used as a committed asset. The moment a frame is promoted to
`docs/screens/refs/<venue>/` it must pass the sidecar licence + privacy gate; local research is the
licence-free zone only.
- [ ] Add a DuckDuckGo image-search fetcher to the reference tooling (e.g. `tools/refboard.py
--source ddg` or a small `tools/refcollect.py`): query terms per venue, download the top
results into `tmp/research/<block>/` with a source-URL manifest, no licence filter, spaced
requests. This is local tooling only — no CI dependency.
- [ ] Collect Hollywood block reference: El Capitan facade (day/night/close-up), the El Capitan
Theatre marquee + blade sign neighbour, the east retail neighbour, Ovation Hollywood and
other buildings across the boulevard, the Walk of Fame terrazzo and stars, and the premiere
staging/arrival area.
- [ ] Collect Joke Shop / Comedy Store block reference: the black hall facade and signature
canopy, the side parking lot, the neighbouring hotel building and its parking ramp, the
hillside houses and palms directly behind the roofline, the buildings across Sunset
Boulevard, the entrance recess and door hardware, and any street-level context.
- [ ] Collect street-view frames of both blocks (the owner allows street-view captures for local
reference): save the street-level facades, corners and opposite frontages into the same
`tmp/research/<block>/` folders with a note of the capture viewpoint.
- [ ] Build a local contact sheet per block (`tmp/research/<block>/sheet.jpg`) from the collected
frames so the scorecard and the venue review can cite them; keep it in `tmp/` and never
commit it.
- [ ] Record which local frames actually changed a decision in `docs/3d-model-review.md` or the
venue map doc, with the frame filename, but do not commit the image itself. If a frame is
promoted to the committed board, it goes through the normal sidecar gate and `CREDITS.md`.
### B. Baseline, scorecard and routing
- [x] Load `blender-director` plus the per-family specialists before touching geometry, and - [x] Load `blender-director` plus the per-family specialists before touching geometry, and
record the skill stack and the advice that changed a decision in `docs/3d-model-review.md`. record the skill stack and the advice that changed a decision in `docs/3d-model-review.md`.
@@ -50,7 +86,7 @@ except the rebuilt assets themselves.
- [ ] Review the scorecard with the project owner, rank the P0/P1 gaps and decide fix vs accept - [ ] Review the scorecard with the project owner, rank the P0/P1 gaps and decide fix vs accept
per item; record the decision and the reason in the review document. per item; record the decision and the reason in the review document.
### B. Character re-evaluation (8 variants + fallback) ### C. Character re-evaluation (8 variants + fallback)
*Skill route: `character-artist`, `retopology`, `rigging`, `uv-workflow`, `texture-workflow`, *Skill route: `character-artist`, `retopology`, `rigging`, `uv-workflow`, `texture-workflow`,
`materials`, `hair-groom`, `asset-optimization`, `lookdev`, `qa-review`.* `materials`, `hair-groom`, `asset-optimization`, `lookdev`, `qa-review`.*
@@ -87,7 +123,7 @@ except the rebuilt assets themselves.
review sheet, and refresh the README character row. review sheet, and refresh the README character row.
- [ ] `qa-review` sign-off: a ship/no-ship verdict per variant with accepted limits recorded. - [ ] `qa-review` sign-off: a ship/no-ship verdict per variant with accepted limits recorded.
### C. Gear and prop re-evaluation ### D. Gear and prop re-evaluation
*Skill route: `prop-artist`, `hard-surface`, `vegetation-artist`, `materials`, `collision-proxy`, *Skill route: `prop-artist`, `hard-surface`, `vegetation-artist`, `materials`, `collision-proxy`,
`lod-pipeline`, `qa-review`.* `lod-pipeline`, `qa-review`.*
@@ -112,7 +148,7 @@ except the rebuilt assets themselves.
`docs/blender_previews/README.md` after the rebuilds. `docs/blender_previews/README.md` after the rebuilds.
- [ ] Exit: a prop/gear capture sheet, budgets and collision checks pass with no unreviewed asset. - [ ] Exit: a prop/gear capture sheet, budgets and collision checks pass with no unreviewed asset.
### D. Venue and camera re-evaluation ### E. Venue and camera re-evaluation
*Skill route: `environment-artist`, `archviz`, `set-dressing`, `lighting`, `camera-cinematography`, *Skill route: `environment-artist`, `archviz`, `set-dressing`, `lighting`, `camera-cinematography`,
`lookdev`, `rendering`, `qa-review`.* `lookdev`, `rendering`, `qa-review`.*
@@ -137,7 +173,7 @@ except the rebuilt assets themselves.
- [ ] Hooded/winter portrait: close the deferred close-up by staging a types 5–7 capture - [ ] Hooded/winter portrait: close the deferred close-up by staging a types 5–7 capture
(`--portrait-type`) or adding a scenario spawn that provides one. (`--portrait-type`) or adding a scenario spawn that provides one.
### E. Reference images, concept boards and screenshots ### F. Reference images, concept boards and screenshots
*Skill route: `lookdev`, `lighting`, `environment-artist`, `qa-review`; tooling: *Skill route: `lookdev`, `lighting`, `environment-artist`, `qa-review`; tooling:
`tools/scene_concepts.py`, `tools/screen_designs.py`, `tools/asset_pipeline.py`.* `tools/scene_concepts.py`, `tools/screen_designs.py`, `tools/asset_pipeline.py`.*
@@ -160,8 +196,9 @@ and never ship a generated or downloaded image without provenance.
canopy signature band) with a sidecar, linked from `docs/joke-shop-map.md` and credited in canopy signature band) with a sidecar, linked from `docs/joke-shop-map.md` and credited in
`CREDITS.md`. The CC BY-SA `The Comedy Store.jpg` from the old link list was deliberately not `CREDITS.md`. The CC BY-SA `The Comedy Store.jpg` from the old link list was deliberately not
used; the public-domain frames cover the same evidence. (`docs/screens/refs/joke-shop/`.) used; the public-domain frames cover the same evidence. (`docs/screens/refs/joke-shop/`.)
- [ ] Fill the Joke Shop gaps: night canopy/sign, entrance recess, south-side neighbours, hillside - [ ] Find more pictures from the Comedy Store, the Sunset Boulevard block, collect at least five additional shots for reference; do not care about licensing, these images are only stored locally for reference and inference during development. Find pictures from the neighboring hotel building and the street surroundings.
house detail. - [ ] Fill the Joke Shop gaps: better visual representation of actual facade, parking lot to the side, neighboring hotel parking ramp and building, night canopy/sign, entrance recess, south-side neighbours, buildings across the street, hillside behind the building, hill detail.
house detail, neighbouring buildings, and any relevant street-level context.
- [x] TV Studio: no separate board — the venue is the same El Capitan Entertainment Centre block as - [x] TV Studio: no separate board — the venue is the same El Capitan Entertainment Centre block as
the Hollywood day shift, restaged for a late-night arrival. The Hollywood board covers both the Hollywood day shift, restaged for a late-night arrival. The Hollywood board covers both
venues and the premiere-staging photo is the arrival evidence; the reuse is now stated in venues and the premiere-staging photo is the arrival evidence; the reuse is now stated in
@@ -173,7 +210,9 @@ and never ship a generated or downloaded image without provenance.
redistributed unmodified for study only; the review is recorded in the sidecar.) redistributed unmodified for study only; the review is recorded in the sidecar.)
- [ ] Remaining Hollywood gap: a licensed **night photograph of the hero facade and blade sign** - [ ] Remaining Hollywood gap: a licensed **night photograph of the hero facade and blade sign**
(the night frame on the board is a different block, near Vine), plus a sidewalk-level shot of (the night frame on the board is a different block, near Vine), plus a sidewalk-level shot of
the steps/door recess and the east retail neighbour. No Street View, no scraped social media. the steps/door recess and the east retail neighbour. For the committed board the licence gate
stays (no unlicensed Street View or scraped social media); local-only copies of the same
viewpoints go through section A instead.
- [ ] Generate one concept board per venue with `tools/scene_concepts.py generate` (palette, facade - [ ] Generate one concept board per venue with `tools/scene_concepts.py generate` (palette, facade
rhythm, lighting), keep raw output gitignored, commit only the selected board, and record the rhythm, lighting), keep raw output gitignored, commit only the selected board, and record the
model, prompt and spend in the sidecar. model, prompt and spend in the sidecar.
@@ -189,7 +228,7 @@ and never ship a generated or downloaded image without provenance.
- [ ] Keep AI-generated images out of `assets/` until they are picked, cropped, credited and (for - [ ] Keep AI-generated images out of `assets/` until they are picked, cropped, credited and (for
textures) audited; `CREDITS.md` and ADR-0015 still govern provenance. textures) audited; `CREDITS.md` and ADR-0015 still govern provenance.
### F. Gates and documentation ### G. Gates and documentation
- [x] Add the measurable checks the review needs (texel density, weight/pose sanity, collider - [x] Add the measurable checks the review needs (texel density, weight/pose sanity, collider
coverage, LOD/impostor check) as stdlib or GDScript gates where possible; CI stays offline. coverage, LOD/impostor check) as stdlib or GDScript gates where possible; CI stays offline.
@@ -368,9 +407,11 @@ facade evidence is still the 2009 CC BY frame. The 8 downloaded candidates are i
change, only the purpose column. change, only the purpose column.
- [ ] Write a reference shot list per block: facade materials, windows, signage, rooflines, - [ ] Write a reference shot list per block: facade materials, windows, signage, rooflines,
street furniture, curb cuts and lighting. street furniture, curb cuts and lighting.
- [ ] Download and catalogue reference images from Wikimedia Commons, local/own photography or - [ ] Download and catalogue **committed** reference images from Wikimedia Commons, local/own
other clearly licensed sources; record author, licence and attribution with the §E sidecar photography or other clearly licensed sources; record author, licence and attribution with
template. Do not use unlicensed Street View or scraped commercial imagery. the §F sidecar template. Local-only research that ignores licence limits (DuckDuckGo,
street-view frames, neighbours, across-street buildings) is collected under §A into
`tmp/research/` and is never committed.
- [ ] Separate development-only references from shipped textures; commit only images with clear - [ ] Separate development-only references from shipped textures; commit only images with clear
redistribution rights and keep the rest under `tmp/` or the ignored reference folders. redistribution rights and keep the rest under `tmp/` or the ignored reference folders.
- [ ] Build the per-block real-photo board under `docs/screens/refs/<block>/` using the sidecar - [ ] Build the per-block real-photo board under `docs/screens/refs/<block>/` using the sidecar