- commit
- 7d7591dae3c0f954b2813055fb1538abdd533e90
- parent
- f7f424fa85a310c7a73a7105fea34dd8fe3a835c
- author
- Dami <dami.etoile@gmail.com>
| M | progress.md | 56 | +++++++++++++++++++++++++++++- |
@@ -594,7 +594,61 @@ b3CreateMeshShape/b3World_Step/b3Body_GetPosition); double-precision positions
594594 by default — fits the endless line's unbounded coords; spike .wasm 369 KB.595595 b3MakeOffsetBoxHull is the workhorse for channel proxies.]596596 597-**M11 UPDATE (jump set-piece live, this round):** JUMP = the first real597+**M11 COMPLETE (this round).** All five handoff items landed, each gated598+green before the next:599+600+1. JUMP set-piece (below).601+2. PROPELLER (2-cell gap flown at 0.35 gravity — anti-gravity force while602+ the nearest station is a flight station; ~40% of planned gaps) + SHOCK603+ zones (marble restitution 0.02 over the two cells after every ≥1.5604+ chute; shim gained ph_marble_restitution + wasm rebuilt;605+ PhysicsEngine.setRestitution caches). Catch redesign en route: funnel606+ wall slabs failed TWICE (tall walls clipped shallow propeller flights607+ from above; short walls made wedge pockets) — the catch is now the608+ RIBBON MOUTH itself: landing strips flare ×1.35 laterally blending to609+ ×1 over 2 world units (ribbonOf flareStart), plus the wide pan. WFC610+ rule: wave windows are excluded from jump trajectory cells611+ (approach/landing assume a straight channel — a wave landing612+ edge-bounced the marble).613+3. SPRINT runs (6–8 flat cells, boost zone stops 2 short — brake runway) —614+ the only zones with ≥4 free flat cells, so they are where BUMP windows615+ re-admit: tiers a/b only (rise 0.5/1.0 world; crest curvature vs the616+ boost target stays under the launch threshold — c/d threw the marble617+ over the walls). Plus the LATERAL CENTERING spring-damper in boost618+ zones (±14 max accel): a marble still oscillating from an earlier bend619+ launched diagonally (−1.9 u/s lateral) and missed every catch; the620+ choreographer now straightens it before the lip.621+4. BRANCH RESPAWNS: island diamonds — tryIsland reserves diamond-N on ≥5622+ straight run cells (50% chance), claims both flank columns, crossing623+ carries branchCells (island builder: full mass, no caps/decor; canopy624+ auto-skips via the claim). world.ts scales the alt centerline (was625+ passed through unscaled — latent bug). Collision: the diamond window is626+ a SLAB COMPOSITE (wide deck + outer flare/straight walls + center627+ wedge, mirroring the real split-double) — two overlapping one-sided628+ branch ribbons crossed at the split and destabilized the solver629+ ("Box3D: unstable"). Client: railForSegment(seg, useAlt) rides the630+ other branch; respawn at a diamond segment ALTERNATES the branch631+ (fall → reveal). ~60% of scanned seeds have a diamond within 5 segs.632+5. PAD VISUALS: banners stand on the channel rails (goal-gate633+ measurement), so they work in the void — banner-high at jump lips,634+ banner-double-high at propeller lips, plain banner at standalone boost635+ zone entries. Rule-derived, no RNG; scenario asserts every lip has its636+ banner.637+638+Assist-law fixes found by the gates: grav tile mods apply only on639+DESCENDING stations (extra gravity on ramp climbs wedged marbles at climb640+bases); hands-off threshold 0.6 → 0.7 (climb cubics peak at ty 0.63 and641+the carry died mid-slope; chute dives start at 0.77).642+643+STATE: 70 tests green. Deep fuzz 120 seeds × 40 segs: 0 failures,644+~2.2 ms/seg. phys-deep: all 7 survivability seeds ride the full 8-segment645+build to the horizon with ZERO falls/wedges. Browser (CUA): 6-sim-minute646+soaks on 2 seeds = 1500u, ~25 segments, 0 deaths, 0 console errors,647+bounded nodes/occupancy (baseline before this round: ~507u/3min WITH648+escalating deaths). Loop mode regression clean; genVersion ga265f1373eed649+unchanged (finite pipeline byte-identical); goldens untouched.650+651+**M11 jump detail (first item of the round):** JUMP = the first real598652 channel gap. Planner clause (path.ts tryJump, weight 0.8): 3 flat approach599653 cells under a boost zone → 1 gap cell reserved as slant-b REVERSED (the only600654 1-cell 0.5-descent that isn't a drop-stack) → 2 flat landing cells at