A 30-agent adversarial review (5 dimensions × find→refute×2) confirmed 8 defects;
all fixed and live-verified:
BLOCKERS
- #1 unwired OMNI trim couldn't be silenced: the offset-floor only seeded a dest
while offset>0.0015, so reset/mute/lower stopped emitting the key and the last
floored value stuck in the synth (Synth.update merges). Now ANY tweaked cableless
non-note dest is seeded 0 so the processing loop writes its real value, incl. 0.
(verified: crush norm 0.5 on drag → 0 on reset)
- #2 leaving zero with an OMNI/offset-only build (no cables) was silently discarded
— exitZeroToMood gated on routesArr.length===0. New zeroHasBuild() also counts
picked orbs + any non-neutral tweak, so the keep/old/weave card always shows.
(verified: offset-only build → 'you shaped this instrument by hand. keep it?')
- #3 vibe scale whitelist used truthiness (SCALES[q.scale]) → 'constructor'/'__proto__'
passed → NaN into a Web Audio AudioParam → threw ~40×/s (remotely triggerable via
public #vibe= links). Now Array.isArray(SCALES[...]) + quantize only on note dests;
mxQuantize fallback hardened too. (verified: fx quantize dropped, note scale→minor_pent)
SHOULD-FIX
- #4 finishZeroExit keep/weave clobbered the kept mix (applyMood resets MOOD_KEYS):
re-lay the build's tweaks after applyMood; weave merges build tweaks over prezero.
- #5 crush knob was fully dead (never in dests): OMNI.render ensureDest()s every
voice/FX key → arc lives, floor works, right-click opens the menu. (verified)
- #6 OMNI drags in zero weren't persisted: knob pointerup/dblclick call zeroUI.persist()
when zeroMode → survives reload. (verified: offset 0.467 in gs_zerobuild)
- #7 reloaded vibes showed OFF: persist activeVibes + per-route _vibes/_base to
gs_zerovibes, restoreVibeState() on enterZero(true). (verified: vibe restores ◉)
- #8 GODSONIQ chip lit ~3s late: update() re-lights engine/♪ chips each frame.
Console clean, syntax clean, 21 knobs, field healthy.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>