Repository navigation
Conversation
|
PRD-570 bounded functional preflight, local source
|
|
Functional recheck at local candidate 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 This PR stays open for João’s inspection when its PRD reaches100%; no merge or archival. |
The Crowd fixture now reaches actual SkeletalMesh3D animation updates and palette writes at 32, 128 and 256 rigs, with animated, held and baked-static controls. Exact CPU spans and separate main/shadow GPU buckets feed a JSON-safe receipt latched once from a complete ready window after startup; flat startup metrics continue updating.
A single headed 32-animated functional run on NVIDIA/Turing passed all 14 checks. Exactly three URL/enter-time invariants have specific allowTrivial reasons; completed-window measurement checks remain unwaived, and an already-held measurement still fails the existing baseline guard. Functional artifacts:
artifacts/prd570-functional-16f2173f9/. Runtime source:16f2173f96f6bd269e3c8c8930196bf34557cda6; reviewed documentation:a311f995802fcb6aa47a1b9c3e7d2bb1a2c149d4.Normal pre-push verification passed: agents (1 s), documentation (7 s), lint (12 s), drift (33 s). This bounded hook establishes no runtime or native result.
Validation recorded in the PRD: six real callback/bridge cases, TypeScript, scenario schema, Biome and documentation checks; the headed functional run used an explicit manual override equivalent to the shipped WebGPU recipe plus four approved NVIDIA/Vulkan arguments. No three-window cost series, CPU reduction, GPU savings, native parity or visual-judge result is claimed. PRD progress remains 0%, and all outcome boxes stay open.
Risks: timings include instrumentation overhead; one receipt is insufficient for the proposed three-window-per-arm cost series. A baseline already at window 2 or later must fail honestly rather than adjusting warmup to obtain a pass.
TL;DR — summary that supplies
gpuMain; absent measurements stay absent in FrameBudget and publishnullin the fixture. Readiness now requires an observed main sample as well as rendered-shadow samples. The focused fresh/deduplicated-main assertion failed before the field existed, then all 17 frame-budget GPU-series tests passed, including measured zero and missing-main cases. Core ESM/DTS/bundler build and publint pass. Crowd TypeScript, scenario schema and Vite build pass. Six bridge/readiness cases pass: a global GPU sample count cannot substitute for missing main samples. Main sample counts are observed independently of the 120 render frames.0% by the PRD's own boxes: 0/3 phases (0/7 boxes), 0/2 acceptance criteria. PRD:
docs/PRDs/unreal-source-borrowing/PRD-570-a-character-costs-what-the-camera-sees-of-it.md.Phases
Phase 1: The cost is measured — 0/2
AnimationPlayer.updateandSkinnedBatch.writeat 32, 128 and 256 rigs, with the result recorded under## Decisions. proof:crowd-rate.playtest.jsonwithplaytest perfand span probes.## Decisions. proof: the same playtest, both arms,TN_FRAME_BUDGETmain/shadowbuckets.Phase 2: Rigs evaluate at the rate their screen size earns — 0/4
dtkeeps clip time, fade progress and thefinishedevent identical to rate-1 playback over 300 frames, and a forced evaluation follows any skip longer than the rate. proof: red-green cases inpnpm exec vitest run packages/core/__tests__/animation-rate.spec.ts.updateRate: 1players never skip. proof: the same spec.crowd-rate.playtest.jsonpluspnpm visuals:ab --before <rate1> --after <auto> --out <dir>.node packages/playtest/dist/runner/cli.js examples/skinned-crowd/playtests/crowd-rate.playtest.json --target desktop.Phase 3: Skinning runs once per frame, if Phase 1 earns it — 0/1
## Decisionsinstead. proof:crowd-rate.playtest.jsonperf arms andpnpm exec vitest run packages/core/__tests__/projection-skinned.spec.ts.Acceptance criteria
SkeletalMesh3Dcrowd receding to 120 m spends at least 40% less CPU inAnimationPlayer.updateplusSkinnedBatch.writethan the rate-1 arm, from one build. proof: newexamples/skinned-crowd/playtests/crowd-rate.playtest.jsonthroughnode packages/playtest/dist/runner/cli.js ... --browser-recipe webgpuwithplaytest perf, adapter named.pnpm test:templatesfor shooter.Still open
AnimationPlayer.updateandSkinnedBatch.writeat 32, 128 and 256 rigs, with the result recorded under## Decisions. proof:crowd-rate.playtest.jsonwithplaytest perfand span probes.## Decisions. proof: the same playtest, both arms,TN_FRAME_BUDGETmain/shadowbuckets.dtkeeps clip time, fade progress and thefinishedevent identical to rate-1 playback over 300 frames, and a forced evaluation follows any skip longer than the rate. proof: red-green cases inpnpm exec vitest run packages/core/__tests__/animation-rate.spec.ts.updateRate: 1players never skip. proof: the same spec.crowd-rate.playtest.jsonpluspnpm visuals:ab --before <rate1> --after <auto> --out <dir>.node packages/playtest/dist/runner/cli.js examples/skinned-crowd/playtests/crowd-rate.playtest.json --target desktop.## Decisionsinstead. proof:crowd-rate.playtest.jsonperf arms andpnpm exec vitest run packages/core/__tests__/projection-skinned.spec.ts.SkeletalMesh3Dcrowd receding to 120 m spends at least 40% less CPU inAnimationPlayer.updateplusSkinnedBatch.writethan the rate-1 arm, from one build. proof: newexamples/skinned-crowd/playtests/crowd-rate.playtest.jsonthroughnode packages/playtest/dist/runner/cli.js ... --browser-recipe webgpuwithplaytest perf, adapter named.pnpm test:templatesfor shooter.Generated from the PRD's checkboxes. Regenerate on each push so the PR and the PRD never disagree.