Skip to content

PRD-570: a character costs what the camera sees of it - #487

Draft
jonit-dev wants to merge 136 commits into
developfrom
perf/prd570-skin-animation-gate
Draft

jonit-dev wants to merge 136 commits into
developfrom
perf/prd570-skin-animation-gate

Conversation

@jonit-dev

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

Copy link
Copy Markdown
Contributor

Distant characters now have a production RAW pose path inside the genuine SkinnedBatch: eligible 12-bone scalar-Z packets drive current and previous GPU poses while unsupported cases retain stock fallback. Explicit rate1 controls retain the genuine stock path. Public live palette arrays, displayed-pose history, retirement and shared-skeleton ownership have focused coverage. Earlier projected-size cadence, shooter opacity, contact-discovery and runner deadline repairs remain in this PR.

Implements PRD-570. Published head fa44abfebbd008aed566ac5f0a0b6c022287c51e. Draft, 50%; 0/2 acceptance criteria. Not ready to merge.

  • Current validation: root compiler check, 29 packet contracts, 20 terrain tests, six native consumed-velocity fixture tests and one quality-JSON test pass. Fresh logic review gives GO for the native proof; its runtime remains unverified. The production 128-slot probe now PASSes 23/23 checks on headed physical Intel WebGPU at1280×720: zero diagnostics, actual128-instance draws, RAW/stock routing, isolated retirement/history and nonblank checks. Earlier22/23 failures are preserved; their sole cause was an artifact-server favicon404, corrected without changing engine inputs or assertions. Its 256 pinned build inputs still match this head. The original CPU bundle is frozen from e3; subsequent changes touch native fixtures, CI routing and PRD prose only. Its original six-arm laptop flight is pending. No current-head full acceptance is claimed.

  • Current CI: Fresh full CI38818873066 is dispatched for this head, including the corrected native row52 and the original shipped crowd-rate desktop scenario. Results remain pending. Historical e3 CI38815117314 executed row52 and exposed its missing physical MRT attachment; the installed helper fix has six passing native tests and fresh review GO. The new native scenario step has207 passing focused CI contracts and fresh review GO. Both runtime results remain unverified. Historical full CI38772095802 passed on437e0f602, before this production path.

  • Open acceptance: the original frozen CPU run remains FAIL at 40.13% / 31.72% ordered reduction, with four 128-rig CVs 5.04–10.93%. Both reductions must reach 40%, with every CV<=15%, unchanged controls/windows and all candidate work charged. Original 128/32/8 temporal judging remains REGRESSION at 10/40/120m. Current-head original CPU, temporal, native runtime, installed shooter and required CI qualification remain open.

Historical shooter/native/portable results and the prototype screenshots below retain their original scope. Prototype GPU results are not current production evidence; rejected experiments and earlier failures do not establish acceptance. No threshold changed.

Historical still-pose evidence — motion acceptance remains open

Historical runtime 9e527b712, physical NVIDIA/Turing, 1280×720. BEFORE is rate1; AFTER is auto. Each repetition launches a separate browser. All 12 historical captures pass with matching source/bundle/pose provenance and zero diagnostics, and match these published PNG bytes exactly. Fresh independent verdict: NEUTRAL for all six pairs and overall; no visible loss in stills. NEUTRAL is acceptable for this performance task under the owner’s task-dependent policy. These stills do not prove temporal smoothness.

10 m

Repetition BEFORE AFTER
1 BEFORE 10m repetition 1 AFTER 10m repetition 1
2 BEFORE 10m repetition 2 AFTER 10m repetition 2

40 m

Repetition BEFORE AFTER
1 BEFORE 40m repetition 1 AFTER 40m repetition 1
2 BEFORE 40m repetition 2 AFTER 40m repetition 2

120 m

Repetition BEFORE AFTER
1 BEFORE 120m repetition 1 AFTER 120m repetition 1
2 BEFORE 120m repetition 2 AFTER 120m repetition 2
Historical soldier opacity correction — four independently judged pairs

Physical NVIDIA/Turing WebGPU, two independent runs per pose, burned-in BEFORE/AFTER labels. A fresh read-only judge rated all four pairs IMPROVEMENT: the background-shaped helmet stripe is removed, with no visible downside. Death-fade pixels and native soldier rendering are not covered by these frames.

Pose / repetition BEFORE AFTER
Standing 1 BEFORE standing 1 AFTER standing 1
Running 1 BEFORE running 1 AFTER running 1
Standing 2 BEFORE standing 2 AFTER standing 2
Running 2 BEFORE running 2 AFTER running 2
Artifact-only raw renderer: visual REGRESSION, not acceptance

Four headed Intel Gen-12LP WebGPU launches passed six scoped assertions each (two stock/two raw); all checkpoint captures completed at frames 10/119/121/122. The fresh visual judge returned REGRESSION at frame 119 in both pairs, with NEUTRAL at 10/121/122. Shadows also differ within each arm across launches, while mesh silhouettes and surface shading match. The fixture advances multiple fixed ticks inside one renderer frame, where Three caches shadows; that artifact-only lifecycle mismatch is under correction. No GPU arithmetic, consumed velocity, original temporal acceptance or CPU cost pass is claimed.

Frame 119 BEFORE stock AFTER raw
stock-1 / raw-3 BEFORE stock-1 frame 119 AFTER raw-3 frame 119
stock-2 / raw-4 BEFORE stock-2 frame 119 AFTER raw-4 frame 119

All 16 checkpoint captures.

Corrected artifact renderer: fresh visual NEUTRAL, original acceptance still open

Each fixed tick now renders from Three’s own animation-loop callback and rejects a missing or nonincreasing actual NodeFrame ID. Four fresh headed Intel Gen-12LP launches passed 6/6 scoped assertions each; observed renderer frame IDs advanced from 2 to 238–242. The fresh visual judge inspected all 16 checkpoint images and returned NEUTRAL at every checkpoint in both pairs, with consistent shadows within each arm. Camera, light, material, shadows and authored 1/60 fixed step are unchanged.

The never-retired LEFT slot matches genuine rate1 stock; the RIGHT slot intentionally holds its genuine rate4 CPU pose after retirement. Exact held-target equality, consumed velocity, continuous motion, GPU arithmetic, native and original 128-rig CPU acceptance remain unverified. This artifact prototype is not production code. The prior REGRESSION receipts remain preserved above.

Checkpoint / pair BEFORE stock AFTER raw
Frame 10 / 1 BEFORE stock 1 frame 10 AFTER raw 1 frame 10
Frame 10 / 2 BEFORE stock 2 frame 10 AFTER raw 2 frame 10
Frame 119 / 1 BEFORE stock 1 frame 119 AFTER raw 1 frame 119
Frame 119 / 2 BEFORE stock 2 frame 119 AFTER raw 2 frame 119
Frame 121 / 1 BEFORE stock 1 frame 121 AFTER raw 1 frame 121
Frame 121 / 2 BEFORE stock 2 frame 121 AFTER raw 2 frame 121
Frame 122 / 1 BEFORE stock 1 frame 122 AFTER raw 1 frame 122
Frame 122 / 2 BEFORE stock 2 frame 122 AFTER raw 2 frame 122
Historical prototype GPU velocity PASS: two rigs, 8-bit diagnostic only

A historical artifact-prototype physical Intel Gen-12LP WebGPU run passed 7/7 scoped assertions. Actual frames 121/124 reported both players CPU-held and bound modes raw/stock; frame 124 also confirmed the preceding right display was held. At 124, the fixed GPU diagnostic ROI contained 7,490 nonzero left pixels (maximum 111), with zero nonzero pixels on the retired right slot and floor; all ROI pixels were opaque. Frame 121 is transition evidence only. This qualifies the two-rig 8-bit consumed-velocity diagnostic, not exact floating-point velocity, general packet integration, native, original 128-rig CPU or temporal acceptance. These readbacks carry no new colour visual-acceptance verdict. This is historical prototype evidence, not qualification of the current production path.

Actual GPU readback: transition 121 Actual GPU readback: both-held 124
GPU velocity readback transition frame 121 GPU velocity readback both-held frame 124

@jonit-dev jonit-dev added the prd:0% PRD implementation has no verified phase yet label Oct 10, 2026
@jonit-dev

Copy link
Copy Markdown
Contributor Author

PRD-570 bounded functional preflight, local source cd48d5ae78a66920b7299720a5c7ce86d77c64e4 (not yet pushed):

  • Doctor passed before and after. Headed run used the explicit nine browser arguments equivalent to shipped WebGPU recipe plus the four approved Vulkan extras. Actual capture adapter: nvidia / turing, RTX 2080.
  • Completed window 2: ready=true, 120 render/animation/palette frames, 120 actual main samples and 120 rendered-shadow samples, 32 animation calls/palette writes per frame. Main/shadow draws 3/1, triangles 17,667/17,664; 1280×720, DPR/scale 1.
  • Scenario exited 1 with 11 TN_PLAYTEST_ASSERTION_TRIVIAL errors: startup already satisfied held-invariant assertions. Window/readiness checks passed, but this is not a passing scenario. No assertions changed and no retry was made.
  • Raw receipt, capture, console, state, doctor logs and before/after source/bundle hashes retained in the PRD worktree at artifacts/prd570-functional-cd48d5ae7/. Hashes stayed unchanged during execution. Owned port 57170 preview was stopped and port closure verified.
  • Other GPU processes were present (26% utilization before, 22% after); no cost, savings, visual or native claim. Nine-arm cost series remains unrun and requires a separate exclusive grant. All PRD boxes remain open at 0%.

@jonit-dev

Copy link
Copy Markdown
Contributor Author

Functional recheck at local candidate 16f2173f9: PASS on headed NVIDIA/Turing. The unchanged 32-animated scenario passed all 14 resource checks (three documented startup-invariant waivers); startup measured:null became a complete immutable window 2 with 120 render/animation/palette frames and 120 main/120 rendered-shadow GPU samples. Original warmup120, 1280×720, scale1/MSAA4 and limits were retained. Doctor before/after and the exact fixture build passed; owned preview cleaned up.

This is functional proof only: other GPU jobs were present. No performance reduction, native acceptance or judged visual comparison is claimed; PRD570 remains at0%. Local source/PRD commits are held until the existing CI watcher completes. Results and artifact pointers remain in the PRD; capture data is artifacts/prd570-functional-16f2173f9/.

This PR stays open for João’s inspection when its PRD reaches100%; no merge or archival.

@jonit-dev jonit-dev added prd:25% PRD phase 1 verified and removed prd:0% PRD implementation has no verified phase yet labels Oct 11, 2026
@jonit-dev jonit-dev added prd:50% PRD half the phases verified and removed prd:75% PRD phases in, acceptance open labels Oct 15, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

prd:50% PRD half the phases verified

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant