8 licks (31 total): bebop enclosure into the b3, Baker's 3-5-b7-b9
dim-flip over the V7, Powell ascent to the 9th, Garland-lane dominant
thirds fall; the b3->3 crush, pentatonic turnaround fall (verified
survives over a minor blues), Spann hammer dyads, the cry-and-melt
7#9 fill. All realized before prose was written. Critic PASS (35/35
prose claims recomputed in two keys; idioms verified to match their
names, not just cite them; dom7-heavy blues coverage accepted as
musically right).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
SVG circle in the Knowledge Center Explore section: 12 majors outer
ring with key-signature glyphs, relative minors inner, live/locked key
solid accent with subdominant/dominant/relative soft-tiered; diatonic
chord chips inline (tap -> ChordDetailModal); wedge tap = local
preview only, app key state never touched; modal keys light the
correct ring and the hub teaches the parent-major relationship
("1# - G major's notes" for A dorian; 72/72 mode x root uniqueness
proven). Critic returned once (hub showed the wedge signature, not
the mode's), fixed, PASS on scoped re-gate.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pop piano: 5 progressions x 2 plays (182 total) — triads/inversions
only, one sourced add9 shimmer; ballad rolls vs voice-led pillars,
doo-wop triplets vs one-finger walks, Pachelbel inversion stair,
tonic-drone pads, octave drive. Shapes: dim7/half_dim/aug/maj6/min6
each reach >=3 placeable grips, add9 gains a movable A-shape; dim
honestly left at 2. Audit also surfaced two WRONG pre-existing shapes
(half_dim E-Barre spells {0,3,6,7}; "Open Dadd9" is Dsus2) -> backlog.
Critic PASS (~110 independent checks; all additions pc-spelled in two
keys; strictly additive diff).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Piano licks live in <style>/piano.js licks arrays: required quality
(machine truth), deg XOR approach targeting the NEXT deg note
(enclosures fall out as idiom; same-type consecutive approaches
rejected), octave 0-2 with a 25-semitone cap proven one-semitone tight
against MiniPiano's 37-key window, 4-word piano technique vocab
(grace-note added; bend/vibrato impossible on keys), plus a dormant
smoke guard that activates when PianoLickCard.jsx exists. Smoke
879/879. Critic PASS (18 fresh sabotage cases, enclosure arithmetic
hand-verified, dormant guard proven to fire).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
JamGuide resolveDegree imported directly (exported by the L-40
ride-along) via a .jsx resolve-retry hook; 17 new checks (export pin +
16 per-degree JamGuide sweeps) -> smoke 866/866. Sabotage-proven: a
perturbed JamGuide cell turns smoke red naming the exact drift.
Authored by the C-42 sweep agent pre-termination; verified and
sabotage-tested by Maestro (spend-limit fallback).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Realizes SCHEMA bass patterns per station (root at lowest playable
position, degs via the shared resolveDegree, typed approaches derived
from the next station with the open-E octave-displacement rule), lays
them out as compact E-A-D-G tab cards (lick-tab visual idiom), all
plays side by side, each with sequential playback through chordAudio
(negative notes documented-legal; one sequence at a time). Computed
root-fifth-approach line remains the fallback for pack-less styles.
BASS is now real end-to-end. Critic PASS (independent re-realization
of all 912 placements exact; untouched instrument paths byte-identical;
import cycle proven safe in both load orders).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every loop chord is a permanently expanded vertical row: education
header (solo-scale label, guide-tone aim dots with honest 5th
fallback, voice-leading chip incl. the wrap-around loop rail) + the
full voicing gallery for the global instrument; galleries flex-wrap,
zero row-level horizontal scroll; playhead adds highlight classes only
(rows proven byte-equal modulo highlight artifacts); pin simplified to
a focus toggle (onFocusChord contract byte-compatible with L-40).
VoicingBrowser: show='bass' now renders an honest one-liner instead of
falling through to both galleries; dense drops section chrome
(non-dense proven byte-identical across 336 SSR combos). Critic PASS.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The always-open zero-chrome band (GlanceRail + licks strip +
heard-live fallback) replaces CurrentJamPanel right below the
instrument view; the four-section dock becomes KnowledgeDock at the
bottom; RoadmapTrack unmounted (banner is the single loop display);
JamGuide's internal instrument/style tabs die — App's global
GUITAR/PIANO/BASS selector drives everything incl. the dock's
VoicingsSection; honest bass state (computed root-fifth-approach rows
+ notice, no galleries/licks); GlanceRail's scrollIntoView effect
deleted same-commit (would yank the document in page flow).
Ride-along: JamGuide resolveDegree exported (logic byte-identical) for
the C-40 drift guard. Critic PASS (SSR 22/22, audio-contract grep
zero hits, deletion sweep clean).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Boogie walkups, 8th-note ramble, Jimmy Reed R-5-6-5 shuffle, 12/8
root-fifth-octave slow burn, minor box riff (quality-resolved 3rd
self-majorizes on bVI7/V7), walking turnaround + two-beat kicks. The
maj-7 climb authored as a typed chrom-below approach (pitch derived,
offset 11 never written). KB now 172 plays. Critic PASS first try
(all 76 patterns machine-realized in C AND A; 12 prose identities
recomputed, all hold key-agnostically).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Zero-chrome always-open band replaces CurrentJamPanel below the
instrument row; ProgressionBanner survives as the single loop display
(RoadmapTrack retires, education folds into rail row headers); App
instrument state threads everywhere (JamGuide internal tabs die);
vertical rows, all stations expanded, playhead highlights; honest
wrap-based math (worst piano gallery 1,178px). Critic returned once
(Dm7-specific worst case + 3 factual fixes incl. the interim
page-yank), fixed, PASS on scoped re-gate (pixel-exact recompute).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Smoke 836/836: a literal 16x14 degree truth table (all 224 cells
independently recomputed at the gate) pins the validator resolveDegree
behaviourally via span-probe recipes; technique vocab set-equality
between validate-kb LICK_TECHNIQUES and LickCard TECHNIQUE_VOCAB via a
scoped .jsx esbuild load hook. Both guards sabotage-proven twice
(author + gate, different perturbations). Ride-along: loop-fixtures
header line-ref fixed to App.jsx:363-365. Critic PASS.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Guide-tone/tritone dyad system with the parallel half- and whole-step
laws, 7#9 as the codified blue note, the bVI7->V7 five-voice plane,
VI7b9 turnaround hinge, RH sixths; solo two-fisted vs rootless-band
contrasts per play. KB now 164 plays. Critic returned once (turnaround
jump-kicks bars 3-4 dyad orientations flipped + 2 prose rewordings),
fixed, PASS on scoped re-gate (stepwise lap chain recomputed from
scratch; "only leap" now provably unavoidable, not just chosen).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
COMMIT_VOTES=2 (unchanged, ~one bar), REPLACE_VOTES=3 (a transient or
flapping detection can never displace a committed loop; section change
replaces one commit later), NULL_CLEAR=6 (post-L-30, nulls only start
~28 commits after the loop last played — traced exactly). Vote ref now
{committedKey, candidateKey, candidateCount}; agreement resets rivals.
Diff = one hunk in the progression useEffect; audio-contract grep
clean. Ride-along: theory.js docstring overclaim softened (L-30 gate
finding b), comment-only. Critic PASS (independent re-trace of all
five scenarios + 3 hostile traces; REPLACE_VOTES=3 proven load-bearing).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The station under the playhead auto-expands to the full voicing
gallery (VoicingBrowser dense) and advances with the music; other
stations keep their recommended thumb; level-filtered licks strip
below with token-boundary context sort and strip-owned "fits — now"
chrome; pin replaces tap-to-enlarge with identical onFocusChord
semantics; auto-follow never emits focus or audio; heard-live fallback
shows the live chord gallery. App.jsx and all renderers untouched.
Critic PASS (SSR 37/37, matcher proven on hostile cases, dense-less
render byte-identical to 0945a08).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signature comp voicings over the computed fallback: m9 spreads, So What
quartal planing, Stevie 9sus cadence, m6/9 borrowed iv, 13sus, one 7#9
per loop; 3 comping cells + 5 improv rows. KB now 154 plays. Critic
PASS first try (independent arithmetic on 11 prose claims, spans <=11,
all 12 keys render in the 36-key window).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Knowledge Center behaviour while a jam plays, zero clicks: the station
under the playhead auto-expands to the full D-30 voicing gallery and
advances with the music; level-filtered licks strip below with
context-first sort; pin gesture inherits onFocusChord semantics;
auto-follow never emits focus or auto-plays audio. Honest space math
(piano rail scrolls as normal state), 5-commit migration order for
L-33, four rejected alternatives. Critic returned once (piano gallery
width understated ~45%), fixed, PASS on scoped re-gate.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
All placeable guitar shapes and all four pianoVoicing styles render
simultaneously, each cell with its own play button; one-at-a-time
playback and the show prop semantics preserved. Critic PASS (SSR-verified
cell counts, zero aria-pressed, rootPc badge guard intact).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Follow-up to the 127.0.0.1 bind: connect-src only whitelisted the
localhost variants, silently blocking Vite's HMR socket on the new
origin.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
With plain localhost, node >=17 can bind the Vite dev server to ::1
only; on this machine IPv4/IPv6 loopback mismatch made the browser,
wait-on, and the Electron window all see connection-refused while Vite
reported ready. Explicit 127.0.0.1 on all three ends fixes dev startup
(user-verified: electron:dev window now opens).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Piano branch prefers kb[style].instruments.piano.plays[prog][0],
resolving recipe degrees via a validator-mirrored resolveDegree +
strict-ascending stacking into MiniPiano's [0,36] space; per-station
fallback to computed pianoVoicingChain (reachable: 4 wide gospel
stations in key B); pack-less styles byte-identical to the computed
path. Critic PASS (0 drift cells vs the validator's resolveDegree;
390-cell sweep; key-B fallback confirmed rendering, not dead).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Church pillars vs rootless, hymn 12/8 vs octave-6/9, passing-dim walks
vs praise clusters, worship pads vs anticipated stabs; gospel comping
cells distinct from jazz's. KB: 140 plays. Critic returned once (one
improv-row scale claim false for vi7/iii7 — split into arithmetic-exact
rows), PASS on re-gate; 39/40 first-pass claims held.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
checkPianoRecipe stacks each hand low-to-high (nearest strictly above,
repeated pc -> octave up) and fails any hand spanning > 15 semitones
(minor 10th, SCHEMA rule 3); errors name style/prog/play/chord/hand/
span; refactored to a pure exported checker surfacing all errors per
recipe. Smoke +6 checks -> 799. Independent gate PASS (injection
surfaces 10 named errors exit 1; weakened gate caught behaviorally).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
GuitarTab/PianoTab pass show=guitar/show=piano to VoicingBrowser
(D-23 prop); Knowledge Center + station-enlarge keep both rows by
design. Critic PASS (SSR: each tab renders only its row, legacy
content intact below).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Thumb window = whole octaves from the octave-C at-or-below the lowest
note (+ closing high C): shell thumbs 266px -> 142px, level with guitar
diagram thumbs. size=full and the legacy lh/rh path byte-identical.
Critic PASS (SVG geometry decoded back to absolute notes incl. the
octave-2 offset case; 793/793 smoke).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
14 plays (7 progressions x 2): Bud Powell shells, rootless Type A/B,
guide-tone comps; comping rhythms; piano-angled improv. Hand spans
<= a 10th throughout. Critic returned once (6 prose voice-leading
overclaims on fifths-apart dominant alternation), fixed, PASS on
re-gate (all 6 corrected sentences arithmetic-verified both
directions); ride-along one-word polish per gate suggestion.
Rendering the authored pack in the Jam Guide is task L-24.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>