# Changelog Changes are recorded here before a versioned release. There is no published release or tested marketplace installation implied by this file. ## Unreleased - **Phone Show 3D modal.** Replaced the study loading line (`Preparing the study…` → `Loading…`) and stopped it wrapping glyph-by-glyph in a short iframe. On small screens the dialog fills the viewport instead of a 16:9 letterbox; the iframe loads with `?embed=1` so the in-frame title, readouts and hint do not cover the model (toolbar and notes stay). Full-page phone studies keep a smaller title and stack readout chips, view buttons and the notes bar at the bottom edge; the desktop modal keeps its readouts. - Added advisory model-construction and deformation reasoning: distinguish blockout, structural detail and surface finish; revisit rig ownership after geometry edits; diagnose solver, skin and attachment behavior separately; inspect failing motion intervals and reconsider repeated local patches. Updated two existing knowledge records with evidence and retrieval terms. No new quality gate, numeric rig defaults or runtime-certification claim. - Added conditional surface-continuity and material-direction guidance (2026-09-10): choose continuous skin, layered coverings or articulated parts by the object; target redundant geometry without erasing useful interiors; distinguish buffer merging from solid union. Material references now lead to part assignments, palette relationships and surface scale. Workflow links expose these choices without mandatory fusion, manifoldness or A/B gates. No dataset records or general runtime-quality claims are added. - **Anatomy geometry moved out of the repository (2026-09-10).** The 108 anatomy/heart files (106 STL + two `attribution.json`, 168.6 MiB) now live in the Cloudflare R2 bucket `3dviz-assets` behind `https://assets.3dviz.dev/`; `examples/public/assets/` is git-ignored and `pnpm --dir examples fetch-assets` restores it from `examples/assets-manifest.json`, which lists every key with its size and sha256 and holds the base URL used by both that script and `site/scripts/bundle-examples.sh`. The studies resolve their roots from one module, `examples/shared/asset-base.js` (`VITE_ASSET_BASE`, default `../assets/`), so a local build is unchanged while the deploy build bakes in the bucket URL and ships no geometry: the Cloudflare Pages upload drops from **175 MiB across 313 files to 10.7 MiB across 268 files**. Credit is unchanged (BodyParts3D, CC BY-SA 2.1 Japan). - **Public release preparation (2026-09-10).** The skill, plugin and marketplace id is now `3dviz-pro-max` (display name **3Dviz Pro Max**); the canonical folder is `skills/3dviz-pro-max/` and the Claude Code plugin skill is `/3dviz-pro-max:3dviz-pro-max`. The repository is released under the **MIT license** (`LICENSE`, copyright (c) 2026 Viettranx) for its own code, data and authored media; third-party material keeps its own terms — BodyParts3D anatomy meshes (CC BY-SA 2.1 Japan), the bundled Outfit and JetBrains Mono fonts (SIL OFL 1.1) and the author-supplied Harness Village recording, whose redistribution rights are still to be confirmed. Repository links now point at https://github.com/viettranx/3dviz-pro-max. Absolute machine paths were removed from `evidence/artifacts/legacy-early-slice/captures/capture-log.json` and `site/public/media/media-manifest.json`, and their writers now record repository-relative paths. CI additionally installs, builds, tests and budget-checks `site/`. - Removed the Archive Warden study (`examples/warden`, its catalog entry, README line and site media): 37 standalone studies. The owl model stays in `examples/shared/breadth` and in the village scene. Demo cards on the landing page now open their study modal from a click anywhere on the card, with the Show 3D pill still the keyboard control. - **Dataset layout v2.** Defines one-object files at `data/recipes/.json` and `data/knowledge//.json`; sources and directions stay arrays, and recipe placement gives no ordering or primary-direction meaning to `direction_ids`. Legacy layout v1 arrays remain readable, while v2 validation requires a single object and mechanically checks each path. Serialized paths use named POSIX-relative bases. The existing `catalog_hash` and `bundle_hash` retain their loaded-view meanings with the platform-separator difference removed; generated `catalog-summary.json` adds all-record `content_catalog_hash` and `layout_hash` fields with separate content and placement meanings. `scripts/migrate-catalog.py` previews by default, applies only with `--apply`, accepts `--report`, and keeps rollback data in an internal report companion while preserving IDs, revisions and existing evidence. Migration preserves all 663 record IDs, revisions and content hashes, all 497 evidence files, and the result IDs/scores of 249 authored retrieval cases. Repository validation, generated links/indexes, portable packaging, 136 focused Python tests, 17 site data tests and site typechecking pass. Asset/proof paths now enforce the same portable relative-path contract; numeric parameter checks validate authored consistency without constraining runtime creativity. - **Landing page (`site/`).** Third pass (phase 8, 2026-09-10) after the maintainer's "Daylight" HTML design, converted to React + Tailwind rather than copied: cream/ink/green palette, Outfit display face, sticky blurred header, a **static** hero built on the showcase frame `village-overcast-morning` (the live village of phases 3–7 stays in the tree behind `HERO_LIVE_LOOK = null`, so no three.js chunk ships), all 38 studies as demo cards whose titles, blurbs and five chapters are read from `examples/README.md` at build time, a **hover clip for every study** (38 × webm + mp4, 4.27 MiB; studies that do not animate are recorded under a pointer-drag orbit, chosen by a 42 dB PSNR motion bar — 17 native, 21 orbit), **Show 3D opens the study in a modal** iframe with an "Open in new tab" link, a four-figure numbers card, the "How one sentence becomes a scene" loop, a dark install card whose WORKS WITH labels stay the documented EVALUATED/OBSERVED, and a footer that states the license (pending at the time of that pass; MIT as of the release-preparation entry above). Key art, origin recording, looks and workflow sections are gone (their media stays committed, their readers removed). Measured 2026-09-10: entry JS 70.8 KiB gzip, landing transfer 386 KiB, budgets 8/8, Lighthouse desktop **97** (TBT 0 ms), mobile **93** (LCP 3.2 s once phones get a 960-wide poster source; 88 with the 1920-wide poster alone). Second review pass (phase 7): Plus Jakarta Sans display face, one daylight `golden-hour` live hero look with a dusk sky, a best-in-motion clip player (six studies), 8 featured studies + "See all 38", 6 curated frames + lightbox, the ten SKILL.md steps as one row, a one-command install block; page text 2,148 → 397 words. Restyled to the maintainer's Cinema design (Bricolage Grotesque + JetBrains Mono, `#0b0a0e`/amber, full-viewport hero with the design's gradients, stats ticker, a looks section listing five style records' numeric defaults, the ten SKILL.md steps and the compatibility table — all generated at build). Local dev/preview run on port 4173 (Safari and WebKit refuse 4190 as a restricted network port and show a blank page). A React 19 · Vite 7.1.5 · Tailwind v4 · TypeScript-strict page that presents this repository and ships the studies with it at `/examples//`: a hero whose poster paints first and upgrades to the live `crafted-village` scene behind capability gates, the 38 studies in five chapters with six hover clips, the 21 showcase frames in a lightbox, the origin recording, the counters, what the skill ships, and the installation text rendered from `docs/installation.md` in document order. **No counter is typed:** `site/scripts/build-data.mjs` reads 223 recipes, 440 knowledge records, 22 blueprints, 24 directions, 451 sources, 3,599 evidence events, 38 studies, 21 frames and the 17 + 13 = 30 eval scale out of `skills/`, `docs/`, `evals/`, `evidence/` and `examples/shared/catalog.js` at build time, and 11 node tests recompute each of them by a second route. Supporting work: a chrome-free `?plate=1` mode in `examples/shared` and a GPU media pipeline (`site/scripts/site-media.py`, `hero-posters.py`) that captured 38 stills, 6 clips, 21 key-art pairs, 3 hero posters and the origin clip — 4.7 MiB, each artifact hashed in a manifest and committed so the page builds without a GPU; and a fix to `examples/shared/render-loop.js`, where the demand-driven loop parked after its first `dt = 0` frame, so village, night and gears studies never animated in a browser. Measured, not estimated (Apple M4 Max, 2026-09-09): entry JS 75.4 KiB gzip, hero chunk 243.7 KiB gzip loaded only after the poster, worst-case first view 360.8 KiB, LCP element the poster image, CLS 0.00002; Lighthouse 12.8.2 on the production preview scores desktop **85–86** (66 on the first run of a fresh build, and **99** with the hero chunk blocked — the gap is the village build's blocking time, not the page) and mobile **88–89** against a 90 target, held back only by a 1920-wide poster over throttled 4G; the numbers are published as measured rather than tuned. Limits stated rather than fixed: the deploy is **175 MiB across 313 files**, of which 169 MiB is the anatomy STL set, so the four anatomy studies are slow on a cold network cache and STL → GLB compression is the open follow-up; `docs/site.md` documents the Cloudflare Pages settings but **no project is created and nothing is published**; at the time of that pass the repository license was still pending, and the Harness Village recording still needs redistribution rights confirmed. - Added conditional object-volume guidance: judge depth, cross-sections and surrounding surface layers from useful angles against the intended subject and style; distinguish geometry from camera/lighting effects. No thickness threshold or review gate is introduced. - Added conditional lighting-direction and scale guidance for visible key movement, inverse-square scene rescaling, fitted shadows, practical-light ownership, diagnostic isolation and reversible day/night switches. The build and inspection workflow now routes agents to these checks, preserves motion preferences and distinguishes retrieved records from custom authoring. This adds no dataset records or runtime evidence. - Added subject-clarity and meaningful-motion guidance from author feedback: per-object identity, local deformation and clearance, perceptible controls, scientific label/model coherence, and separation of implementation status from visual approval. No new scientific dataset records or runtime evidence are claimed. - Archive Warden feedback exposed disconnected support chains, tiled organic detail and weak facial identity; object-reasoning guidance now calls for connected load paths, staggered contour fields and identity-defining facial structure before surface polish. ### Added - Object-first creative workflow: choose kit reuse, adaptation, custom construction or sourced assets by subject and viewing scale. Review prompts now depend on intent instead of prescribing fog, surface noise, feature counts or motion. Host and quality-brief outputs explicitly scope legacy tier recommendations to shipped kit pipelines; existing proof status remains intact; a proved shipped T3 GLB can be recommended without local Blender, which is only needed to rebake it. Historical evaluation scores retain their original rubric and are not scores against the revised prompts. - Claude Code installation: `.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json` at the repository root, sharing the `skills/` tree with the Codex manifest; `package.py` ships both manifests in the plugin ZIP and refuses a version mismatch across the three manifests; `docs/installation.md` documents the skill-folder (copy or symlink), `--plugin-dir` (checkout or ZIP) and marketplace routes. Observed on Claude Code 2.1.265 (macOS): strict manifest validation passes and a headless session loaded the skill from the checkout and from the ZIP; marketplace install and the Claude app remain untested. - Example looks and AO cache: `examples/early-slice` takes `?look=` / `?mood=` (dusk-golden-hour, ghibli, tilt-shift, night-lantern, overcast) from the records' authored defaults with every departure written next to the record id; the T2 occlusion bake is cached behind a geometry signature, warm first frame 2.26 s → 0.5 s. - Kits: a `fur` surface family and a shared `finishKit` that the proof harness also applies to loaded GLBs (UV scale measured into `geometry.userData.uv_m`); quadruped-walker, stone-guildhall and iron-lantern now prove T2 (20 of 22). Showcase grew to 21 frames with three village looks; the well roof fix and the dropped heart frame are above. - Capture usable-view check: `capture.py` records `view_quality` per view (luma mean/std, dark, flat and wall fractions, `usable` with a reason) measured in the browser via `capture_view_quality.py`, and `--expect-usable` exits 6 on a near-black or wall-filled named view; calibrated on the five eval runs (flags run 4's `lane`, `square` and `cottage`, every overview usable). Anti-slop item 9 gains an HSL lightness floor of 0.2, and the five runs were re-read under it: 21/19/23/23/25. - Fix: the well blueprint's posts stopped at eave height under a ridge-high roof, so the roof floated a full gable rise above them (spotted by the maintainer in the showcase frame). Posts now rise to the ridge beam and four rafters carry the strips; record revision 5, T1/T2 re-proved, poly budget 2604 → 2716, showcase and example frames re-captured; the heart-cutaway showcase frame was dropped as too plain (19 frames). - Showcase: `scripts/showcase.py` + `docs/demos/showcase/showcase.json` render twenty-one GPU-captured frames (village at mixed tiers, harness kits at their proved tier, two breadth recipes) into `docs/demos/showcase/` with `showcase-log.json` (host, capture mode, tiers, sha256); `capture.py --query` and a `?plate=1` chrome-free mode on the example and the breadth bench; gallery in `docs/demos/README.md`, four embeds in the root README. - **Before/after evaluation, round 4.** [`evals/skill-behavior/before-after-2026-09/`](evals/skill-behavior/before-after-2026-09/README.md) now publishes **five** artifacts from the same prompt, all scored on the 30-item scale: baseline 21, round 1 19, round 2 23, round 3 23, round 4 **25** (totals after the 2026-09-09 item-9 lightness floor; before it 20/18/22/23/24). Round 4 is the only run to pass anti-slop item 17 (its hero is the Blender-baked `timber-cottage-t3.glb`), recovers the viewport fit run 3 lost, and documents a tier and a blueprint per object class from `host-probe.py` and the quality brief. It is also the most expensive scene of the five — **7,242 draw calls and 882 k triangles per drawn frame at 2.3 fps** under SwiftShader, measured by the grader because the run wrote "not measured" while asserting 60 fps — and three of its seven named views are damaged by camera placement, one of which it does not notice. Scored frames are SwiftShader for comparability with runs 1–3; a labelled GPU set is published beside them and is not scored. n=1 per condition, self-graded; item 17 and the T3 tier were authored in the same week by the same author, so that margin is the least independent result in the set. - **Kit quality tiers (T0–T4).** Every blueprint record now declares a `tiers` block and proves what it claims: T0 blockout on all 22, the procedural **T2** surface proved on **18** (canvas-drawn textures and vertex-baked occlusion built in the browser through `buildKit(create, { tier, surface })`), four records `not-proved` with a measured reason (`quadruped-walker` and `tree-conifer` read worse than T1; `stone-guildhall` and `iron-lantern` are glTF records whose geometry never reaches `buildKit`), **T3** proved on the two Blender-baked heroes (`timber-cottage-t3.glb`, `watermill-t3.glb`) and `missing` elsewhere, and **T4** `missing` on all 22 — a schema slot nothing here fills. `scripts/kit-proof.py` gained `--tier`, `--check-tag` and `--gpu`, writing per-tier captures, logs and check ids so no tier overwrites another. `scripts/host-probe.py` reports OS, CPU, GPU, Blender and runtime read-only and computes a `quality_ceiling`; `design-context.py --host --delivery --hero` turns that into a per-blueprint `quality_brief` of role, tier and reason; `lodFor()` swaps tiers by distance. `scripts/hero-tier.py` bakes a T3 GLB from a kit module's own geometry through `blender_locate.py`, time-boxed, cached and reporting `{"status": "unavailable"}` at exit 0 when Blender is absent — Blender is recommended, not required. `capture.py` gained `--gpu`, `--format/--quality` and records `webgl_renderer` and `capture_mode` in every log. Measured rather than assumed: texture build 248 ms at 1024 px, vertex AO 107 ms at 13 samples, AO a fine 2.5–3.4 luma contact effect. The example village now runs heroes at T3, mid ground at T2 and instanced background at T1 (overview draw calls 2,902 → 2,330; first frame 0.45 s → 2.37 s, of which 1.70 s is the AO bake, unfixed and published). `visual-anti-slop.md` gained **item 17, surface on the hero** — material texture and occlusion at the close-up distance, not a flat colour — so the checklists are a **17 + 13 = 30** item scale. All four published before/after runs were re-scored on it from their existing frames (20 / 18 / 22 / 23 out of 30); item 17 fails in all four, because none ships a texture map or baked occlusion, and stands as a bar for the next run rather than a discriminator among these. Scores published against the 16 + 13 scale are superseded. Catalog after this work: **223 recipes across 24 directions, 440 knowledge records in 18 populated families, 451 source records and 3,584 public evidence events**. - **Before/after evaluation, round 3.** [`evals/skill-behavior/before-after-2026-09/`](evals/skill-behavior/before-after-2026-09/README.md) now publishes four artifacts from the same prompt — baseline, with-skill, with-skill after the render-loop fix, and with-skill after the kit steps — all re-scored on one 29-item checklist scale (16 anti-slop + 13 per-frame). Totals 20 / 18 / 22 / 23. Round 3 is the only run to pass the detail-ladder and saturation items and the first with-skill run whose selection framing works; it also costs 4,773 draw calls per frame at 5 fps and regresses viewport fit. n=1 per condition, self-graded, software-rendered. - **Skill execution layer.** `SKILL.md` is now a 10-step workflow — intent, feeling, representation, look and mood, scaffold, build, run and capture, inspect, fix, report — with repository governance moved to `AGENTS.md`. A new `templates/` root ships a Vite + Three.js scaffold (colour management, tone mapping, capped pixel ratio, demand-driven loop, viewer contract `window.__sceneReady` / `window.__viewer`), five rigs (orbit camera with named views, sun, night lantern, studio, and a pmndrs `postprocessing` 6.39.4 post stack), design-system / scene-spec / validation-report document templates, and the `visual-anti-slop` and `inspection-per-frame` checklists. `scripts/capture.py` drives a built scene over loopback and writes PNGs, a capture log and the console output, with exit codes 0/1/2/3/4 separating a failed check from an unavailable browser. `package.py` packages `.js/.html/.css` under `templates/` and rejects build-output and dependency paths. Templates must be copied out of the skill folder before installing anything. - **Authored numeric defaults.** Recipe and knowledge contracts gained a `defaults` block marked `authored` or `source-backed`, with `scripts/evidence-log.py` recording revision snapshots and source reads. 46 knowledge records now carry authored defaults: 33 style profiles including five named looks (`knowledge.style-lantern-festival-riverside`, `-ghibli-painterly-pastoral`, `-tilt-shift-diorama`, `-bioluminescent-deep-sea`, `-neon-noir-rain`), eight `knowledge.lighting-mood-*` profiles with a Three.js snippet each, and camera and time-of-day records. Every block states palette, sky, fog, light rig, tone mapping and exposure, camera, materials, motion and post together, so the numbers stay comparable. Five sentences that were repeated across the style family moved into the schema description and `references/design-synthesis.md`. No renderer was run for these values; they are tunable starting points, not measurements. - **Accuracy depth.** 21 recipes carry numeric `defaults` with a worked expected value: 18 anatomy, physiology and molecules recipes (13 source-backed against 15 claims read on 2026-09-08, five authored where the sources print no numbers) plus corrected `recipe.gyroscope-precession` (worked value 1.962 rad/s), `recipe.differential-drive-odometry` and `recipe.eclipse-shadow-cones`. Adds state tables for the cardiac cycle, lever classes and slip systems, an organ-bound left/right invariant on `recipe.heart-cutaway`, one stated composition convention on `recipe.commutator-conjugate-tools`, and `knowledge.validation-default-tolerance-rule`, which the six records that previously said "the tolerance you declare" now cite. Four factual tooling records (`knowledge.gltf-punctual-light-units-handoff`, `knowledge.blender-view-transform-tone-mapping-table`, `knowledge.blender-headless-gltf-export-script`, `knowledge.gltf-material-extension-matrix`) and `knowledge.three-light-units-and-exposure` join the catalog; `setMeshoptDecoder` wording is corrected and API names are lifted into the implementation text of ten adapter records. Fifteen sources registered after real reads; two more three.js sources back the light-units record. - **Retrieval.** `search.py` searches both collections by default (`--collection all`) and expands craft vocabulary through a validated `search.query_aliases` table in the manifest (search version 4; `defaults.values.feeling` is a search field), returning `expanded_terms` and a `hint` when few results match. `resolve.py` suggests close record ids. Three new records — `knowledge.camera-orbit-follow-rig`, `knowledge.camera-authored-viewpoints-and-reset`, `knowledge.lighting-time-of-day-sun-arc` — and authored retrieval cases 229 → 241, with one legacy case pinned to recipes and annotated. - **Latent Village atmosphere, instancing and picking.** The example scene sets a gradient `CanvasTexture` sky, `FogExp2` at density 0.014, a `RoomEnvironment` PMREM environment at intensity 0.3 and a bloom/vignette post stack through pmndrs `postprocessing` 6.39.4 (threshold 1.0, strength 0.35, radius 0.6), with lights retuned so only emissive surfaces cross the bloom threshold. `scene-kit.mesh()` shares materials through a keyed cache — 1,317 → 912 drawable objects and one material per mesh → 169 materials, 145 of them reused — and five `InstancedMesh` scatters place 410 decorative instances with per-instance hue jitter, leaving colliders and ground support unchanged. A new `village-picking.js` selects buildings and creatures from the canvas with a 5 px click threshold, a hover cursor and a ground ring, staying in sync with the sidebar buttons. `window.__sceneReady`, `window.__viewer` and `window.__renderStats()` publish the viewer contract the capture script needs. Three 1280×720 software-rendered captures and their log are committed with the app. Example tests 27 → 33. - **Reusable kit blueprints.** A `blueprint` knowledge kind ships 22 records whose geometry is runnable: six buildings (timber cottage, long hall, watermill, round tower, market stall, stone bridge), eight props, four plants and rocks, two procedurally gaited walkers and two Blender-authored GLB heroes. Each is a record plus a module under `templates/kits/` plus four real captures under `evidence/kits/`, and `scripts/validate.py` refuses the record unless every capture exists with the SHA-256 its proof log states. `templates/kits/kit-core.js` (with `kit-walk.js`) holds the shared material cache, seeded RNG, bevelled box, pierced wall, instanced scatter and socket/collider descriptors; nine primitives and `layout/village-layout.js` ship as modules with no record, since neither claims a proof of its own. `scripts/kit-proof.py` drives the offline `_harness/` page through four framed views in headless Chromium, writes the PNGs and `proof-log.json`, and `--motion-check MS` adds a fifth frame by advancing `animate(dt)` in fixed 1/60 s steps, exiting 5 if the two frames are identical. `evidence-log.py` gained `propose --artifact` and a `check-run` subcommand, so `runtime_status: passed` must cite the same artifact on both events; `package.py` now ships `.glb` (2 MB cap, no `.blend`). A colour defect was fixed in `scatterInstances`, which handed the caller's material to the `InstancedMesh` and also wrote the base colour into `instanceColor`, so three multiplied the two and every instanced field rendered its colour squared — measured at `#8d5a4a` rendering as `#4b1a0f` before the fix and `#8d5a4a` after. All 22 blueprints were re-proved on the fixed path (95 captures). The workflow now reaches them: `design-context.py --blueprints --look ` filters blueprints by `fits_looks` (a filter, not a ranking), `resolve.py` prints params, sockets and a call snippet, SKILL.md steps 5 and 6 state the assembly and hero close-up rules, and `visual-anti-slop.md` gained item 16, the detail ladder, backed by authored numbers in `knowledge.hero-detail-ladder-defaults`. The checklists are therefore a 16 + 13 scale; scores published against the old 15 + 13 scale are superseded. - Catalog after this work: **223 recipes across 24 directions, 439 knowledge records in 18 populated families, 451 source records and 3,480 public evidence events**. 249 authored retrieval cases, 93 repository unit tests and 146 example tests pass; structural and source checks still do not certify rendered output. - Expanded Object Lab into a 37-body Rapier playground with a jointed pendulum, tower, domino cascade, procedural surface detail, pointer grabbing, selected-body inspection and independent playback/gravity/friction/restitution controls. Reset preserves parameters; contact runs at 120 Hz. Production build and 49 sequential Node tests pass. Visible-browser observations cover impact, cascade, crate dragging, pause/playback and the corrected 625px layout; wide layout, scientific calibration and broader catalog runtime validation are not claimed. - Completed the approved Blender/Three.js depth collection with 18 further recipes: cities/operations 5, AI/quantum 5, art/story 5 and XR 3. Added 20 sources and 123 events; current totals are 223 recipes, 394 knowledge, 434 sources and 3,064 evidence events. All 229 lexical cases and 48 unit tests pass. This depth program adds 123 records in total; duplicate candidates compose existing contracts. The named clinical-procedure recipe remains deferred and all new runtime checks remain not-run. - Promoted 19 independently reviewed scientific recipes (biomedical 4, physics 6, chemistry 4, environment 5), adding 23 sources and 146 evidence events. Totals: 205 recipes, 394 knowledge, 414 sources, 2,941 events. Schema/evidence/index, 211 lexical cases and 48 unit tests pass. Runtime remains not-run. - Promoted 12 bounded subject recipes: finite-window FFT, saddle-node normal form, Newton cubic basins, CP/Tucker reconstruction, timed colored Petri nets, bit-vector SMT, allocator fragmentation, TLS handshake states, Pyraminx, mechanism cutaway, guided layer tutorial and imported-state solver verification. Added 14 sources and 92 events; totals are 186 recipes, 394 knowledge, 391 sources and 2,795 events. All 192 lexical cases and 48 unit tests pass; runtime remains not-run. - Promoted 10 creative-depth records: four style, four theme and two conditional reasoning profiles. Added one net-new source and 50 evidence events; totals are 174 recipes, 394 knowledge, 377 sources and 2,703 events. All 180 authored lexical cases and 48 unit tests pass. Runtime remains not-run. - Promoted 14 delivery-depth records: five inspection patterns, three validation profiles, four output profiles, an animation-pointer adapter and breakable-joint measurement guidance. Added 19 sources and 138 events; canonical totals are 174 recipes, 384 knowledge, 376 sources and 2,653 events. All 170 lexical cases, 48 unit tests, schema/evidence and index checks pass; 190 prior files and 357-source prefix preserved. Eight overlapping validation candidates became explicit profile subcases. Runtime remains not-run. - Promoted 21 independently reviewed experience profiles: seven presentation/composition, six motion, six interaction and two geometry records. Added 24 net-new sources and 172 evidence events; live totals are 174 recipes, 370 knowledge, 357 sources and 2,515 events. All 156 authored lexical cases and 48 unit tests pass, alongside schema/evidence and generated-index checks. Preserved 182 prior files and the original 333-source prefix. Review corrected root-motion sample ownership, whole-vector morph mixing, ping-pong event direction, pre-commit capture loss and deforming-surface annotation limits. Runtime checks remain not-run. - Promoted 12 independently reviewed Blender, glTF and Three.js craft records: four object archetypes for functional assemblies, modular sockets, deformation cages and camera-resolved hero detail; two material profiles for decals and height representation; two tool adapters for compression/decoder lifecycle and `KHR_texture_transform`; and four lighting profiles for lightmaps, emissive practicals, local probes and temporal shadow/exposure stability. The batch adds 19 net-new sources and 109 public evidence events; live totals are 174 recipes, 349 knowledge records in 17 families, 333 sources and 2,343 events. All 135 authored lexical retrieval cases, 48 unit tests, schema/evidence, index and package checks pass; 176 protected baseline files and the original 314-source prefix remain exact. These source-reviewed contracts include explicit backend/version and transport limits; no Blender export, decoder, browser or renderer was run. - Promoted 17 independently reviewed Blender, glTF and Three.js knowledge records: six modeling/asset handoffs, seven shading/render handoffs and four physics handoffs. They cover evaluated geometry, bevels/normals, UV baking, instances, transforms/pivots, deformation animation, linear color, metal/rough ORM, tangent normals, procedural shaders, IBL/shadows, transparency/volume, kinematic release, compound mass properties, timeline lifecycle and baked-versus-runtime deformation. Added 26 net-new sources and 186 public evidence events; at that checkpoint, totals were 174 recipes, 337 knowledge records in 17 families, 314 sources and 2,234 events. All 123 authored lexical retrieval cases, 48 unit tests, schema/evidence, index and package checks passed. Shared-script governance, the command inventory and the handoff reference are documented. These records are source-reviewed contracts, not observed Blender exports, solver runs or Three.js renders. Decoder lifecycle and `KHR_texture_transform` depth were accepted in the following wave. - Promoted six independently reviewed recipes for quadratic Julia filled-set escape inspection, ideal two-qubit Bell-state marginals and correlations, rigid rectangular-room normal modes, homogeneous isotropic P/S plane waves, accessible museum route/object inspection and reversible branching spatial storybooks. Added dedicated cyberpunk and steampunk creative theme profiles. The batch adds eight sources and 48 public evidence events; at that checkpoint, totals were 174 recipes, 320 knowledge records in 17 families (including 14 themes), 288 sources and 2,048 events. All 106 authored lexical retrieval cases and 48 unit tests passed; schema, evidence, index and package checks also passed. These are bounded, source-reviewed authoring contracts and creative proposals; no renderer, solver, narrative engine, museum artifact, accessibility audit or quantum experiment was executed. - Promoted 12 independently reviewed mixed-domain recipes covering predator-prey phase time, root-zone irrigation, closed-lane car following, construction sequencing, RAG retrieval provenance, single-head attention, small-network activations, two-parameter loss slices, dental motion, supplied brain atlases, deposited binding sites and orbital isosurfaces. The batch adds 17 net-new sources and 92 public evidence events. At that checkpoint, totals were 168 recipes, 318 knowledge records in 17 families, 280 sources and 2,000 events. All 100 authored known-intent retrieval cases passed their lexical regression checks. These records are source-reviewed authoring contracts; no solver, importer, model or renderer was executed. - Promoted 18 independently reviewed knowledge records covering zipper/bearing/valve construction, corrugated board/FDM/composite surfaces, six bounded mechanical models and six scientific data bridges/checks. Added 17 sources and 116 batch evidence events; a framed-shelter vocabulary revision adds two events with its prior snapshot preserved and leaves model content/source claims unchanged. At that checkpoint, totals were 156 recipes, 318 knowledge records in 17 families, 263 sources and 1,908 events, including 75 domain-validation records. All 94 authored known-intent retrieval cases passed. No importer, solver or scientific pipeline was implemented or executed for this batch. - Promoted 12 independently reviewed handbook recipes and six inspection/interaction knowledge records: finite Fourier and reciprocal complex models, Mandelbrot escape orbits, a linear phase portrait, first-reflection acoustics, a single-qubit Bloch ball, bounded proof/SAT/SMT/Petri/deadlock/KMP tasks, and six reusable inspection patterns. Added 18 sources and 108 evidence events; at that checkpoint, totals were 156 recipes, 300 knowledge records, 246 sources and 1,790 events. All 24 directions retain at least six recipes; all 85 authored known-intent retrieval cases passed at that checkpoint. Source review and structural checks do not certify runtime behavior. - Added an original stylized Yuna FFX character study with layered costume, face/hair, ceremonial staff, camera presets and optional authored motion. Default pose is static; source references and bounded visible-browser observations are recorded with the example. - Promoted 32 independently reviewed knowledge records: eight each for objects, materials, physical behaviors and tool adapters. Added 26 sources and 144 evidence events; at that checkpoint, canonical totals after the six water-promotion events were 144 recipes, 294 knowledge records, 228 sources and 1,682 events. All 76 known-intent retrieval cases passed at that checkpoint; these are authored/source-reviewed guidance, not rendered validation. - Portable SHA-256 snapshot provenance preserves revised records without requiring Git history and rejects current-revision content substitution. - Handbook coverage audit distinguishes represented styles and taxonomy from missing subject recipes and tool integrations. - Implemented the Latent Village catalog application: travel-driven creature gait/rest/reset, support-aware routes and substantial flat paths, flow-controlled mill with connected hardware, hinged inn doorway, and a contained Rapier cargo experiment with inspection controls. Fresh browser observations and bounded checks are recorded in the demo validation report. - Latent Village catalog-application walkthrough with actual retrieval outputs, resolved source context, code fingerprints and a proposed design. Corrected the initially mistaken Harness brief after user clarification; no demo code or runtime behavior changed. - Promoted the final 72-recipe depth batch after independent closure and source/evidence review: 71 new sources and 380 events, including final review. At that checkpoint, totals were 144 recipes (six in each of 24 directions), 262 knowledge records in 17 families, 202 sources and 1,532 public evidence events. All four depth batches are merged, completing the retained 144-recipe, 96-reasoning and 72-domain-validation authoring budgets. These are authored/source-reviewed content totals, not runtime certification. - Expanded documented subjects across all directions; all 68 current retrieval cases pass. Broader paraphrase and runtime evaluations remain separate work. - Merged all 96 conditional reasoning rules and 72 domain-validation records after source and editorial review. At this reasoning/domain-validation checkpoint, the catalog contained 72 recipes, 262 knowledge records in 17 populated families, 131 sources and 1,152 public evidence events. Reasoning and domain-check authoring budgets were complete; the additional 72 recipes then awaited final review and promotion. Runtime checks for these data batches were not run. - Expanded progressive catalog navigation to 17 populated knowledge families; applicability-aware search now serves the merged conditional rules and domain checks. - Merged 24 reviewed shared profiles: eight each for geometry, lighting and output. At this shared-profile checkpoint, canonical totals were 72 recipes, 94 knowledge records in 15 populated families, 91 sources and 557 public evidence events; the batch adds 32 sources and 130 events including independent review. No new rendering or host installation is claimed. - Generated catalog pages by direction and knowledge family, plus conditional reasoning support and applicability-aware search. At that checkpoint, the additional recipe, reasoning and domain-validation batches remained under correction and were not yet counted in canonical data. - Expanded initial topic coverage to 72 recipes across all 24 directions, with 59 sources and audited claims. - Expanded reusable knowledge to 70 records in 12 families, including 28 styles, 12 themes and presentation/composition/motion/interaction patterns. - Read-only record resolution and design-context helpers; subject terms now participate in retrieval. - Non-rendering skill behavior probes and three recorded response observations. - English foundation documentation covering installation, compatibility, example prompts, contributions, and evidence. - Three sourced pilot recipes and runnable Three.js examples: fantasy village, linear transformation, and cube face turns. - Conditional data schemas, provenance validation, JSONL evidence, and generated catalog indexes. - Optional weighted-field BM25 retrieval with explicit filters and an overlap baseline. - Reproducible portable skill/plugin archives with checksums. - GitHub Actions validation and draft-release workflows; hosted execution not yet observed. - Historical Harness Village recording with provenance, clearly distinguished from new skill evaluation. - Expanded to 24 pilot recipes across eight directions, with 19 source records and source-scoped evidence. - Added structured object craft and physical contracts, supporting references, and 15 known-intent retrieval cases. - Eighteen reusable object knowledge records across six families, seven additional sources and sanitized feedback-to-data evidence. - Optional knowledge collection with family-filtered retrieval, typed relationships and audited packaging. - Object Lab with Three.js and Rapier: detailed crate, rubber ball, drop/reset, off-center impulse, friction and collider inspection. ### Changed - `templates/rigs/post-stack.js` accepts a `toneMapping: {mode, exposure}` option and appends `ToneMappingEffect` last in the merged pass, because three r180 skips `renderer.toneMapping` for render-target draws; the scaffold now enables the post stack by default and `dispose()` restores the renderer's own values. Measured on the same frame, mid-scene luma stays within 3.3% of the renderer-tone-mapped build; an sRGB `scene.background` reads deeper through the composer, which the template header states. - Added optional Blender CLI discovery before substantial object creation or quality improvements, with version-only probing, task-specific adoption and separate runtime/resource checks. Missing Blender preserves the existing workflow. - Shelved the Yuna FFX character experiment after the user declined its reference likeness; retained its bounded technical observations without a likeness or quality claim. Handbook data expansion proceeds separately from demo work. - Regenerated the rejected Yuna study with continuous facial geometry, revised proportions, hair sheets and curved garment construction. Technical checks pass; reference likeness remains explicitly unaccepted. - Matrix example now has playback, exact milestone stepping and a stable original-shape reference. - Cube example now animates random scrambles and verified solutions from recorded moves, with progress and speed controls. - Village now has five detailed building types, distinct articulated creatures, geometry-derived obstacle bounds and acceleration-limited swept movement. - Global motion pause now freezes cube transitions as well as elapsed-time animation. ### Fixed - `validate.py` and the unit suite are green again after the retired scenes left dangling references: at that checkpoint 3,069 evidence events and 49 unit tests passed. `check-retrieval.py` and `check-docs.py` now accept `--help`. - Added lightweight procedural color/normal ripples to village water using shared small textures and UV motion. Visual acceptance remains user-run; no headless rendering. - Clarified Current strength and fixed its paused-state response. Added demand rendering, hidden-tab suspension, bounded pixel/shadow resolution and static support-ray filtering. No new headless rendering or hardware performance claim. - **Frozen scaffold scenes.** The shipped `templates/scaffold-vite-threejs` demand loop charged the first frame after idle `dt = 0`, so `scene.update(0)` answered "nothing moved", the loop parked and never restarted; the camera rig was never handed an `invalidate`, so orbit input could not wake it either — the defect the [before/after evaluation](evals/skill-behavior/before-after-2026-09/README.md) found in the generated artifact. The loop now charges one frame's worth of time after idle, `createCameraRig` takes `invalidate` and fires it on `start` / `change` / `end`, on focus tweens and in `setView`, and `capture.py` gained `--motion-check MS` / `--expect-motion` (exit 5 on two identical frames) with a liveness item in both checklists. Verified on a fresh build: pre-fix, 0 frames drawn during a 20-step drag after idle and identical 2 s hashes; post-fix, 106 frames and differing hashes. - Corrected Latent Village water readability: persistent flat water coverage, restrained separate flow cues, shared surface level and pond inspection. Added coverage regression and conditional skill guidance; the three dataset revisions are now promoted with exact historical snapshots and unchanged prior evidence. ### Removed - Removed the rejected Yuna character scene, its models, dedicated test and study document at the user’s request. One scene remains after the later retirement below. - Retired the matrix, cube and Object Lab scenes and their tests from `examples/early-slice`; the app now has one scene (27 Node tests). Their five passed check-run events are retired through correction events in `evidence/dataset-changes/early-slice-scene-retirement/`, not rewritten. ### Pending release verification - Broader scene evaluation beyond the three locally observed artifacts, and host-specific installation tests. - Hosted CI execution, plugin distribution and release rehearsal. - Maintainer license selection and asset redistribution review.