Skip to content

Housekeeping: two rename leftovers, and documents that had drifted fr… - #8

Merged
SuperInstance merged 1 commit into
masterfrom
claude/init-1wgqn0
Aug 18, 2026
Merged

Housekeeping: two rename leftovers, and documents that had drifted fr…#8
SuperInstance merged 1 commit into
masterfrom
claude/init-1wgqn0

Conversation

@SuperInstance

Copy link
Copy Markdown
Owner

…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.

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]


  • Tests added/updated
  • Docs updated (if behavior changed)
  • No breaking changes (or changelog entry added)
  • CI/CD passes

Reviewer notes: [Optional — anything you want the reviewer to know upfront]

…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
@SuperInstance
SuperInstance merged commit c0b5047 into master Aug 18, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants