Repository navigation
Physics Character Viewer Host
Scoped completion1065: original nativec9083c71 actually merged at deff1d1baaa17b8fdbd4f8ce2b6b64aef73b6df1. ALL955native owned modes/blobs and current ancestry match. Original own native proof remains; Issue1065CLOSED. Status merged; integration validation pending; OPEN674 tracks current integrated host/sourcecompiled/screen/file/context/lifetime/cost. No new runtime run, arbitrary-terrain/full-engine or publication claim. Earlier native/planned entries below remain historical.
Author receipt6094492409: exactactual b097ba52→c9083c717d15643e2f2a989146cb54b50c4de465, cleanmeasured b65b6c750ec90d5c4aa8f4df35664f9890c20712, supplemental rawreadback a07a6692dc0ca1a0933fd67305ddcaa04ea651f9. Sixcommits/955NEWpaths onlyexamples/physics-character-viewer/**. App/controller/clock/frame/geometry/camera/source unchanged throughfinal; supplementalTESTcapture/driver/decoder and finalsavedproof/docs only. Public1064exactec adoption is consumed. Stage nativecomplete; exact Integration adoptionpending;1065OPEN. Current Root/editor Save/Open/recovery and publication are separate.
Actual7accepted240-step scenes plusoriginaloverlappingstartterrain-onlyrefusal. Honest386vertex/768triangle/1m capsule, thirteen actualauthoredCADfiles/sixfaces perbox, compiler/tessellator/perfaceledger retained beforederivedaggregate. Maximum458vertices/804triangles/2412indices. Fullbinding/acceptedmetres→mm once/.001mapping/fixedcamera and actualcallerclock. Genericpacket/picking isderived, notnativefaceauthority or exactCADcollision.
Original4librarybuilds0. Node22source202/0dist/fullcompiled0src/165dist; Chrome155source260/0dist/fullcompiled0src/183dist/no fallback. ALL1687CPUstates/reference1064/rawLE/tworepeats/NodeChrome/sourcecompiledexact. Geometrytopology/CCW/normals/corners/sourcecoefficients/bounds pass; capsuleF32error1.33785849e-5mm<=.00005mm, terraincornererror0. Actual35frame/pose/F32U16readback checkpoints and all241statefrusta peracceptedscene/graph; independentPython LE reconstructionqualifiesfrozenidentityposes.106savedRGBAfiles pergraph sourcecompiledbyteexact; preservedpacketcolour/excludedgroupcontrols/minactorwitness1925>=16, progressingpixelschange. Actualfullcapsule/ceiling/stepcrossing/blocked15deg/wallslide/restored0screens inspected.
NineactualUI/copy/canonicalgetter0/refusal/bindingpixels/lateallocation/Resetfailure+retry/resetresource/contextloss+restore+explicitreset/cap gates pass. CPUcommitsbeforeViewer; failure exposes earlierdisplay/newCPU/reset-required. PartialResetdisplayuncertain/readinessfalse/CPUretained, noatomicity. Samecanvas retained; allsevenresources+bytes0/ordinaryrestoredGL0/console0/ownedtestcleanup. Losterrorseparate. ExistingVieweracceptsearliertime; hostacceptsnoexternalposeframes, staleCPUcommandrefusesSTALE_SNAPSHOT.
One warm+3actual2splays for EACH7scene/EACHgraph=42measuredtrials. Fullcallercommand/queries/copies/pose/Viewer/actualprogressUI included; readback/hash/screens/IOOFF, transparentcountersON. Sourceworstp956.299999997ms,compiled4.5ms<=8.33; minimumsim/wall**.9897070467/.9900499975**>=.90. Fullsamples/RAF/debt/steps retained; noGPUcompletion/FPS claim. Bothsavedstdlibrereplayers executedPASS.
Firstverifier omitted.001; firstactualHEADROOM0 clipped12/24ceilingvertices/occludeduppercapsule. Pre-editrepair6094358829 fixedallscenecamera eye[4.2,.9,6]/target[0,.55,0]/sameotherfields. First2dde wholeattempt invalidated afterrootchangedmandatoryUI/timingduringrun; preservedsuccessreportsareNOTexactcleanacceptance. Finalb65rerancompletegateswithoutedits. No targetlowering/modelrepair/packagechange.
Serialhandoff6746094502916. SoleIntegrationadoptsaggregateonce,thenlatercurrentchecksremain merged; integrationvalidationpending under674. Existing826independentcompressionworkbudgetquestionpreparednext; dependent plannedproductcardsstaygated. No productpush/PR/deploy/pack/publish/release.
Updated2026-10-10. Existing #1065 host preparation. This page records planned contracts and actual source constraints. Screen, geometry and playback targets remain unmeasured.
Public #1064 native receipt6093307603: actual parent716e8442 → native92c1f77f; clean measuredf255b373. ALL8 scenes/source+completecompiled/39 public controls/12 original core controls/independent raw/cost/actual numerical tables pass. Actual public API is implemented in an isolated native branch. #1065 remains PLANNED until exact public code adoption, retained native proof and this host contract's pre-code freeze. Current integrated screen/file/recovery follow-ups alone will not be a code wait under674. No host code or screen measurement has started.
Viewer at actual Integration716 exposes createViewer/setPackets/applyMotionFrame/setView/dispose. validatedPackets permits1..4 display objects, total4096vertices/24576indices. parseMotionBindings requires a unique target per packet, exact frame/packet coverage, no shared target for multiple surface refs. Therefore19 separate CAD face packets would violate actual capacity. Reuse existing APIs with one derived aggregate terrain packet per fixture box plus one capsule actor: at most4 packets for the frozen HEADROOM scene. Do not invent a Viewer/GPU capacity API.
- Reuse ALL8 original query scenes and requests from #1064. Seven accepted scenes: REST/FLAT/STEP10/SLOPE15/HEADROOM/TOO_HIGH15/WALL_SLIDE. Overlapping spawn displays static terrain plus clear admission refusal; it must not display an accepted actor/controller state.
- Capsule is an explicitly derived approximate Physics display mesh: radius150mm, centreline half350mm, full height1000mm.24 radial sectors,8 hemisphere segments per end,16 non-pole rings and two single poles: proposed386vertices/768 non-degenerate triangles. Join rings at Y±350mm; polesY±500mm; radial extrema±150mm. CCW outward triangles, unit analytic normals, closed ring seam, dense parameters and exact bounds. Check F64/F32 finite positions, nonzero area and outward normal dot; proposed F32 component error≤0.00005mm. No replacement cube/sphere or CAD-authority claim.
- Each static query box has an immutable authored native CAD source with six bilinear rational surfaces (unit weights, degree1/knots[0,0,1,1]) matching its unchanged corners/quaternion/metres→mm display geometry. Use actual public compileCadModel plus tessellateSurface2×2 for each authored face; do not call native display parser with six surfaces or silently bypass its existing4-surface limit. Source compile/tessellation feasibility and exact winding remain REQUIRED first host gates, unexecuted.
- Merge each box's six authored sampled faces only for display into24vertices/12triangles, preserving a host ledger: source file/hash/model ID/original face ID and output vertex/index ranges. PacketID is a derived aggregate ID. It does not replace native face authority. At most3boxes+actor => proposed458vertices/804triangles/2412indices, below actual Viewer caps. These counts are planned topology, not executed output.
- All packets use version0/revision0/mm/right-handed-Y-up/CCW, no typed arrays in the public packet DTO. Keep source bytes, compiled surface data and original queryscene bits immutable. Collision remains the selected bounded box query, not exactCAD collision.
Context characterViewerV1; actor target capsule ref model physics-character/surface capsule-derived. Each terrain aggregate has its own unique terrain:<boxId> target/ref. Bindings cover every loaded packet exactly once. Frame time is accepted state.timeSeconds; actor translation=positionM×1000 exactly once, rotation=orientationXYZW, scale[1,1,1]. Terrain uses identity poses because source coordinates are already world-mm. Viewer mmToSceneUnit=.001 applies the separate display scaling. Reuse/copy complete binding and pose records; no partial frame or binding drift.
Canvas1200×800. Proposed fixed perspective camera eye[2.8,2.4,4], target[0,.35,0], up[0,1,0], fov50°, near.01/far20 in scene metres. Save/restore it after any packet generation. Actor-only and terrain-only controls use the same camera. No movement-time refit; no native source mutation. If this camera cannot demonstrate contact, record the first failure and freeze a reviewed replacement before rerunning acceptance; do not silently change visibility targets.
Play/Pause/OneStep/Reset. Controller remains exact1/120 and240-step cap. Host accumulator uses actual RAF wall time; it never treats oneRAF as one solverstep. Proposed catch-up limit12acceptedsteps/RAF and debt bound.1s. A larger debt or remaining full step after the cap pauses with explicit host-overrun; do not hide dropped time or skipped physics steps. Paused time is excluded; Pause clears pending debt and resume starts a fresh wall anchor. At step240 stop without another CPU call. OneStep executes one CPU step and one complete Viewer frame while paused. Reset disposes oldcontroller and creates a fresh instance, restores exact state0/camera/bindings, and clears debt/errors.
CPU refusal retains every accepted CPU/pose field and keeps displayed pose. A Viewer submission failure after accepted CPU work pauses as unsynchronized; expose accepted CPU state and last displayed cursor separately, recover through explicit Reset. Do not claim atomic CPU/GPU rollback. Context loss pauses immediately with explicit lost status; retain source/accepted state for reporting. No automatic continuation; after contextrestored, explicit Reset must recreate Viewer/controller and pass a real draw gate before play. Unsupported recovery must remain a recorded failure, not a simulated successful event.
- Original affected build and separate ordinary source/fullcompiled consumers, with every transitive public export map and zero ownsource in compiled run; no fallback aliases.
- All original CPU raw states match #1064 at0/60/120/180/240, all-case exact repeats/copies/refusal retention. Exact source hash/ledger/box→CAD corner checks/capsule bounds/topology/normals/F32 conversion and stable binding/camera/pose/source proofs.
- Actual Chrome WebGL2 framebuffer state+pose+pixel pairs at those cursors in both graphs. Changed actor pixels must differ from respective actor-only/terrain-only controls; actual step crossing and blocked slope must be visible. Validate uploaded geometry/transforms, physical1mheight/0.1mstep/15°slope and controls, not labels alone. Inspect actual screens and save numeric framebuffer checks. No invented pixel count before baseline measurement; pre-code freeze must define masks/thresholds with a justified first frame.
- Three warm2splays per acceptedscene/graph: full caller command/controller queries/copies/posebuild/Viewer main-thread submission p95≤8.33ms; simulated/wall playbackratio≥.90. Include all samples, frame/debt/stepcounts, clock granularity and first failures. This is main-thread submission cost, not GPU elapsed time or FPS. Proposed targets remain UNMEASURED.
- Pause/OneStep/Reset/cap; invalid/stale CPU refusal; copied input/output/frame/bindings; genuine or explicitly harness-labelled late submit failure. Controller/Viewer double dispose, caller canvas retained, resources0, GL/console0, actual context-loss response/recovery proof.
- Exact source/native/adoption relation; no product push/PR/pack/deploy/publish/release. Current integrated screen/file/recovery under674 stays separate. Public/native numerical tables are not this actual host's acceptance.
Ownership remains ONLY new examples/physics-character-viewer/**. Split source/terrain ledger, capsule mesh, pose adapter, clock/lifecycle, browser UI, driver and independent metrics. Existing #1065 covers this work; no duplicate/new Issue or routine Planner message. Detailed Wiki Physics-Character-Viewer-Host will carry this plan alongside the product roadmap.