# W-CREATURES, 17 October 2026

Isolated asset handoff at `gex44:/opt/creature-lib-20261017/`.
No Factory, Engine, live game or service configuration is changed.

## Result

24 exact-shape catalog entries, 23 toon and one realistic wolf. Five flying models are separate incomplete candidates because no stride or movement speed can be measured from their in-place flight clips.

See the workspace-root `REPORT.md` and the remote report for visual verdicts, full source credits and limits. All source assets, final GLBs and evidence remain in the remote task folder. Local screenshots used during review are disposable and are not part of the scripts.

## Reproduce using the retained sources

Run from the remote task folder. Do not point these scripts at a deployed app.

1. Copy this directory's scripts into the task folder's `scripts/` directory.
2. Run Blender with `normalize.py -- /opt/creature-lib-20261017`. It preserves Quaternius clips, fixes units/origin, retains rigid antlers, removes unused props and limits weights.
3. Run Blender with `rig_generated_wolf.py -- /opt/creature-lib-20261017 bind`. It uses the retained generated mesh and the normalised Quaternius wolf rig. Paw fitting is measured; tail influence is isolated from hind legs.
4. Serve only this disposable folder on loopback port 8769. Run `node scripts/validate.mjs /opt/creature-lib-20261017` to render and measure the initial models.
5. For each ground model run Blender with `plant_feet.py -- /opt/creature-lib-20261017 <kind>`. Candidate files go to `candidates/`, not over the prior final files. Stance correction preserves the authored action, solves leg joints and bakes the result.
6. Validate the `<kind>-footplant` candidates with `validate.mjs`, and inspect their clip strips before promotion. `finalize.py` checks their reports, promotes them, fixes source-name misconceptions and prepares aliases/credits. It expects one completed pass, not an arbitrary half-finished state.
7. Run `strip_degenerate.py`. This removes only zero-area triangle indices if any remain. Run final browser validation again, then `wolf_evidence.mjs` and `sheets.py`.
8. Run `node scripts/node_validate.mjs`. It independently reloads every final GLB, decodes packed images and plays every clip with AnimationMixer, checking finite skinned vertices.
9. Run the skill's `audit_glb.py` on every GLB and save the combined rows as `evidence/independent-glb-audit.json`. The audited skill script is retained in the remote task folder. No compression decoder is required for these final files.
10. Update `review_notes.json` only after opening the final images. Run `report.py`, then `test_delivery.py`.

Blender invocation:

```sh
/root/blender-spike/blender-5.2.0-linux-x64/blender \
  -b --factory-startup --python-exit-code 1 \
  --python /opt/creature-lib-20261017/scripts/normalize.py \
  -- /opt/creature-lib-20261017
```

The installed Blender wrapper waits for a shared GPU slot. Do not bypass it.
The renderer uses existing read-only Three.js and Playwright packages under `/opt/dream-loop-ab/node_modules/`. `deps` in the task folder is a symlink to those packages. The Chrome path is explicit because the preinstalled Playwright package and browser versions differ. Node's image decoder is installed only under the task's `node-runtime/` directory; its lockfile records the version.

## Acquisition and generation

- `acquire.py`: Quaternius licence pages and owned archived monsters. The animal Drive route encountered quota HTML and is recorded as failed, not valid geometry.
- `acquire_animals.py`: the same CC0 animal pack from a pinned-commit public mirror, with exact URLs and hashes.
- `acquire_extra.py`: inspected alternatives and four additional archived monsters. Its NewDLC wolf, boar and crab are not final catalog assets.
- `generate_reference.py`: paid/operator-authorised image generation through the existing loopback service, no credential-file access.
- `collect_wolf_job.py`: collects the recorded completed image-upload job. Do not treat it as a new-job submitter.
- Text-to-3D failed twice with GPU OOM. The image-upload route used the service's existing C++ fallback successfully. The generation request, job IDs and resulting URL are retained in evidence.
- `probe.py`: read-only Blender source/rig inspection.

Generated meshes and colour outputs are not committed into these scripts. The exact final source mesh is retained remotely so reproduction does not require spending on another generation.

## Speed and quality contract

- Blender imports and exports at 30 fps to preserve source clip endpoints.
- Speeds are re-measured from the final GLB's full-contact foot-marker travel divided by stance time.
- The source-measured stance frames are saved per model. Do not substitute speed guessed from the model height.
- Contacts are flat-ground corrections. Some rotating toe vertices still dip by up to about 1.6 cm in sampled poses. Marker line fit is not a claim that every skin vertex is mathematically locked.
- Realistic wolf: OK at game distance; closed-jaw lunge, coarse tail tip and a small forehead/eye texture blemish. No floating eye geometry.
- No fabricated missing flyer walk clips or arbitrary flight speeds. Held-back flyers do not enter the 24-entry main catalog.
- No game damage windows, collision tuning, slopes, Factory/Engine wiring or GPU frame-rate benchmark is included.

## Dependencies and attribution

Python: Blender's bundled Python/numpy for geometry, system requests and Pillow for source collection and contact sheets. Node: existing Three.js/Playwright plus `@napi-rs/canvas` in the isolated runtime folder. Quaternius source assets and motion clips are CC0; every exact source URL and author is preserved in the catalog and evidence. The generated realistic mesh is offered under CC0 for this library. The independent `audit_glb.py` is the existing Forge Blender skill audit, not newly authored here.
