Repository navigation
Conversation
|
ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing |
Reviewer's GuideThe PR updates colour-layer roman numeral generation to render half-diminished vii as viiø7 while preserving existing major-seventh and dominant-seventh output, and adds regression coverage for the glyph fix and construction of wheels from scales with fewer than seven pitch classes. Sequence diagram for half-diminished vii roman generationsequenceDiagram
participant Wheel as HarmonicWheel
participant Builder as WheelDegreeBuilder
participant Roman as Colour roman closure
Wheel->>Roman: build(spec)
Roman->>Builder: colourQuality(for: spec, isMinor: isMinor)
Builder-->>Roman: halfDiminished7
Roman->>Roman: String(spec.roman.dropLast())
Roman-->>Wheel: viiø7
Flow diagram for colour-layer roman numeral renderingflowchart TD
S[Colour layer spec] --> Q[WheelDegreeBuilder.colourQuality]
Q --> M{Chord quality}
M -->|major7| A[Return roman + maj7]
M -->|halfDiminished7| B[Remove trailing degree symbol]
B --> C[Return base + ø7]
M -->|other| D[Return roman + 7]
File-Level Changes
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
wiradifit
force-pushed
the
fix/52-half-diminished-roman-glyph
branch
from
August 25, 2026 12:34
d2e8c5d to
f8dc574
Compare
Colour-layer roman numerals appended a plain '7' to every non-major7 quality, so the leading-tone sector rendered 'vii°7' — the fully- diminished glyph — despite mapping to .halfDiminished7. The builder now switches on chord quality and emits 'viiø7' for half-diminished chords, leaving maj7 and plain-7 romans untouched. Adds regression coverage for issue sp80808#52: sub-heptatonic scales (pentatonic major/minor, blues) construct through public API without trapping now that the tension layer is degree-keyed, heptatonics still construct, and the ø glyph is asserted.
wiradifit
force-pushed
the
fix/52-half-diminished-roman-glyph
branch
from
August 25, 2026 12:39
f8dc574 to
4979453
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Completes the remaining acceptance criterion of #52.
The out-of-range crash itself (unconditional
pcs[5]indexing in the tension layer) is already resolved onmain— that layer now looks sectors up by heptatonic degree with optional bindings, and I confirmed there are no unguardedpcs[N]subscripts left inHarmonicWheel.swift. This PR fixes the issue's second checklist item:WheelDegreeBuilder.colourQualitycorrectly maps the diminished degree to.halfDiminished7, but the roman-numeral builder appended a plain"7"to every non-.major7quality, producingvii°7— the glyph for a fully diminished seventh.Changes
.major7→<roman>maj7(unchanged).halfDiminished7→ strips the trailing°from the degree roman and appendsø7→viiø7<roman>7(unchanged)pentatonicMajor,pentatonicMinor, andbluesconstruct through ordinary public API without trappingviiø7V7Verification
Focused suite executed on Linux (Swift 6.2 toolchain, pure-Swift theory modules only):
The UI/MIDI/audio modules require Apple frameworks, so the full-package
swift testrun belongs to this repo's macOS CI workflow per CONTRIBUTING.md.Refs #52
Summary by Sourcery
Correct half-diminished colour roman-numeral notation and protect harmonic-wheel construction and rendering with regression tests.
Bug Fixes:
viiø7instead of the fully diminishedvii°7notation.Tests: