mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-09-12 05:08:31 +00:00
refactor(h3d-carve-1b): extract render-order, note-key, camera-bootstrap, fretMid to src/geometry.js
Move 9 symbols verbatim from screen.js factory scope to geometry.js:
- RENDER_ORDER_LAYER_STACK, RENDER_ORDER_LAYER_INDEX, RENDER_ORDER_AT_Z_ZERO,
RENDER_ORDER_FAR_CLAMP — compile-time constants, now exported from geometry.js
- renderOrderForLayerAtZ — pure fn; reads K + RENDER_ORDER_* from geometry scope
- _noteKey, lowerBoundT — hot-path helpers; no external deps
- hwyFirstRelevantFrettedTime — camera bootstrap scan; no external deps
- fretMid → geoFretMid(f, uniform) — same fretX delegator pattern as Cut 1;
screen.js keeps: const fretMid = f => geoFretMid(f, _h3dFretUniform); (1 beyond-subst)
screen.js import line updated to import all 9 new exports; tombstones replace
each original definition.
Source-scan retargets:
- highway_3d_render_order.test.js: layers()/zZeroRenderOrder() now read
GEOMETRY_JS; the 5 renderOrderForLayerAtZ-internals asserts in
chordFrameRenderOrder test retargeted to geo() (call-site assert stays on src()).
- highway_3d_camera_bootstrap.test.js: extractFn now reads geoSrc (GEOMETRY_JS);
sourceBetween wiring tests remain on SCREEN_JS.
- highway_3d_panel_controls.test.js: sandbox stubs extended with 9 new names.
Class-killer tests added to highway_3d_geometry.test.js (8 new tests, 180 total):
- RENDER_ORDER_LAYER_STACK length + first/last entries
- RENDER_ORDER_LAYER_INDEX spot-checks (CHORD_FILL=0, NOTE_CORE=10)
- renderOrderForLayerAtZ far-clamp (worldZ=-5 gives 50, not 33 without max)
- renderOrderForLayerAtZ unknown-layer throws
- _noteKey |0 truncation (1.5,3)=150003 not float-derived 150008
- lowerBoundT strict lower-bound (3 in [{t:1},{t:3},{t:5}] gives 1, not 2)
- hwyFirstRelevantFrettedTime smoke (empty → null)
- geoFretMid sentinel (f=0 gives -2K≈-0.015, not 0) + ratio invariant
Mutation analysis confirmed all 8 tests fail under their named mutation before
committing (per Toby r1 lesson).
Base run (a1f7ad5): 172/172 pass.
Post-cut run: 180/180 pass.
Command: node --test tests/js/highway_3d*.test.js plugins/highway_3d/tests/*.test.js
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014uZ169yfoFYArXz962g7KW
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
a1f7ad5e68
commit
5e401afe87
@@ -55,7 +55,7 @@ function loadHighway3dStatics() {
|
||||
},
|
||||
},
|
||||
// Geometry stubs — panel-controls test only reads factory statics;
|
||||
// it never invokes the render path where these are called (h3d-carve-1).
|
||||
// it never invokes the render path where these are called (h3d-carve-1b).
|
||||
geoFretX: (f, _uniform) => f * 0.1,
|
||||
dZ: dt => -dt,
|
||||
slideTrailEnd: () => null,
|
||||
@@ -63,6 +63,15 @@ function loadHighway3dStatics() {
|
||||
camLowFretPullbackU: () => 0,
|
||||
computeBPM: () => 120,
|
||||
_makeGaussTex: () => ({}),
|
||||
RENDER_ORDER_LAYER_STACK: Object.freeze([]),
|
||||
RENDER_ORDER_LAYER_INDEX: Object.freeze(Object.create(null)),
|
||||
RENDER_ORDER_AT_Z_ZERO: 700,
|
||||
RENDER_ORDER_FAR_CLAMP: 50,
|
||||
renderOrderForLayerAtZ: () => 0,
|
||||
_noteKey: () => 0,
|
||||
lowerBoundT: () => 0,
|
||||
hwyFirstRelevantFrettedTime: () => null,
|
||||
geoFretMid: (f, _uniform) => f * 0.1,
|
||||
};
|
||||
vm.createContext(sandbox);
|
||||
vm.runInContext(instrumented, sandbox, { filename: SCREEN_JS });
|
||||
|
||||
Reference in New Issue
Block a user