AI-augmented music theory and guitar learning platform — .NET 10 / C# 14 backend, F# DSL for music theory primitives, React 18 + Vite frontend, Aspire-orchestrated. Part of a four-repo ecosystem (ga + ix Rust ML + Demerzel governance + tars F# theory validator).
Agent-facing canonical docs:
CLAUDE.md(~70 lines, breadcrumb-style) andAGENTS.md(full development guidelines).
window.__gaIK.Strict bottom-up five-layer model:
1. Core — GA.Core, GA.Domain.Core (Note, Interval, Fretboard primitives)
2. Domain — GA.Business.Core, GA.Business.Config, GA.BSP.Core (logic + YAML)
3. Analysis — GA.Business.Core.Harmony, GA.Business.Core.Fretboard (voice leading, geometry, spectral)
4. AI / ML — GA.Business.ML (embeddings, OPTIC-K, RAG, chatbot skills)
5. Orchestration — GA.Business.Core.Orchestration, GA.Business.Assets, GA.Business.Intelligence
Rule: AI code lives in layer 4. Orchestration in layer 5. Never in lower layers. Full layer map: docs/architecture/layers.md.
Common/GA.Business.ML/Embeddings/EmbeddingSchema.cs — read TotalDimension / Version, never hardcode. Changing dimension is a one-way door.ChordVoicingsSkill and the typed MusicalQueryEncoder pipeline.GrothendieckDeltaSkill and the fretboard shortest-path solver.dotnet build AllProjects.slnx -c Debug # full build
dotnet test AllProjects.slnx # full test suite
pwsh Scripts/start-all.ps1 -Dashboard # start everything via Aspire
pwsh Scripts/run-all-tests.ps1 -BackendOnly -SkipBuild # faster backend-only loop
pwsh Scripts/start-dev.ps1 # GaApi on 5232 + Vite on 5176 with auto-restart
For frontend work: npm run build && npm run lint in ReactComponents/ga-react-components.
| Service | Port | Purpose |
|---|---|---|
| GaApi (.NET) | 5232 | REST + GraphQL, mounts the chatbot at /chatbot/* via PathBase reverse-proxy |
| GaChatbot.Api (.NET) | 5252 | Skill-routed chatbot backend — runs side-by-side with GaApi |
| Vite (React) | 5176 | Frontend dev server with HMR |
| Aspire Dashboard | 15001 | Service health + traces |
See reference_dev_stack_three_services for the three-service split and the cloudflared route configuration for demos.guitaralchemist.com.
Every code-touching turn applies six rules: think before coding · simplicity first · surgical changes · verifiable success criteria · frame problem before solution · instrument one-way doors. Session continuity uses the Cherny pattern: /digest writes state/digests/latest.md at breakpoints; /learnings captures surprises to docs/solutions/; /auto-optimize drives Cherny-style improvement loops per domain (chatbot-qa, embeddings, voicing-analysis).
CI enforces this in .github/workflows/karpathy-cherny-discipline.yml.
For music-theory / DI / parser / MCP changes, code review fans out to multiple LLMs in parallel: octo:droids:octo-code-reviewer + octo:droids:octo-security-auditor + (when available) octo:droids:octo-performance-engineer. This has caught 9+ real bugs in past chatbot-migration PRs that local tests missed. See docs/methodology/multi-llm-review.md.
Daily CI workflows snapshot quality signals to state/quality/<domain>/YYYY-MM-DD.json:
chatbot-qa-snapshot.yml — corpus pass-pct, by category, latency.embeddings-snapshot.yml — OPTIC-K leak-detection, retrieval consistency, clustering, topology (via ix-embedding-diagnostics in the ix sibling).Trend dashboard at ix-quality-trend aggregates these snapshots cross-domain.
GA.Business.DSL exposes the primitives in a type-safe scriptable form.ix (Rust ML), Demerzel (governance + ACP), tars (F# theory validator).Three coexisting agent surfaces in this workspace: Claude Code (primary), Antigravity native, Augment. Hand-off via Scripts/antigravity-bridge.ps1. Split documented in docs/methodology/ai-surfaces.md.
GA exposes ix's Rust ML toolkit via MCP federation. Useful entry points:
ix_ml_pipeline — one-call ML pipeline: classify progressions, cluster voicings, analyze harmonic complexity.ix-embedding-diagnostics (binary: baseline-diagnostics) — partition-by-partition leak detection on the OPTIC-K corpus./ix-ml-builder, /federation-music, /federation-discover.All operations governed by the Demerzel epistemic constitution.
ga/
├── Apps/
│ ├── GaApi/ # Main API (REST + GraphQL, port 5232)
│ └── GaChatbot.Api/ # Skill-routed chatbot (port 5252)
├── Common/
│ ├── GA.Business.Core/ # Layer 1 — pure theory primitives
│ ├── GA.Domain/ # Layer 2 — domain types
│ ├── GA.Business.Core.Analysis/ # Layer 3 — geometry + analysis
│ ├── GA.Business.ML/ # Layer 4 — AI / OPTIC-K / skills
│ ├── GA.Business.DSL/ # F# music-theory DSL
│ └── GA.Business.Core.Orchestration/ # Layer 5 — DI + plugins
├── ReactComponents/ga-react-components/ # Vite frontend (port 5176)
├── Tests/ # NUnit / xUnit / Playwright
├── docs/
│ ├── architecture/ # Layer map + design notes
│ ├── methodology/ # AI surfaces, multi-LLM review
│ ├── plans/ # Active feature plans
│ ├── solutions/ # Cherny-style past learnings
│ ├── contracts/ # Cross-repo schemas
│ └── runbooks/ # Operational procedures
├── state/
│ ├── digests/ # Session continuity (Cherny)
│ ├── quality/ # Daily quality snapshots
│ └── voicings/optick.index # OPTIC-K corpus (~175 MB)
├── governance/demerzel/ # Submodule — Demerzel constitution
└── Scripts/ # PowerShell tooling
Voice-leading geometry features are inspired by:
GrothendieckDeltaSkill and the fretboard shortest-path solver.See REFERENCES.md for full citations and implementation notes on OPTIC (Octave, Permutation, Transposition, Inversion, Cardinality) quotienting.
MIT — see LICENSE.
Rich Text Format
38.1%
C#
25.8%
TypeScript
20.6%
HTML
2.9%
PowerShell
2.8%
Pascal
1.9%
JavaScript
1.8%
Python
1.8%
F#
1.7%
Jupyter Notebook
1.2%
AI-augmented music theory and guitar learning platform — .NET 10 / C# 14 backend, F# DSL for music theory primitives, React 18 + Vite frontend, Aspire-orchestrated. Part of a four-repo ecosystem (ga + ix Rust ML + Demerzel governance + tars F# theory validator).
Agent-facing canonical docs:
CLAUDE.md(~70 lines, breadcrumb-style) andAGENTS.md(full development guidelines).
window.__gaIK.Strict bottom-up five-layer model:
1. Core — GA.Core, GA.Domain.Core (Note, Interval, Fretboard primitives)
2. Domain — GA.Business.Core, GA.Business.Config, GA.BSP.Core (logic + YAML)
3. Analysis — GA.Business.Core.Harmony, GA.Business.Core.Fretboard (voice leading, geometry, spectral)
4. AI / ML — GA.Business.ML (embeddings, OPTIC-K, RAG, chatbot skills)
5. Orchestration — GA.Business.Core.Orchestration, GA.Business.Assets, GA.Business.Intelligence
Rule: AI code lives in layer 4. Orchestration in layer 5. Never in lower layers. Full layer map: docs/architecture/layers.md.
Common/GA.Business.ML/Embeddings/EmbeddingSchema.cs — read TotalDimension / Version, never hardcode. Changing dimension is a one-way door.ChordVoicingsSkill and the typed MusicalQueryEncoder pipeline.GrothendieckDeltaSkill and the fretboard shortest-path solver.dotnet build AllProjects.slnx -c Debug # full build
dotnet test AllProjects.slnx # full test suite
pwsh Scripts/start-all.ps1 -Dashboard # start everything via Aspire
pwsh Scripts/run-all-tests.ps1 -BackendOnly -SkipBuild # faster backend-only loop
pwsh Scripts/start-dev.ps1 # GaApi on 5232 + Vite on 5176 with auto-restart
For frontend work: npm run build && npm run lint in ReactComponents/ga-react-components.
| Service | Port | Purpose |
|---|---|---|
| GaApi (.NET) | 5232 | REST + GraphQL, mounts the chatbot at /chatbot/* via PathBase reverse-proxy |
| GaChatbot.Api (.NET) | 5252 | Skill-routed chatbot backend — runs side-by-side with GaApi |
| Vite (React) | 5176 | Frontend dev server with HMR |
| Aspire Dashboard | 15001 | Service health + traces |
See reference_dev_stack_three_services for the three-service split and the cloudflared route configuration for demos.guitaralchemist.com.
Every code-touching turn applies six rules: think before coding · simplicity first · surgical changes · verifiable success criteria · frame problem before solution · instrument one-way doors. Session continuity uses the Cherny pattern: /digest writes state/digests/latest.md at breakpoints; /learnings captures surprises to docs/solutions/; /auto-optimize drives Cherny-style improvement loops per domain (chatbot-qa, embeddings, voicing-analysis).
CI enforces this in .github/workflows/karpathy-cherny-discipline.yml.
For music-theory / DI / parser / MCP changes, code review fans out to multiple LLMs in parallel: octo:droids:octo-code-reviewer + octo:droids:octo-security-auditor + (when available) octo:droids:octo-performance-engineer. This has caught 9+ real bugs in past chatbot-migration PRs that local tests missed. See docs/methodology/multi-llm-review.md.
Daily CI workflows snapshot quality signals to state/quality/<domain>/YYYY-MM-DD.json:
chatbot-qa-snapshot.yml — corpus pass-pct, by category, latency.embeddings-snapshot.yml — OPTIC-K leak-detection, retrieval consistency, clustering, topology (via ix-embedding-diagnostics in the ix sibling).Trend dashboard at ix-quality-trend aggregates these snapshots cross-domain.
GA.Business.DSL exposes the primitives in a type-safe scriptable form.ix (Rust ML), Demerzel (governance + ACP), tars (F# theory validator).Three coexisting agent surfaces in this workspace: Claude Code (primary), Antigravity native, Augment. Hand-off via Scripts/antigravity-bridge.ps1. Split documented in docs/methodology/ai-surfaces.md.
GA exposes ix's Rust ML toolkit via MCP federation. Useful entry points:
ix_ml_pipeline — one-call ML pipeline: classify progressions, cluster voicings, analyze harmonic complexity.ix-embedding-diagnostics (binary: baseline-diagnostics) — partition-by-partition leak detection on the OPTIC-K corpus./ix-ml-builder, /federation-music, /federation-discover.All operations governed by the Demerzel epistemic constitution.
ga/
├── Apps/
│ ├── GaApi/ # Main API (REST + GraphQL, port 5232)
│ └── GaChatbot.Api/ # Skill-routed chatbot (port 5252)
├── Common/
│ ├── GA.Business.Core/ # Layer 1 — pure theory primitives
│ ├── GA.Domain/ # Layer 2 — domain types
│ ├── GA.Business.Core.Analysis/ # Layer 3 — geometry + analysis
│ ├── GA.Business.ML/ # Layer 4 — AI / OPTIC-K / skills
│ ├── GA.Business.DSL/ # F# music-theory DSL
│ └── GA.Business.Core.Orchestration/ # Layer 5 — DI + plugins
├── ReactComponents/ga-react-components/ # Vite frontend (port 5176)
├── Tests/ # NUnit / xUnit / Playwright
├── docs/
│ ├── architecture/ # Layer map + design notes
│ ├── methodology/ # AI surfaces, multi-LLM review
│ ├── plans/ # Active feature plans
│ ├── solutions/ # Cherny-style past learnings
│ ├── contracts/ # Cross-repo schemas
│ └── runbooks/ # Operational procedures
├── state/
│ ├── digests/ # Session continuity (Cherny)
│ ├── quality/ # Daily quality snapshots
│ └── voicings/optick.index # OPTIC-K corpus (~175 MB)
├── governance/demerzel/ # Submodule — Demerzel constitution
└── Scripts/ # PowerShell tooling
Voice-leading geometry features are inspired by:
GrothendieckDeltaSkill and the fretboard shortest-path solver.See REFERENCES.md for full citations and implementation notes on OPTIC (Octave, Permutation, Transposition, Inversion, Cardinality) quotienting.
MIT — see LICENSE.
Rich Text Format
38.1%
C#
25.8%
TypeScript
20.6%
HTML
2.9%
PowerShell
2.8%
Pascal
1.9%
JavaScript
1.8%
Python
1.8%
F#
1.7%
Jupyter Notebook
1.2%