- commit
- af9705825108cfd4a759a516c84352495070b15d
- parent
- 825e37fd4ed080cbf026239bfa895cb14ede3ddf
- author
- Dami <dami.etoile@gmail.com>
| M | progress.md | 154 | ++++++++++++++++++++++++++---- |
@@ -804,11 +804,12 @@ icy: deferred to M13 backlog (icy needs a visible surface treatment first
804804 805805 **M13 — Release polish. SEED FREEZE IS OFF (user, 2026-08-08: "lets not806806 seed freeze. its a limitation for no reason yet") — goldens stay807-regenerable-on-change indefinitely.** Remaining polish backlog: banking808-lean; ambient audio; curve-wide scenery macro, tee-spur, takeable spur809-branches, wide bridges, hill-interval constraint, per-branch diamond810-supports, distance-graded ambient decor; gravity rotation / bouncers / icy811-zones (icy needs a visible surface treatment first — zones must READ).807+regenerable-on-change indefinitely.** [BACKLOG FULLY SHIPPED — banking808+lean + icy zones landed earlier; gravity rotation, bouncers, ambient809+audio, curve-wide scenery macro, tee-spur, takeable spur branches, wide810+bridges, hill-interval constraint, per-branch diamond supports, and811+distance-graded ambient decor all landed in the 2026-08-09 autonomous812+round — see "M13 DEFERRED SET — ALL SHIPPED" below.]812813 813814 **DONE this round (post-M12, user-directed):**814815 @@ -991,20 +992,135 @@ milestones, photo mode, per-biome fog/lighting tints, destructible decor revival
991992 (unblocks at M10 — physics gives decor something to collide with; user's992993 pop-and-fling answer from the design round still stands).993994 994-## HANDOFF — 2026-08-09 state: M1–M12 done + user round shipped995-996-CURRENT (2026-08-09): everything below in "DONE this round" is live —997-marble ring (?peers=N), full-helix dives, ground vocabulary on islands998-(wide runs/stubs/fans/solids), island shaping (trim/caves/waterfalls/999-landmarks), HUD milestones + live photo key (P), follow-cam occlusion +1000-banking lean, icy zones. 90 tests green. NEXT WORK: the deferred M13 set1001-— gravity rotation (needs shim gravityDir + wasm rebuild), bouncers1002-(bumper prop + survivability pricing), ambient audio, track-variety1003-follow-ons (curve-wide scenery macro, tee-spur, takeable spurs, wide1004-bridges, hill-interval, per-branch diamond supports, distance-graded1005-decor). Scenario seed pins move whenever a planner clause changes the1006-weighted draw — re-scan with a scratch script (see tests re-pins:1007-jump→wide-scan-0, helix→repin-16, diamond→dia-2, propeller→prop-scan-1).995+## M13 DEFERRED SET — ALL SHIPPED (2026-08-08/09 autonomous round)996+997+Every item of the deferred M13 backlog landed, each gated green before998+the next (105 tests; genVersion g535114c0fc9e after the graded-decor +999+tee-spur + scenery golden regens):1000+1001+- **GRAVITY ROTATION** (shim `ph_gravity` → b3World_SetGravity + wasm1002+ rebuild): planner clause tryGravity (flat straight 6–8 cells, mod stops1003+ 2 short — brake runway; weight 0.5). RailMod.tilt (0.3 rad) →1004+ `stationGravity(rail, idx)` tilts WORLD gravity forward along the1005+ station tangent, |g| preserved at 20 — the marble surges down a1006+ geometrically flat run; the assist stays silent between cruise and the1007+ 9 u/s envelope cap, so gravity itself is the spectacle. Zone READS via1008+ violet pipe recolor [186,148,255] + entry banner. One law in client +1009+ tests + phys-deep (all three call engine.setGravity(stationGravity)).1010+ Scenario "gravity-run" (grav-scan-7) + corpus rule test (flat straight1011+ zone cells + runway + tagged placements). RE-PINS from this clause's1012+ reshuffle: propeller→grav-scan-0, diamond→grav-scan-5,1013+ helix→grav-scan-23 (icy jump-scan-2 and jump wide-scan-0 survived).1014+- **BOUNCERS** (shim `ph_add_bumper`: b3CreateCylinder hull, restitution1015+ 0.85 — contact restitution combines via MAX, so pins bounce regardless1016+ of shock zones; hull is interned by the world, destroyed locally):1017+ mushroom_red pins (nature kit, ×2 furniture scale) on WIDE island deck1018+ cells only — plinko pins, recapture guaranteed by the wide walls1019+ (survivability by construction). Furniture pass (label-derived rng — NO1020+ planner reshuffle): chance 0.6/wide cell, lateral offset ±0.25 track,1021+ never inside a planner zone. Placement.bumper → proxies.bumperProxies1022+ (BUMPER_RADIUS 0.16 / HEIGHT 0.42 world). Scenario "bouncer-pins"1023+ (wide-scan-10 seg 0 = 3 pins) + corpus rule test.1024+- **AMBIENT AUDIO** (src/client/audio.ts — fully procedural WebAudio, no1025+ assets): PAD (mood-tinted drone chord per atmosphere mood, 4s1026+ crossfade at zone turns), ROLL (bandpass noise following marble speed),1027+ CUES (boost/launch/land/fall/milestone/checkpoint sweeps, rule-derived1028+ edge detectors off the rail mods). Gesture-gated (autoplay policy):1029+ muted until the M key / #audio-toggle HUD button. The mapping layer1030+ (padForMood/rollParams/cueFor) is PURE and rule-tested headlessly1031+ (tests/audio_test.ts); the WebAudio layer is a thin realization. CUA1032+ `audio`.1033+- **DISTANCE-GRADED AMBIENT DECOR**: oracle contract widened as promised1034+ (ORACLE_GRADE_HORIZON = 13; oracles return true distances to 13,1035+ Infinity beyond; band rules still stop at 5.5). ambientDensity(dist)1036+ grades 0.3 → 0.05 linearly across the ambient band. Rule test pins the1037+ falloff (near-annulus rate > 1.8× deep-annulus). Goldens regenerated.1038+- **HILL-INTERVAL CONSTRAINT** (lifts the M3 "crossings stay flat"1039+ compromise): baseY[b] − baseY[a] = Σ deltas in ring interval (a, b], so1040+ a hill is safe iff its climb and descent land on the SAME SIDE of every1041+ crossing pair's interval. Runs touching crossing cells are excluded1042+ (the cross piece is one flat 4-way); any crossing-free run lies wholly1043+ on one side. Works for flat crossings (Δ0) AND bridges (Δ1.0 —1044+ differences are preserved, not just equality). Corner set-pieces stay1045+ off crossing tracks. 13 of 18 crossing tracks now have hills (1500-seed1046+ strict fuzz, 0 failures). Rule test: pinned xh-* seeds, all centerline1047+ passes at each cross cell agree in height.1048+- **PER-BRANCH DIAMOND SUPPORTS**: elevated diamonds emit a second1049+ candidate line snapped onto the ALT centerline — in its OWN greedy1050+ group (stretch + 0.5): measured against main-lane pillars the parallel1051+ lane never accumulates a full span of gap and every candidate was1052+ clearance/span-skipped (that was the actual bug). Rule test: dia-loop-*1053+ pinned seeds, alt branch carries a dedicated column.1054+- **TEE-SPUR**: split-double-sides (no through port — was exempt) enters1055+ as a spur TERMINAL: a split-siding branch stems into the T (3×21056+ footprint + 2 cap cells, chance 0.3 when free), arms dead-end in plain1057+ caps. Measured: entry z− face center, exits x± faces at lat 0.5;1058+ rotation rT = (1−w)%4, mesh at s1 + rot(rT, 0, 0.5). ~2.7% of tracks.1059+ Exemption lifted (solid form stays exempt — the T stands in open1060+ apron). Goldens regenerated (stub rng draw added).1061+- **TAKEABLE SPUR BRANCHES** (branch-taking beyond diamonds):1062+ src/gen/takeable.ts — an ELEVATED straight (Y≥1) mutates to a split1063+ whose branch is an end-hole DIVING BOARD cantilevered directly above a1064+ lower ring cell at exactly Δ1.0 (the bridge law). Composes two existing1065+ systems: the split window gains a LoopSegment.alt TEARDROP (out over1066+ the hole and back — the return leg is never ridden) and the drop is a1067+ Track.falls entry flagged `guaranteed`. Client (marble.ts): falls now1068+ carry per-variant `active` (hole must lie within 0.5 of the variant —1069+ a spur hole on the main line would fire a phantom drop at the nearest1070+ unrelated point) and `guaranteed` skips the lap hash. ~2% of tracks.1071+ New rng family "takeable" — no reshuffle of existing streams.1072+- **WIDE BRIDGES**: the takeable spur upgrades (preference 0.85 when the1073+ footprint fits): funnel → straight-wide-hole (over the lower line) →1074+ reversed funnel → cap, with falsework at the mouth (plain column) and1075+ the abutment (cradle stack) — emitSupportStack exported from assemble.1076+ Flank rule: the wide bulge's lateral cells must be open air OR the1077+ lower line a full course below. straight-wide-hole exemption LIFTED1078+ (hole over track below — honest at last). ~0.13% of tracks (4/3000) —1079+ a true rarity. Pins: wb-62/357/2036/2165; take-168 re-pinned to wb-811080+ (it upgraded to wide).1081+- **CURVE-WIDE SCENERY MACRO** (src/gen/scenery.ts): the off-grid family1082+ mates with ITSELF — four quarter-turn wide arcs close into a1083+ freestanding roundabout ring (measured: ports centered on x−/z− faces;1084+ rotations [0,3,2,1] at ring-center offsets (±h,±h) mate all four).1085+ Variants small/medium/large (h 0.85/1.35/1.85), solid plaza forms for1086+ medium/large (50%). Placed on open ground near the line (chance 0.3),1087+ cells join trackCells so the decor field bands around it — a clearing1088+ with a landmark. ALL FIVE curve-wide exemptions lifted. Goldens1089+ regenerated.1090+- **PYRAMID-WEDGE FIX** (user report mid-round: "pyramid blocks should1091+ respect the surface they are on"): island shoulder trims — openAt now1092+ requires a FULL course of drop (0.99, was 0.26 — a half-lower neighbor1093+ buried the wedge's low edge); slopes descend toward the LOWER of two1094+ open sides; diagonal cuts require the corner cell BETWEEN the two open1095+ sides open too; waterfalls keep ONE face per column (no per-course1096+ zigzag). Corpus rule test "island wedges" (rebuilds the mass surface1097+ from placements and checks every wedge's open sides). Emergence still1098+ healthy (2124 slopes / 661 diagonals / 56 falls over 10×8).1099+1100+VALIDATION (this round): 105 tests green; endless deep fuzz 120×40 = 01101+failures (~940 gravity zones); loop strict fuzz 1500 = 0 failures;1102+browser soak (CUA) 6 sim-min on grav-scan-7: 1306u, 22 segments, 1 death1103+(recovered), nodes bounded 332–437, 0 console errors; gravity zone reads1104+violet on screen; scenery ring/wide bridge/tee verified on screen (loop)1105++ by rule tests. Coverage: exemptions now 33 (was 40) — curve-wide ×5,1106+split-double-sides, straight-wide-hole all lifted.1107+1108+## HANDOFF — 2026-08-09 state: M1–M13 deferred set COMPLETE1109+1110+CURRENT: all M13 backlog items above are live. Remaining/possible next:1111+M13 release freeze if the user wants it (seed freeze explicitly OFF per1112+user), endless stream goldens (pin segment hashes), destructible decor1113+(physics now exists to collide with), takeable spurs in ENDLESS mode as1114+respawn variety (loop testbed proved the machinery), bumper density1115+tuning after user feedback, camera pitch during gravity zones (deeper1116+spectacle), audio: bumper-hit cue via contact events if the shim ever1117+exposes them. Scenario seed pins move whenever a planner clause changes1118+the weighted draw — re-scan with a scratch script (current pins:1119+propeller→grav-scan-0, jump→wide-scan-0, helix→grav-scan-23,1120+diamond→grav-scan-5, icy→jump-scan-2, gravity→grav-scan-7,1121+bouncers→wide-scan-10, wide→wide-scan-0; loop pins: crossings-with-hills1122+xh-*, diamond-supports dia-loop-*, tee tee-*, takeable take-*/wb-81,1123+wide-bridge wb-*, ring ring-*).10081124 10091125 ## OLD HANDOFF (historical) — next agent starts MID-M11 (jump set-piece next)10101126