Skip to content

Bake procedural wolves and follow accepted physics - #449

Merged
jonit-dev merged 53 commits into
developfrom
feat/procedural-animal-content
Oct 8, 2026
Merged

jonit-dev merged 53 commits into
developfrom
feat/procedural-animal-content

Conversation

@jonit-dev

@jonit-dev jonit-dev commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

This adds one bake-first wolf through an optional package and installed game consumer. Pinned MIT donor input produces deterministic high/crowd payloads through the normal asset cook/resolver. Editable game motion and TSL dual-quaternion position/normal/shadow rendering follow accepted Rapier state. Runtime graphs exclude generation, workers and Node imports.

This draft owns only PRD-procedural-animal-content.md. AC1–6 and AC8 pass within their recorded scopes. Original performance/resource AC7 remains open: 75%.

Validation:

  • Installed RTX 2080 browser animal/frustum scenarios each pass 17/17 assertions with independently reviewed wolf deformation, shadows, wall clearance and outside-frustum suppression.
  • Frozen source 472925 Linux native: animal 20/20 and frustum 19/19 pass at 15:20:52–15:21:58 UTC on the unchanged audited V8/Dawn host. Each arm has nine actual GPU DQS cases; maximum position error 6.3373e-7 m, normal error 4.9781e-7, root error zero. Startup main/shadow draws are 32/32; outside main draws are zero. Canonical lease ownership precedes each host launch, and cleanup confirms no owned host/holder. Exact attempt receipt, full artifact receipt, cleanup, publication hashes.
  • Actual producer clock observations (181/185) report wall-clock. The raw config-derived fixed-step report label is preserved and explained. Native runtimeDiagnostics/network remain unavailable; both complete captured-console guards pass with zero errors. The original 2,055 inputs and failed attempts remain preserved. Independent native image review.
  • Current AC7 preparation: 184 focused tests pass; strict core, optional-package and installed consumer typing pass; core ESM/DTS/publint and all five browser entries build. Three Linux performance entries bundle and parse without runtime imports. All 39 installed authored files and core/animal distribution files match the candidate; recorded browser/native graphs exclude generator/build/Node imports. Independent source review found no blocker. Scene-exit failure now continues cleanup, actual producer wall-clock admission precedes observation allocation, every CPU row checks loop tick/substep coverage, and all per-window telemetry uses the configured sink. Full rows are emitted after measurement/drain.
  • Normal commit and push hooks pass. Required documentation contracts pass 243 tests; tracked evidence checks pass. No full CI or actual hardware observer qualification is claimed. The earlier frozen native correctness run does not qualify the later observer/performance changes.

Remaining original AC7 proof: 32 crowd wolves, each ≤8,000 vertices and 128 bones; 300 warmup + 1,800 measured frames across three paired animal-free baselines on a recorded hardware adapter; incremental p95 CPU ≤2 ms and GPU ≤4 ms; separate high-tier single-animal cost; 50 actual GPU lifecycle cycles. Every selected animal requires actual main/shadow submissions. Inputs and archives are sealed at code commit ca27497; GPU work awaits the parent-scheduled slot. No merge or release.

Exact native JSON streams are preserved as .json.txt. Adjacent .json files are Biome-formatted review views with separate hashes. The seven original PNG files below are unchanged (1280×720). They establish articulated wolves, shadows, wall clearance and a nonblank outside view; exact paw contact, independent sit/lie pixels and pixel parity are not claimed.

Frozen native capture Original PNG
Wall Wall
Turn Turn
Stopped Stopped
Final standing posture Final standing posture
Animal final Animal final
Outside Outside
Frustum final Frustum final

Latest AC7 attempt and failure-attribution repair

  • Corrected first browser baseline: RED / incomplete, source 0899bd1, 18:26:49.713985183–18:28:31.714507797 UTC. The retained NVIDIA WebGPU device and owned GPU PID → RTX 2080 receipts are preserved. Both existing benchmark pacing flags were present. First raw error: WORLD_FRAME_ORDER; final state error: TICK_COVERAGE. Zero complete-series markers; no qualifying p95 or pair. The supplementary 1,024-sample tail cannot replace all 1,800 measured CPU/GPU pairs. A foreign Chromium GPU process was observed and left untouched.
  • Wrapper cleanup ended at 18:28:32.543052628 UTC. Verification at 18:29:05 UTC found all 16 observed owned PID/start-time identities gone, the holder absent and port 5195 free. Crowd, later pairs, separate high cost and 50 GPU cycles remain unrun. Raw artifacts and all exact input copies remain in animal-ac7-runs/attempt.ed_waiyu/browser-pair1-baseline on the connected workspace. Original AC7 bars are unchanged; prd:75%, draft.
  • d228639f8 repairs game failure attribution only. The public FRAME_HITCH_MARKER now aborts and releases an armed collector immediately. Its real 2,500 ms omitted-window control failed before the change; 43 focused controls pass afterward. Independent source review found no blocker. No tick rebasing, skipped rows, wider budgets, package/host change or unchanged hardware rerun.
  • Head 478a876ef normally merges fresh develop a683fcff3, retaining the upstream declared test type in the sole equivalent conflict. All 45 focused controls pass after the merge; documentation links and mirrors pass. Native host source inputs are unchanged. Historical browser/native proof retains its actual source/package/payload/host identities. Full CI and AC7 hardware qualification remain unverified; normal push drift checks do not establish runtime qualification.

Automatic approval review denied a broad unrelated /proc environment/command-line scan before execution because it could expose credentials or session data. Narrow owned-PID ancestry and GPU receipts completed safely instead. No foreign process changed.

Latest verified continuation (2ad55311e): failed measurements now preserve immutable partial CPU/GPU rows, the already-resolved observer queue/status and specific original/diagnostic/aggregate cleanup messages. Output follows cleanup and remains explicitly unqualified. Genuine red controls reproduce the evidence loss; 50 focused controls across five files pass on CPU 22/maxWorkers 1. Fresh independent source review is clear. Biome exits 0 with three disclosed complexity warnings; docs validate 2,480 links across 1,254 files. Normal commit/push hooks pass (agents/docs/lint/drift); no bypass, force push or hardware rerun. The fresh versioned installed consumer matches all 39 authored source files and four cooked public files, with unchanged package pins/lock. Its graph checks await the parent CPU slot.

Animal capabilities are already registered in the canonical generated manifest. The actual offline installed engine MCP launched from the generated .mcp.json passes tools/list, seven searches and authoritative detail for all 19 distinct hits. Runtime IDs: createAnimalActor, createAnimalGeometry, loadAnimalBake, parseAnimalBake in @threenative/procedural-animals; build IDs: animalBakePass, bakeWolf, bakeWolfToFile in its /build export. The README documents those existing tools and IDs. No missing tag or duplicate registry was introduced.

The underlying corrected-baseline stall remains unestablished: the retained sample tail's maximum gap is 439.6 ms; maximum recorded pipeline service is 4.8 ms. Earlier rows/timestamps and scheduler/GC/driver observations are absent. A single foreign GPU observation cannot establish causation. AC-7 remains open at 75%; complete three paired 300/1,800 series, original <=2 ms CPU/<=4 ms GPU increments, separate high-tier cost and fifty actual GPU lifetimes remain required. Merge is authorized after original acceptance and normal required checks pass. No ready/merge or 100% claim is made from CPU evidence.

Latest installed preparation at source 2ad55311e: strict installed typecheck, five-entry browser build (146 modules), and all three desktop portable game bundles (122 modules each) pass. All three desktop outputs parse as classic scripts; both cooked payloads and all four manifests/receipts match exactly. The unchanged 58-byte historical wall-clock prelude uses the shipped global clock contract; productionClockRequest is not a named public export in this installed runner. No native host was rebuilt or launched.

External launch ownership was repaired after security review: the canonical acquireCaptureLock holder now delegates one CLI tree to a dedicated Linux subreaper; only kernel waitpid ECHILD, matching private-pipe terminal metadata and guardian exit admit release. Cancellation uses the private pipe rather than numeric PID signaling. A real startup-race red control and 13 final inert control cases pass; fresh independent source review finds no remaining concrete ownership/release blocker. No broad /proc environment or command-line scan is used. The final seal retains 518 exact input copies, including source, installed packages, payloads, host/Node/browser binaries and reviewed launchers (SHA-256 a134db037298272369333baad5d8a35e887b065a333926914f9e5cf5d168bee1).

AC7 remains open at 75%. The first original baseline/crowd pair awaits the parent-assigned actual-free GPU window; fresh NVIDIA observations show external browser/emulator activity, so no animal lease or browser is held while waiting. Current draft CI entries are skipped, not passing qualification. All original 300/1,800-frame, three-pair, CPU <=2 ms/GPU <=4 ms, visibility and 50-cycle requirements remain unchanged.

Published lifecycle repair and current sealed inputs

Published e56198ab0a6362ce689580219d44f670966b9e4d repairs game lifecycle error cleanup and rejected-action accounting. Genuine red controls reproduced leaked Rapier owners, a masked teleport error and unhandled rejection; the final four nearest test files pass 30/30, with no unhandled errors, on CPU22 with one worker. Fresh independent source review is clear.

A fresh normal installed consumer passes strict TypeScript and the five-entry browser build (146 modules). All three retained Linux performance bundles remain byte-identical: every one of their 122-module inputs matches the new consumer and neither lifecycle repair is in those graphs. No duplicate native JS/C++ build was performed.

The current input seal records 531 files / 599,988,580 bytes, SHA-256 91d7c4d41818a2255a7a3ddf0e6d15e23ab1c7b99a1054ea75cce6010885f87d; an independent reviewer checked every original and frozen copy with zero mismatches. Normal push hooks passed agents, docs, lint and drift. These are preparation/source checks. AC-7 is still open, PRD75%, and no complete performance pair or 50-cycle GPU qualification is claimed. The next actual-free GPU window is granted; external browser/emulator work currently occupies the adapter.

Launch provenance was audited separately before hardware: an immutable addendum retains the exact capture-lock source, TSX4.23.5 loader closure, esbuild0.28.1 JS/Linux executable, config/package metadata and Python interpreter (35 files / 11,801,312 bytes, SHA f19d17c124b620ebd69c900ca311b5b59ac9f75c4ec7cf595d7e1cdeb36faba5). A separate 771-byte control-helper supplement binds both seals. Existing private-lock controls pass under the pinned PATH, disabled loader cache and absent inherited loader/config/binary overrides. Fresh independent review verifies all originals/copies/resolutions and finds no remaining source/input/control-provenance blocker. Exact per-arm commands, live ownership and hardware admission remain launch-time checks. No GPU performance or lifecycle qualification is claimed.

@jonit-dev jonit-dev added the prd:50% PRD half the phases verified label Oct 6, 2026
@jonit-dev jonit-dev added prd:75% PRD phases in, acceptance open and removed prd:50% PRD half the phases verified labels Oct 6, 2026
The 120s cap is a game-fixture backstop, not an AC-7 acceptance bar.
600s admits 2100 crowd frames at the observed 8.4fps. AC-7 stays open.
- slopedFloorGround rejects vertical/inverted top normals instead of abs(normal.y)
- exact floor bounds, no 1e-4 expansion; fallback errors preserved
- spec proves zero fallback calls for interior analytic samples and covers
  outside-floor, nonfinite, unsupported geometry, vertical and inverted fallback
- move one-shot ac7-cpu-profile.spec.ts to a raw diagnostic artifact, remove from tracked suite
- PRD notes mark 8.166s->3.059s and 5026->927 as diagnostic-only
The installed consumer CLI rejected the raised performance scenarios
before launch with TN_PLAYTEST_SCENARIO_STEP_INVALID step1
timeoutMs600000 exceeds schema max120000; no browser started. The
shipped schema caps a waitForResource step at 120000 ms, so both
performance fixtures restore the supported 120000 ms complete-series
step. The performance-game.ts 600000 ms internal backstop is unchanged,
as are engine schema, AC-7 thresholds and payloads. AC-7 stays OPEN
pending a fresh hardware run.
@jonit-dev
jonit-dev marked this pull request as ready for review October 7, 2026 22:41
@jonit-dev
jonit-dev marked this pull request as draft October 7, 2026 22:41
… own PRD

Owner decision 2026-10-07: AC-7 (CPU p95 <=2 ms, GPU <=4 ms, 50-cycle
lifecycle) moves to PRD-procedural-animal-performance with the limit
unchanged. The content PRD is 100% and moves to done/.
@jonit-dev
jonit-dev marked this pull request as ready for review October 7, 2026 22:43
@jonit-dev jonit-dev added prd:100% and removed prd:75% PRD phases in, acceptance open labels Oct 7, 2026
Root typecheck (strict index access, donor.d.ts reference), publint in the
package test script, Node 20.x bake check, temp-dir registration, quality
waiver, engine-override annotation, and the frame-budget cadence spec now
filtering the sink to window lines.
@jonit-dev
jonit-dev added this pull request to the merge queue Oct 8, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 8, 2026
@jonit-dev
jonit-dev added this pull request to the merge queue Oct 8, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 8, 2026
@jonit-dev
jonit-dev added this pull request to the merge queue Oct 8, 2026
Merged via the queue into develop with commit 6511377 Oct 8, 2026
198 of 215 checks passed
jonit-dev added a commit that referenced this pull request Oct 8, 2026
…patched hash

PR #449 landed with importers on the old three patch hash while this PR changes
the patch, so the merge-queue result failed pnpm install --frozen-lockfile.
Five references repointed; frozen offline install, lint, typecheck and the
scaffold/template contracts pass on the merged tree.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants