fix(h3d-carve-16): Toby r1 — F1 ternary, F2 dead DI, F3 naming guard, F4 smoke honesty

F1 (HIGH): Fix truncated-ternary in _bgLoadSettings — setZoomSmoothing and
setTiltSmoothing were closing before the ternary, storing the boolean
_bgHasStored(...) result instead of the camera-smoothing value. Move
closing ) to after : _cameraSmoothing. Add kill tests for both setters
asserting the argument contains '?'.

F2 (MED): Remove 13 dead DI params (5 lines) from createSceneInit signature
and matching entries from screen.js wiring:
  - FRET_WIRE_HIT_OP / HIT_INTENSITY / HIT_DECAY (renderer.js only)
  - updateStringHighlights (declared null, never called)
  - getIsDestroyed (screen.js lifecycle flag, not scene-init's concern)
  - setChartEnv/PrevT, setBcBeatIdx/NoteIdx/ChordIdx (BC chart-sync: per-frame)
  - setTintR/G/B (BC tint: per-frame, managed outside scene-init)
DI count repinned: 183 → 178.

F3 (LOW): Add naming-correspondence guard — for every getX in the DI,
assert a matching setX exists unless getX is in READ_ONLY (6 pinned
stable-ref getters that scene-init never writes).

F4 (honesty): Rename smoke test — was 'setters called before null-T throw'
(wrong: null canvas returns before T is accessed, no setter is called).
Now: 'factory construction + null-canvas early guard'.
Remove dead di stub entries (FRET_WIRE_HIT_*, getIsDestroyed,
updateStringHighlights) that no longer exist in the DI signature.

Suite: 427/427 (h3d glob).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014uZ169yfoFYArXz962g7KW
This commit is contained in:
byrongamatos
2026-09-06 07:21:01 +02:00
co-authored by Claude Sonnet 4.6
parent a0beb67b0d
commit 6c15ed9dda
3 changed files with 78 additions and 26 deletions
-11
View File
@@ -4254,7 +4254,6 @@ import { createSceneInit } from './src/scene-init.js'; // h3d-carve-16
SPARK_N: _SPARK_N,
_ND_TTL_MS, _ND_TIME_EPS,
FRET_WIRE_HIT_HEX, FRET_WIRE_HIT_EMISSIVE, FRET_WIRE_IDLE_HEX, FRET_WIRE_IDLE_OP,
FRET_WIRE_HIT_OP, FRET_WIRE_HIT_INTENSITY, FRET_WIRE_HIT_DECAY,
ACCENT_RIM_BASE_EMISSIVE,
ACCENT_HALO_OP_NEAR, ACCENT_HALO_OP_MID, ACCENT_HALO_OP_FAR,
ACCENT_HALO_XY_INNER, ACCENT_HALO_XY_MID, ACCENT_HALO_XY_OUTER,
@@ -4277,7 +4276,6 @@ import { createSceneInit } from './src/scene-init.js'; // h3d-carve-16
_darkenInt, _lightenInt, _h3dHexToInt,
boardSpanX,
_bcCreateController,
updateStringHighlights: null,
canvasSize, applySize,
fxInit,
_disposeOpenStringPitchSprites,
@@ -4303,7 +4301,6 @@ import { createSceneInit } from './src/scene-init.js'; // h3d-carve-16
getVibrancyProjOp: () => _vibrancyProjOp,
getBgReactiveOptOut: () => _bgReactiveOptOut,
getVenueSceneOverride: () => _venueSceneOverride,
getIsDestroyed: () => _destroyed,
getVibrancy: () => vibrancy,
// ── Getter+setter pairs ──────────────────────────────────────────
getWrap: () => wrap, setWrap: (v) => { wrap = v; },
@@ -4347,11 +4344,6 @@ import { createSceneInit } from './src/scene-init.js'; // h3d-carve-16
getStringLines: () => stringLines, setStringLines: (v) => { stringLines = v; },
getProjMeshArr: () => projMeshArr, setProjMeshArr: (v) => { projMeshArr = v; },
getBcCtrl: () => bcCtrl, setBcCtrl: (v) => { bcCtrl = v; },
setChartEnv: (v) => { _chartEnv = v; },
setChartPrevT: (v) => { _chartPrevT = v; },
setBcBeatIdx: (v) => { _bcBeatIdx = v; },
setBcNoteIdx: (v) => { _bcNoteIdx = v; },
setBcChordIdx: (v) => { _bcChordIdx = v; },
getSparkPos: () => _sparkPos, setSparkPos: (v) => { _sparkPos = v; },
getSparkCol: () => _sparkCol, setSparkCol: (v) => { _sparkCol = v; },
setSparkVel: (v) => { _sparkVel = v; },
@@ -4505,9 +4497,6 @@ import { createSceneInit } from './src/scene-init.js'; // h3d-carve-16
setSlideArrowApproachVisible: (v) => { slideArrowApproachVisible = v; },
setSlideArrowNeckVisible: (v) => { slideArrowNeckVisible = v; },
setSlideArrowChainPreviewVisible: (v) => { slideArrowChainPreviewVisible = v; },
setTintR: (v) => { _tintR = v; },
setTintG: (v) => { _tintG = v; },
setTintB: (v) => { _tintB = v; },
setBoardStringStartX: (v) => { boardStringStartX = v; },
setBoardTuningLabelX: (v) => { boardTuningLabelX = v; },
getNdOnHit: () => _ndOnHit, setNdOnHit: (v) => { _ndOnHit = v; },
+4 -9
View File
@@ -26,7 +26,6 @@ export function createSceneInit({
SPARK_N,
_ND_TTL_MS, _ND_TIME_EPS,
FRET_WIRE_HIT_HEX, FRET_WIRE_HIT_EMISSIVE, FRET_WIRE_IDLE_HEX, FRET_WIRE_IDLE_OP,
FRET_WIRE_HIT_OP, FRET_WIRE_HIT_INTENSITY, FRET_WIRE_HIT_DECAY,
ACCENT_RIM_BASE_EMISSIVE,
ACCENT_HALO_OP_NEAR, ACCENT_HALO_OP_MID, ACCENT_HALO_OP_FAR,
ACCENT_HALO_XY_INNER, ACCENT_HALO_XY_MID, ACCENT_HALO_XY_OUTER,
@@ -49,7 +48,6 @@ export function createSceneInit({
_darkenInt, _lightenInt, _h3dHexToInt,
boardSpanX,
_bcCreateController,
updateStringHighlights,
canvasSize, applySize,
fxInit,
_disposeOpenStringPitchSprites,
@@ -73,7 +71,6 @@ export function createSceneInit({
getVibrancyIdleOp, getVibrancyProjOp,
getBgReactiveOptOut,
getVenueSceneOverride,
getIsDestroyed,
// ── Getter+setter pairs (written here; read by renderer.js / teardown etc.) ─
getWrap, setWrap,
getRen, setRen,
@@ -115,7 +112,6 @@ export function createSceneInit({
getStringLines, setStringLines,
getProjMeshArr, setProjMeshArr,
getBcCtrl, setBcCtrl,
setChartEnv, setChartPrevT, setBcBeatIdx, setBcNoteIdx, setBcChordIdx,
getSparkPos, setSparkPos,
getSparkCol, setSparkCol,
setSparkVel, setSparkLife, setSparkPts,
@@ -188,7 +184,6 @@ export function createSceneInit({
setTuningLabelsVisible,
setProjectionVisible,
setSlideArrowApproachVisible, setSlideArrowNeckVisible, setSlideArrowChainPreviewVisible,
setTintR, setTintG, setTintB,
setBoardStringStartX, setBoardTuningLabelX,
getNdOnHit, setNdOnHit,
getNdOnMiss, setNdOnMiss,
@@ -1827,12 +1822,12 @@ export function createSceneInit({
// when the user has never explicitly written them. Once the user
// moves either slider, the corresponding _bgHasStored() flips
// true and the read becomes independent.
setZoomSmoothing(_bgHasStored(panelKey, 'zoomSmoothing'))
setZoomSmoothing(_bgHasStored(panelKey, 'zoomSmoothing')
? _bgReadSetting(panelKey, 'zoomSmoothing')
: _cameraSmoothing;
setTiltSmoothing(_bgHasStored(panelKey, 'tiltSmoothing'))
: _cameraSmoothing);
setTiltSmoothing(_bgHasStored(panelKey, 'tiltSmoothing')
? _bgReadSetting(panelKey, 'tiltSmoothing')
: _cameraSmoothing;
: _cameraSmoothing);
setCameraLockLow(_bgReadSetting(panelKey, 'cameraLockLow'));
setCameraLockZoom(_bgReadSetting(panelKey, 'cameraLockZoom'));
setCameraMode(_bgReadSetting(panelKey, 'cameraMode'));