Housekeeping: two rename leftovers, and documents that had drifted fr… - #8
Merged
Conversation
…om the tree Two files still carried `tap` from before the rename: examples/plainsong-4-tap-closing-time.song and docs/traditions/03-the-tap-songbook.md. The songbook's own hits on that string -- jarabe tapatio, patapan, tapestry -- are song titles and were left alone. The fingerprint is keyed on path, so its baseline had to be re-recorded. Proved inert the way the earlier renames were: the note-hash multiset across all 6,321 files is b850e4729399e7e5068a13c0 before and after. Not one note moved, only a path. The documentation had drifted from the thing it describes. - The README claimed nine complete examples. There are eight. - SHIPPING.md said 527 tests and 6,333 sources; it is 667 and 6,340. That document opens by saying every claim in it was checked against the working tree, so stale numbers make it lie about itself specifically. - It still listed the four-note chord cap as an open limitation -- "D9 sounds like D7" -- which 1.0.1 fixed. That is the second time that same stale claim has been found in a document; the first was the 1.0.0 changelog. - Its claim about the browser demo was the pre-fix one, describing note counts as the guard. Counting is exactly what failed to notice `.` and `-` being read as rests. It now describes what actually checks it. - chart and merge reached CLAUDE.md, AGENTS.md and docs/architecture.md, which described neither. The architecture doc had grown two lists of the same three projections; they are one list now. - proposals/02-the-voyage.md's status table said 578 tests and "wheel built in a clean venv", which undersells it -- it is on PyPI. And the MCP caveat is closed, by doing it rather than by arguing. The server was driven with the official mcp Python SDK 2.0.0 over stdio, as a third-party client would: initialize returns plainsong 1.1.0 on protocol 2025-06-18, 27 tools, 9 resources and 2 prompts enumerate, compile_score round-trips inline notation, a resource reads back, and a call with a missing required argument returns isError: true. One finding recorded rather than fixed. Notation the compiler cannot read comes back isError: false with the failure in the content -- "error: no sections found". The tool ran; the music did not compile. That is defensible under the specification, which reserves isError for execution failures, but it means an agent client has to read the diagnostics rather than the flag. That is the "success is not evidence" trap AGENTS.md warns about, served over the wire. Changing isError semantics is a decision about the protocol surface rather than a tidy-up, so it is written down and left. Verified: 667 tests, 7 specs, ruff clean, 6,340 sources checked, 6,321 files compiling to exactly the music they did. Every relative link and image across 35 documents resolves. All 24 subcommands the documentation names exist, and the 18 that take a file were run end to end. The demo differential agrees on all eight cases. A wheel was built and exercised from outside the source tree, including the three new modules. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PBAjxy7cD6DzJ72NX8TJEc
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.
…om the tree
Two files still carried
tapfrom before the rename: examples/plainsong-4-tap-closing-time.song anddocs/traditions/03-the-tap-songbook.md. The songbook's own hits on that string -- jarabe tapatio, patapan, tapestry -- are song titles and were left alone.
The fingerprint is keyed on path, so its baseline had to be re-recorded. Proved inert the way the earlier renames were: the note-hash multiset across all 6,321 files is b850e4729399e7e5068a13c0 before and after. Not one note moved, only a path.
The documentation had drifted from the thing it describes.
.and-being read as rests. It now describes what actually checks it.And the MCP caveat is closed, by doing it rather than by arguing. The server was driven with the official mcp Python SDK 2.0.0 over stdio, as a third-party client would: initialize returns plainsong 1.1.0 on protocol 2025-06-18, 27 tools, 9 resources and 2 prompts enumerate, compile_score round-trips inline notation, a resource reads back, and a call with a missing required argument returns isError: true.
One finding recorded rather than fixed. Notation the compiler cannot read comes back isError: false with the failure in the content -- "error: no sections found". The tool ran; the music did not compile. That is defensible under the specification, which reserves isError for execution failures, but it means an agent client has to read the diagnostics rather than the flag. That is the "success is not evidence" trap AGENTS.md warns about, served over the wire. Changing isError semantics is a decision about the protocol surface rather than a tidy-up, so it is written down and left.
Verified: 667 tests, 7 specs, ruff clean, 6,340 sources checked, 6,321 files compiling to exactly the music they did. Every relative link and image across 35 documents resolves. All 24 subcommands the documentation names exist, and the 18 that take a file were run end to end. The demo differential agrees on all eight cases. A wheel was built and exercised from outside the source tree, including the three new modules.
Claude-Session: https://claude.ai/code/session_01PBAjxy7cD6DzJ72NX8TJEc
Description
[What changed and why. Link to the issue if one exists.]
Testing Done
[How you verified the change works — test output, manual steps, screenshots]
Reviewer notes: [Optional — anything you want the reviewer to know upfront]