Skip to content

Documentation Accuracy Review Plan

Objective

Review and fix all false/invented information in documentation, ensuring it accurately reflects actual app functionality. Ensure modern DSL syntax is primary with legacy JavaScript in collapsible <details> sections.

Approach

  • Review each doc file against actual source code (re-examine relevant source for each page)
  • Fix any invented features (e.g., "double-click workspace to create note" - doesn't exist)
  • Ensure DSL syntax is used primarily
  • User reviews each section batch after editing
  • Mark section complete, then open new chat for next section

Quick Review Checklist (Per File)

Red Flags to Fix Immediately:

  • [ ] Claims "double-click workspace to create note" (FALSE - use Variable Widget)
  • [ ] Code blocks with ONLY legacy syntax (needs DSL primary + legacy in <details>)
  • [ ] Invalid property shortcuts: l, len, st, pitch (use: f, t, d, tempo, bpm, ml)
  • [ ] Missing <details> wrapper for legacy JavaScript code

Valid DSL Property Shortcuts:

PropertyValid Shortcuts
frequencyf, freq, frequency
startTimet, s, start, startTime
durationd, dur, duration
tempotempo
beatsPerMeasurebpm, beatsPerMeasure
measureLengthml, measureLength

Valid DSL Syntax Examples:

base.f                    # BaseNote frequency
[1].f                     # Note 1 frequency
(3/2)                     # Fraction literal
base.f * (3/2)            # Perfect fifth
[1].t + [1].d             # End time of note 1
beat(base)                # One beat duration
tempo([1])                # Get tempo for note 1
measure(base)             # Get measure length
2^(1/12)                  # 12-TET semitone

Key Source Files to Verify Against

For each doc page, re-examine relevant source code:

TopicSource Files
Note Creationsrc/modals/note-creation.js
Variable Widgetsrc/modals/variable-controls.js, src/modals/index.js
DSL Syntaxsrc/dsl/constants.js, src/dsl/index.js, src/dsl/parser.js
Expressionssrc/expression-compiler.js, src/dsl/compiler.js
Dependenciessrc/dependency-graph.js
UI Interactionssrc/renderer/webgl2/renderer.js, src/input-handler.js
Module Formatsrc/module-serializer.js, src/module.js
Playbacksrc/player.js, src/audio/*.js
Instrumentssrc/audio/instrument-manager.js

Verified Actual App Behavior

Note Creation (ACTUAL):

  1. Click BaseNote or existing note to select it
  2. Variable Widget shows "Add Note" section
  3. Choose type: "Note" or "Measure"
  4. Choose position: "At End" or "After Selected"
  5. Click "Create Note" button

FALSE claims to fix: "Double-click workspace to create note" - NO double-click create exists.

DSL Syntax (ACTUAL):

  • base.f - BaseNote frequency
  • [1].f - Note 1 frequency
  • (3/2) - Fraction literal
  • beat(base) - One beat duration (60/tempo)
  • tempo([1]) - Get tempo for note
  • measure(base) - Get measure length
  • 2^(1/12) - Power operator for TET

Dependency Colors (ACTUAL):

  • Orange: frequency dependents
  • Teal/Cyan: startTime dependents
  • Purple: duration dependents

Files to Review

Phase 0: Getting Started (Double-check)

#FileStatusIssues Found
0adocs/getting-started/index.md✅ CompleteNone
0bdocs/getting-started/installation.md✅ CompleteNone
0cdocs/getting-started/first-composition.md✅ CompleteNone - already had DSL + legacy details
0ddocs/getting-started/concepts.md✅ CompleteFixed: Dependency colors (was blue/red, now orange/teal/purple by property)

Phase 1: User Guide - Notes (High Priority)

#FileStatusIssues Found
1docs/user-guide/notes/creating-notes.md✅ CompleteFixed: Dependency colors; Fixed UI labels ("Add Note / Silence", "At End"/"At Start"); Fixed default values; Fixed legacy code example
2docs/user-guide/notes/editing-notes.md✅ CompleteFixed: Removed "red" color reference; Added instrument inheritance explanation; Rewrote "Liberate Dependencies" section with proper use cases
3docs/user-guide/notes/dependencies.md✅ CompleteFixed: Dependency color table; Added line thickness explanation (thick=parents, thin=children); Converted patterns to DSL
4docs/user-guide/notes/expressions.md✅ CompleteFixed: Expression example in table (was pseudocode, now DSL)

Phase 2: User Guide - Interface

#FileStatusIssues Found
5docs/user-guide/interface/workspace.md✅ CompleteFixed: Dependency colors (was Blue/Cyan & Red/Orange, now property-specific: Orange=frequency, Teal=startTime, Purple=duration); Added line thickness explanation
6docs/user-guide/interface/variable-widget.md✅ CompleteFixed: Legacy-only code blocks now have DSL primary + legacy in details; Fixed Add Note UI labels; Fixed Liberate Dependencies description; Fixed Add Measure (only on last measure of chain or BaseNote); Fixed Delete and Keep Dependencies (= Liberate + Delete); Fixed Dependency Highlighting (updates on save only, not real-time); Fixed ≈ Symbol (shows fractional approximation, toPrecision(8) for directly corrupted); Fixed Widget Positioning (bottom-left, user resizable, anchored to bottom); Fixed Tips (dragging/resizing, not "duration icons")
7docs/user-guide/interface/module-bar.md✅ CompleteNone - accurate
8docs/user-guide/interface/top-bar.md✅ CompleteNone - accurate
9docs/user-guide/interface/keyboard-shortcuts.md✅ CompleteNone - accurate (history limit 50 is correct)

Phase 3: User Guide - Modules

#FileStatusIssues Found
10docs/user-guide/modules/module-format.md✅ CompleteNone - already had DSL primary + legacy in details
11docs/user-guide/modules/creating-modules.md✅ CompleteFixed: UI labels ("Add Note / Silence", "At End"/"At Start"); Converted all code blocks to DSL primary + legacy details; Fixed module JSON examples
12docs/user-guide/modules/loading-modules.md✅ CompleteFixed: Menu description; Added DSL primary format; Rewrote to distinguish Load (replaces workspace) vs Module Bar drop (integrates); Removed specific category listings (user-organized); Added Bach's Neverending Canon as default; Fixed tips
13docs/user-guide/modules/saving-modules.md✅ CompleteFixed: Menu description; Fixed saved format example (now shows DSL); Removed "Evaluate to BaseNote" (doesn't exist), replaced with "Reorder Module"

Phase 4: User Guide - Playback

#FileStatusIssues Found
14docs/user-guide/playback/transport.md✅ CompleteNone - accurate (streaming scheduler values 2s/100ms correct, volume default 0.2 correct)
15docs/user-guide/playback/tracking.md✅ CompleteFixed: Stop button behavior (was "view stays at last position", now "playhead resets to beginning")
16docs/user-guide/playback/instruments.md✅ CompleteFixed: Removed broken /about/changelog link; Rewrote instrument inheritance section to accurately describe frequency dependency chain lookup

Phase 5: User Guide - Tuning

#FileStatusIssues Found
17docs/user-guide/tuning/ratios.md✅ CompleteNone - already had DSL primary + legacy details
18docs/user-guide/tuning/equal-temperament.md✅ CompleteNone - DSL syntax correct, module references accurate
19docs/user-guide/tuning/12-tet.md✅ CompleteNone - DSL syntax correct, module name matches file
20docs/user-guide/tuning/19-tet.md✅ CompleteNone - DSL syntax correct, module name matches file
21docs/user-guide/tuning/31-tet.md✅ CompleteNone - DSL syntax correct, module name matches file
22docs/user-guide/tuning/bohlen-pierce.md✅ CompleteNone - tritave 3^(1/13) syntax correct, BP-13 module exists
23docs/user-guide/tuning/custom-tet.md✅ CompleteNone - DSL syntax and module JSON format accurate

Phase 6: Tutorials - Beginner

#FileStatusIssues Found
24docs/tutorials/beginner/major-scale.md✅ CompleteFixed: UI label "Add Note" → "Add Note / Silence"; Fixed: "Add at Start+Duration" → "At End"; Fixed: 60 / tempo(base)beat(base)
25docs/tutorials/beginner/major-triad.md✅ CompleteFixed: UI labels for "Add Note / Silence" section; Fixed: "Add at Same Time" → "At Start"; Fixed: duration expression to use beat(base)
26docs/tutorials/beginner/rhythm.md✅ CompleteFixed: All 60 / tempo(base)beat(base); Fixed: Note duration reference table; Fixed: Duration quick controls description (icon buttons + dot modifiers); Fixed: Step instructions to reference "Add Note / Silence" and position options

Phase 7: Tutorials - Intermediate

#FileStatusIssues Found
27docs/tutorials/intermediate/dependencies.md✅ CompleteNone - already had DSL primary + legacy details, correct UI labels
28docs/tutorials/intermediate/octaves.md✅ CompleteNone - DSL syntax correct, uses beat(base)
29docs/tutorials/intermediate/measures.md✅ CompleteFixed: 60 / tempo([5])beat([5])
30docs/tutorials/intermediate/index.md✅ CompleteNone - navigation only

Note for Phase 8+: Consider adding tips about the Module Bar Drop Mode Toggle where appropriate:

  • For scale-building tutorials: mention using "End" mode to chain modules sequentially
  • For chord-building tutorials: mention using "Start" mode to stack modules at the same time

Phase 8: Tutorials - Advanced

#FileStatusIssues Found
31docs/tutorials/advanced/complex-dependencies.md✅ CompleteFixed: Dependency colors (was Blue/Red, now Orange/Teal/Purple by property with line thickness); Fixed: 60 / tempo(...)beat(...); Added Module Bar Drop Mode tips for chords and sequences
32docs/tutorials/advanced/microtonal.md✅ CompleteAdded Module Bar Drop Mode tip for scales and chords
33docs/tutorials/advanced/symbolic-power.md✅ CompleteNone - already had DSL primary + legacy details
34docs/tutorials/advanced/index.md✅ CompleteNone - navigation only

Phase 9: Tutorials - Workflows

#FileStatusIssues Found
35docs/tutorials/workflows/intervals.md✅ CompleteAdded Module Bar Drop Mode tip for interval exploration
36docs/tutorials/workflows/module-library.md✅ CompleteFixed: 60 / tempo(base)beat(base) in Rhythm Template; Added Module Bar Drop Mode section; Rewrote save/load workflow (was wrong UI); Fixed category structure (no nested subcategories); Fixed export/import instructions; Added persistence info
37docs/tutorials/workflows/microtonal-experiments.md✅ CompleteAdded Module Bar Drop Mode tip for experimentation
38docs/tutorials/workflows/index.md✅ CompleteNone - navigation only

Phase 10: Reference - Expressions

#FileStatusIssues Found
39docs/reference/expressions/syntax.md⬜ Pending
40docs/reference/expressions/operators.md⬜ Pending
41docs/reference/expressions/fraction-api.md⬜ Pending
42docs/reference/expressions/module-api.md⬜ Pending

Phase 11: Reference - Properties

#FileStatusIssues Found
43docs/reference/properties/frequency.md⬜ Pending
44docs/reference/properties/start-time.md⬜ Pending
45docs/reference/properties/duration.md⬜ Pending
46docs/reference/properties/tempo.md⬜ Pending
47docs/reference/properties/beats-per-measure.md⬜ Pending

Phase 12: Reference - Other

#FileStatusIssues Found
48docs/reference/module-schema.md⬜ Pending
49docs/reference/glossary.md⬜ Pending
50docs/reference/index.md⬜ Pending

Phase 13: Developer - API

#FileStatusIssues Found
51docs/developer/api/module.md⬜ Pending
52docs/developer/api/note.md⬜ Pending
53docs/developer/api/binary-expression.md⬜ Pending
54docs/developer/api/event-bus.md⬜ Pending

Phase 14: Developer - Core

#FileStatusIssues Found
55docs/developer/core/expression-compiler.md⬜ Pending
56docs/developer/core/dependency-graph.md⬜ Pending
57docs/developer/core/binary-evaluator.md⬜ Pending
58docs/developer/core/symbolic-power.md⬜ Pending

Phase 15: Developer - Architecture

#FileStatusIssues Found
59docs/developer/architecture/overview.md⬜ Pending
60docs/developer/architecture/data-flow.md⬜ Pending
61docs/developer/architecture/module-system.md⬜ Pending
62docs/developer/architecture/rendering.md⬜ Pending

Phase 16: Developer - Rendering

#FileStatusIssues Found
63docs/developer/rendering/webgl2-renderer.md⬜ Pending
64docs/developer/rendering/camera-controller.md⬜ Pending
65docs/developer/rendering/picking.md⬜ Pending

Phase 17: Developer - Audio

#FileStatusIssues Found
66docs/developer/audio/audio-engine.md⬜ Pending
67docs/developer/audio/instruments.md⬜ Pending
68docs/developer/audio/streaming.md⬜ Pending

Phase 18: Developer - WASM

#FileStatusIssues Found
69docs/developer/wasm/overview.md⬜ Pending
70docs/developer/wasm/building.md⬜ Pending
71docs/developer/wasm/adapters.md⬜ Pending

Phase 19: Developer - Contributing

#FileStatusIssues Found
72docs/developer/contributing/setup.md⬜ Pending
73docs/developer/contributing/code-style.md⬜ Pending
74docs/developer/contributing/pull-requests.md⬜ Pending

Phase 20: Index Files

#FileStatusIssues Found
75docs/index.md⬜ Pending
76docs/user-guide/index.md⬜ Pending
77docs/tutorials/index.md⬜ Pending
78docs/developer/index.md⬜ Pending

Status Legend

  • ⬜ Pending - Not yet reviewed
  • 🔄 In Progress - Currently being reviewed
  • ✅ Complete - Reviewed and fixed
  • ⏭️ Skipped - No changes needed

Common False Patterns Already Identified

1. Note Creation Errors

Wrong: "Double-click the workspace to create a note" Wrong: "Click on empty space to add a note" Wrong: "Right-click to create note" Correct: Select a note → Variable Widget "Add Note / Silence" section → Choose type & position → Click "Create Note"

1b. Variable Widget UI Labels

Wrong: "Add Note" section, "Add at Start+Duration", "Add at Same Time" Correct: "Add Note / Silence" section, "At End" (for sequences), "At Start" (for chords)

Wrong: Default frequency for "At Start" is 5/4 times selected note Correct: Default frequency is always [selected].f (same as selected note) - user edits to create intervals

2. Legacy-Only Code Blocks

Wrong:

javascript
module.baseNote.getVariable('frequency').mul(new Fraction(3, 2))

Correct:

base.f * (3/2)
Legacy JavaScript syntax
javascript
module.baseNote.getVariable('frequency').mul(new Fraction(3, 2))

3. Invalid Property References

Wrong: [1].l, [1].len, [1].length (for duration) Correct: [1].d, [1].dur, [1].duration

Wrong: [1].st, [1].time (for startTime) Correct: [1].t, [1].s, [1].start, [1].startTime

4. Dependency Color Descriptions

Potentially outdated: "Blue lines = depends on, Red lines = dependents" More accurate: Colors are property-specific (Orange=frequency, Teal=startTime, Purple=duration)

5. Duration/Beat Expressions

Wrong: 60 / tempo(base) as standalone (works but verbose) Better: beat(base) (built-in helper that does the same thing)

6. Incomplete Legacy Code Examples

Wrong: module.getNoteById(5) (incomplete - doesn't get a property) Correct: module.getNoteById(5).getVariable('frequency') (complete legacy reference)

7. Missing Dependency Line Thickness

Missing info: Dependency lines have thickness meaning Correct: Thick lines = parent dependencies (what selected note depends on), Thin lines = child dependencies (what depends on selected note)

8. Liberate Dependencies Misunderstanding

Wrong: "Liberate Dependencies" converts references to raw computed values Correct: "Liberate Dependencies" substitutes the liberated note's expressions into dependent notes (bypasses the note in the chain). Example: [1].t + [1].d becomes base.t + beat(base) if Note 1's expressions were base.t and beat(base).

9. Module Drop Behavior

Wrong: "Dropping a module replaces the workspace" Correct: Dropping a module integrates it into the workspace by remapping dependencies:

  • Drop on note/BaseNote: All properties remapped relative to that note
  • Drop on measure bar: Time remapped to measure, frequency to workspace's BaseNote
  • Drop on silence: Not supported

10. Add Measure Availability

Wrong: "Add Measure" available on any note Correct: "Add Measure" only appears on:

  • BaseNote (shows "Add New Measure Chain")
  • Last measure in a chain (shows "Add Measure")

11. Delete and Keep Dependencies

Wrong: Keeps dependencies with their original references Correct: Same as Liberate + Delete - liberates the note first (substitutes expressions into dependents), then deletes it

12. Corruption Display (≈ Symbol and Hatching)

Wrong: Directly corrupted shows decimal, transitively corrupted shows fraction Correct: Both show fractional approximation with ≈ prefix. Visual distinction is via hatching:

  • Directly corrupted (irrational/TET): Crosshatch pattern (X) on note
  • Transitively corrupted: Single diagonal hatch pattern on note

13. Variable Widget Positioning

Wrong: Right side, auto-sizing, edge-resizable Correct: Bottom-left corner, header-draggable only (not edge-resizable), anchored to bottom

14. Undo/Redo History Scope

What's tracked: Note additions, deletions, property changes, module loads What's NOT tracked: View changes (pan/zoom), playback state, Module Bar changes

Check for and remove links to non-existent pages like /about/changelog

16. "Real-time" Claims

Wrong: "Updates in real-time as you type" Correct: Changes take effect on save, not while typing

17. Module Bar Drop Mode Toggle

New feature: The Module Bar has a "Drop at:" toggle with two modes:

  • Start: Module notes are placed at the beginning of the target note (references base.t become [target].t)
  • End: Module notes are placed at the end of the target note (references base.t become [target].t + [target].d)

Tutorial tip:

  • End mode is ideal for building scales - drop notes sequentially to chain them one after another
  • Start mode is ideal for building chords - drop notes to stack them at the same start time

Workflow Per Section

  1. New chat: Start fresh chat for the section
  2. Tell Claude: "Review docs section [Phase X] per REVIEW-PLAN.md"
  3. Claude reviews: Examines source code + docs, makes fixes
  4. You review: Check the edits
  5. Mark complete: Update status in this file from ⬜ to ✅
  6. Repeat: New chat for next section

Released under the RMT Personal Non-Commercial License