Sprint jamguide piano #1
Reference in New Issue
Block a user
Delete Branch "sprint-jamguide-piano"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds a standing team that builds JamBuddy as both jam companion and open-source learning platform, collaborating through files (shared ledger + repo), conducted by one scheduled loop. - .claude/agents/{maestro,professor,luthier,muse,critic,herald}.md - dispatchable subagents, one per domain with file ownership + DoD - .claude/skills/jam-loop/SKILL.md - the conductor (main loop appoints workers, Critic gates, Maestro reconciles); generalises /kb-expand - docs/agents/ROSTER.md - team, ownership map, cadence weights - docs/agents/PROTOCOL.md - task-locking conflict guardrail, ledger lifecycle, appointment algorithm, scheduling, PR-via-API - docs/agents/LEDGER.md - live board seeded with sprint-jam-guide - GOAL.md - links the ensemble; build still green Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>Muse explored three distinct philosophies for the live Jam Guide panel: - Stage: live-play-at-a-glance (current chord huge, next preview, one big grip) - Playbook: study/comparison grid (loop chords x voicings, more-ways expand) - Roadmap: improv-first highway (playhead, guide tones, scale, voice-leading rails) Each in docs/design/jam-guide-concept-{a,b,c}.md. Awaiting user pick (D-SEL). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>Renders movable {rootStr,offsets} and open {frets,onlyRoot} KB shapes; computes movable base fret from chord rootPc in standard tuning (E-shape A7 -> fret 5); root in accent purple; thumb/full sizes; graceful '-' fallback for unplaceable shapes. Critic PASS. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>Completes the flagship Roadmap feature. App.jsx lifts a jamFocusChord state (additive, +10/-0, audio callbacks/refs untouched); JamGuide emits the tapped station's {rootPc, quality} via onFocusChord; Fretboard halos the 3rd/7th with a degree badge. Also fixes root-cause guideTones: hasSeventh now keys on real m7/M7 (interval 10/11), not length>=4 -- so add9/maj6/min6 no longer badge their 5th/6th as a '7'. Fretboard badge derives its label from the actual interval (belt-and-suspenders). RoadmapTrack lane self-corrects. Critic returned-then-PASS on re-gate; build + smoke + validator green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>pianoVoicing({rootPc,quality},opts?) -> {notes,pcs,bass,style,label}: shells (1-3-7), rootless A/B (3-5-7-9 / 7-9-3-5), root-position; opts.prev / pianoVoicingChain thread a loop with octave voice-leading optimization. Helpers: hasTrueSeventh, voicingToneSet. Pure, imports only theory.js. Critic PASS: 56 voicings (14 qualities x 4 styles), 0 wrong notes, deterministic. New unimported module (no frontend impact yet) — D-10 renders it, L-11 wires the piano tab. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>MiniPiano now dispatches: with a voicing={pianoVoicing(...)} prop it renders the {notes,pcs,bass,style,label} on a 2-3 octave keyboard (root accent, bass amber-ringed, thumb/full); without it, the legacy {rootPc,lh,rh} path is byte-unchanged so ChordDetailModal + ExplorePanel render identically. Critic PASS. 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>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>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>Smoke 886/886: RelatedProgressions ranking pinned (blues-12bar 152, jazz-251-minor 156, no-collapse counterfactual 39 — replica grounded against the live component; the 12-bar pin deliberately goes red when D-62's collapsed indexing lands, message says re-pin). Validator: registry-level progression-id uniqueness (the file walk missed registry wiring dups — sabotage-proven with exactly one named error). Whole-sprint App.jsx audio contract: zero hits since the seed. Full-App SSR 60/60 across instrument x {normal, jam view}. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>When the loop matches a KB style (rolled or live-detected), RelatedProgressions leads with that style's other progressions under a "Try these in {style}" header, labelled by data-derived character (minor version / shorter form / extended form / reharmonized) computed from mode/bars/qualities — no cross-style jumping. The role phrase is suppressed unless the sibling is genuinely related (same changes or a shared transition), so no false "variation" claim. When no style is locked, today's cross-style list is preserved byte-for-byte. Smoke 893/893: §8 re-pinned (scores stable 92/156, labels moved) plus two gate-added durable assertions (finding-B suppression + no-match fallback). Critic PASS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>Additive suggestSubstitutions({rootPc,quality}, keyInfo, opts) returns up to 4 honest, correctly-spelled chord alternatives in the detected key: relative/diatonic-third, borrowed-minor iv (flat-spelled b6), diatonic extension colour, and the secondary dominant of the next chord — each with a plain teaching why. A sabotage-proven smoke truth-table pins the tables (Am-C-F both readings, the Rule-D blues moves). Critic returned once (Rule C self-suggested the sounding chord on 7th inputs: Dm7->Dm7, plus a latent add9-on-minor mis-spelling), fixed (skip self-quality extension; omit category C when nothing new to add), PASS on scoped re-gate. Smoke 903/903; theory.js purely additive. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>Dashboard voicings rail: guitar galleries capped to 4 shapes (recommended-first, then open, then movable by base fret; prop-gated so the Knowledge Center and chord modal keep all shapes); piano voicings render as a 2x2 grid of size="mini" (scale 0.60) keyboards under the rail's dense path only. Play buttons removed globally from VoicingBrowser per the user ("leave them off, better not") — the Knowledge Center + modal render byte-identical minus the buttons. A scoped .dark-scroll utility (thin, #2a2a2a on transparent) dresses the dashboard scrollers. Critic PASS (combined gate: byte-identity proven, zero play buttons everywhere, contract intact). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>d543b98, direct push); L-77 re-scoped to hybrid loop+history rail (>=4) 7561566cebL-78 pushed on user request ("push everything now") — build+validate+smoke 903/903, full Critic gate waived. L-77 re-scoped same day: highlight loop chords + list other recent chords underneath, >=4 total once history exists. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>9415daf) — hybrid loop+history voicings rail, pushed both remotes 8ebdc73958Pull request closed