Skip to content

feat(songwriting): restore Pat Pattison's verbatim text across the research files, and adjudicate chapter 4 - #2183

Merged
kyle-sexton merged 6 commits into
mainfrom
fix/songwriting-1991-ch4-rhyme
Aug 11, 2026
Merged

feat(songwriting): restore Pat Pattison's verbatim text across the research files, and adjudicate chapter 4#2183
kyle-sexton merged 6 commits into
mainfrom
fix/songwriting-1991-ch4-rhyme

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

Summary

Two things, and the first is the important one.

1. Reverses the "paraphrase only" rule. Every prior release of this plugin
was built under a rule that said never reproduce Pat Pattison's text — no
example lyrics, no exercise wording, no worked answers. That rule entered
through a session handoff and propagated through eight of them without ever
being checked with the repo owner, who owns all four books. It was actively
destroying the value of the reference: a summarized exercise is not an
exercise, and a described worked example is not an example. exercises.md
literally advertised that none of its numbered exercises were Pat's.

Pat's real text, examples, exercise wording, worksheet layouts and printed
answer keys are restored across 29 research files — roughly 9,000 lines.
Web-sourced passages (Berklee Online, patpattison.com, American Songwriter,
Coursera) stay paraphrased and stay marked unaudited, because those sources
are not in the corpus and nothing was invented to fill them.

2. A source-fidelity pass over Essential Guide to Lyric Form and Structure
(1991) Chapter 4 (Rhyme)
, read in full with all 40 of its figures at 3x
upscale, against rhyme-fundamentals.md and rhyme-strategy.md.

Defects found in Chapter 4

Two came only from the figures — they do not exist in the text layer at all.

  • The identity test asserted the opposite of the rule it was stating.
    rhyme-fundamentals.md said identity "matches conditions 1 and 2 and also
    matches 3" where condition 3 is "different consonant sound before the
    vowel."
    Identity fails condition 3 — that failure is the entire distinction.
    As written, the test passed every identity as a rhyme. Every other file in the
    plugin states the check correctly; this was the sole outlier.
  • abba was listed as a balanced pattern. The chapter uses abba as its
    explicit counterexample, and its printed exercise answer key marks abba
    open. A balanced system is closed by definition, so both sources agree it
    is neither. rhyme-strategy.md also contradicted itself, calling it
    "encloses" in one table and listing it under floating instability in another.
  • The balance-paradigm list was missing half the set — Pat prints six.
  • A feminine-rhyme example was mislabeled an identity.
  • Both files' image inventories omitted this chapter entirely. Fourth
    consecutive Book 1 chapter whose inventory concealed a defect.

Verified, no change needed

  • prosody.md's "1991 Chapter 3-4 (Structural Pentad)" citation holds; its
    standing "Chapter 4 unaudited" flag is cleared.
  • exercises.md's Chapter 4 block is complete, Ex 18-28, no numbering gap.
  • rhyme-types.md's page-scan inventory is genuine — every cited filename
    resolves against a fresh extraction.

Tooling

_typos.toml gains DUM as a case-sensitive identifier. "da DUM da DUM" is
standard scansion notation, now verbatim in four files, and the spell-checker
was rewriting it to "DUMB". Added at the canonical root per that file's own
policy note rather than as scattered inline suppressions.

Verification

All local gates green: typos, markdownlint-cli2 (103 files), lychee
(728 links), validate-plugins.sh, check-changelog-parity.sh --check-bump.

Version bumped to 0.8.5 with a per-fix CHANGELOG entry.

Related

No linked issue

kyle-sexton and others added 3 commits August 10, 2026 16:51
…to Lyric Form and Structure chapter 4

Read the 1991 rhyme chapter in full with all 40 of its figures at 3x
upscale, against rhyme-fundamentals.md and rhyme-strategy.md.

Removes eight lines of Pat's own example lyrics that were reproduced
verbatim in this public repository, plus a worked exercise answer.

Corrects the identity test, which said identity "also matches" the
condition it actually fails — as written it passed every identity as a
rhyme. Corrects abba, listed as balanced where the chapter uses it as
the counterexample and its printed exercise key marks it open, and
resolves rhyme-strategy.md's self-contradiction about the same scheme.
Restores the three missing balance paradigms.

Adds the chapter's five structural areas as a named set tied to the
Structural Pentad, and links through-written/fragmented to the rhythm
Paradigms they derive from.

Clears prosody.md's standing "Chapter 4 unaudited" flag; its Chapter 3-4
Pentad citation holds.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…across the research files

Reverses a "paraphrase only" rule that had propagated through eight
handoffs and was never checked with the repo owner, who owns all four
books. The paraphrasing was destroying the value of the guidance: a
summarized exercise is not an exercise, and a described worked example
is not an example.

Restores Pat's actual text, examples, exercise wording and printed
answer keys across 21 research files.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ing research files

Second wave of the paraphrase reversal: rhyme-types, song-forms,
worksheets, daily-practice, hook, bridge, and song-forms-examples.

rhyme-types.md now carries Pat's own definition wording and his actual
example word-pairs for every stability tier. daily-practice.md carries
the real 56-day seeds. exercises.md no longer advertises that its
exercises are paraphrases, because they no longer are.

Adds DUM to the canonical typos identifier list — "da DUM da DUM" is
standard scansion notation appearing verbatim in four files, and the
spell-checker was rewriting it to DUMB.

Web-sourced passages stay paraphrased and marked unaudited; nothing was
invented for sources outside the corpus.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@cursor

cursor Bot commented Aug 10, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@claude

claude Bot commented Aug 10, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 4m 42s —— View job


Review complete

  • Gather context (PR description, CLAUDE.md, AGENTS.md)
  • Fetch PR diff (gh pr diff 2183, origin/main unreachable in this shallow checkout — see note below)
  • Review changed research files for correctness, sourcing claims, and internal consistency
  • Review _typos.toml change
  • Review CHANGELOG/version bump
  • Post inline findings
  • Post summary

Note on methodology: this checkout is shallow and git fetch requires approval I don't have in this run, so git diff origin/main...HEAD failed with "no merge base." I used gh pr diff 2183 instead, which is equivalent. I don't have the source books, so I could not verify page/figure-level claims (exercise answer keys, image counts, etc.) against the physical text — those are author-claimed and unverified by me. What I did verify directly: internal consistency of the claimed fixes against the rest of each file's own content, the _typos.toml/plugin.json/CHANGELOG.md mechanics, and cross-references to other changed files.

Findings (posted inline)

  1. Triplicated worked example in rhyme-fundamentals.mdlines 609-644. The new verbatim Marvell/"Ozymandias" quote+analysis duplicates the paraphrase already at lines 330-338, and the pre-existing bullet at lines 646-651 restates the same Marvell point a third time, under a heading that says "two structural-ambiguity examples" but now effectively contains three passages spanning two different pairings (Marvell+Shelley vs. Marvell+Othello). Looks like the verbatim quote was prepended rather than substituted for the paraphrase it was restoring.
  2. Paraphrase now exceeds its own stated word caprhyme-fundamentals.md lines 89-93. The cheerleader-analogy paraphrase is annotated paraphrased ≤25w but the rewritten text is 28 words (the replaced version was 16). Minor, but the annotation is a load-bearing self-check elsewhere in this file (see line 44), so it's worth keeping accurate.

Both are mechanical/editorial issues from integrating new verbatim content alongside existing paraphrased summaries — not disputes with the rhyme-theory corrections themselves (identity-condition-3 fix, abba-is-open, the six-item balance-paradigm list, feminine-rhyme relabel) which read as internally consistent and are corroborated across rhyme-fundamentals.md, rhyme-strategy.md, and the untouched meter.md/five-compositional-elements.md cross-references.

Mechanics checked, no issues

  • _typos.toml: DUM added correctly under [default.extend-identifiers], alphabetically placed, annotated. This file is the canonical root per its own header comment, so it isn't subject to AGENTS.md's "synced files are overwritten" rule (that applies to files synced into this repo, not files this repo publishes outward).
  • plugin.json version (0.8.40.8.5) matches the new ## [0.8.5] CHANGELOG.md entry.
  • exercises.md's Chapter 4 block: spot-checked, runs Ex 18 → Ex 28 with no numbering gap, matching the PR's "verified, no change needed" claim.
  • Spot-checked abba framing across the other changed/adjacent files (meter.md, prosody.md, stable-unstable-meta.md, daily-practice.md, five-compositional-elements.md) — no contradictions with the corrected "open, not balanced" rule; the meter.md/prosody.md ABBA/In Memoriam usages are a distinct stress-based framework, as the PR description itself notes.

One thing worth a deliberate answer, not a blocker

This PR reverses a standing "paraphrase only" policy and restores ~9,000 lines of verbatim text from Pat Pattison's four commercial books into a plugin inside a repo whose own CLAUDE.md describes it as a plugin marketplace whose plugins must be "reusable, repo-agnostic, configurable by consumers, and safe in plugin form." The PR body frames this as being for the repo owner's own private use since they own the books, which is a reasonable call for the owner to make — I just want to flag explicitly that this plugin will now ship that verbatim text to anyone who installs it from the marketplace, not only the owner, in case that's not the intended distribution scope.
· Branch

@claude

claude Bot commented Aug 10, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 27s —— View job


Security review — PR #2183

  • Gather context (PR diff via gh pr diff 2183, changed files)
  • Review changed files for security issues
  • Post findings

No security issues found.

Scope of this PR: 31 files, all content/metadata — 29 markdown research files under plugins/songwriting/context/pat-pattison/research/ (restoring verbatim book text and adjudicating Chapter 4), plus CHANGELOG.md, a version bump in plugin.json, and a spell-check dictionary entry in _typos.toml. No workflow files, scripts, hooks, or MCP configs are touched, and none of the SKILL.md files that consume this research directory are modified — the consumer/trust boundary is unchanged.

What I specifically checked, given this content is loaded into agent context by the songwriting skills:

  • Prompt-injection payloads in the restored text — searched added lines for instruction-like phrasing ("ignore previous instructions", "you are now", "system prompt", etc.), shell/exec patterns (curl, wget, bash -c, subprocess, os.system, rm -rf), and script/markup injection (<script, javascript:, onerror=, eval(). None found — one incidental hit was a lyric line ("curl of smoke"), not a command.
  • Hidden/invisible Unicode (zero-width chars, bidi overrides, BOM) that could hide instructions from a human reviewer while still being parsed by a model — none present in added lines.
  • New URLs / external references — none added; the PR explicitly keeps web-sourced material paraphrased and out of scope for verbatim restoration.
  • _typos.toml change — adds a single case-sensitive dictionary entry (DUM = "DUM") with a comment explaining the scansion-notation rationale; no config/behavior beyond spell-check suppression.
  • plugin.json — version bump only (0.8.40.8.5), no manifest/permission/schema changes.

This is a low-risk, content-only PR relative to the plugin's trust boundary. Per the review lane's scope, I deferred to zizmor for any supply-chain/unpinned-action/trigger/permission findings (not applicable here anyway, since no workflow files changed).

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9c7ef72bdc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread plugins/songwriting/CHANGELOG.md
Comment thread _typos.toml Outdated
Comment thread plugins/songwriting/context/pat-pattison/research/rhyme-fundamentals.md Outdated
@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown

Claude has reviewed this PR 4 times. The lane skips further automatic reviews after 5; deleting this comment resets the count.

…d passages

A subagent caught that two of the three Chapter 4 answer keys I
transcribed were wrong. The keys are printed rotated 180 degrees at the
foot of each scan; reading them in place misreads them. Re-read from
cropped, rotated, 4x strips:

- Ex 23 item 7 is T, not F. Consecutive rhymes do not fragment when they
  follow an odd phrase count, which the chapter states outright.
- Ex 25's paired answers sit at items 5 and 8, not 6 and 9.
- Ex 24 re-verified unchanged, so the abba-is-open finding still stands.

Also removes three fabrications the paraphrase rule produced rather than
merely omitted: rhyme-types.md's invented weak-syllable examples,
form.md's invented transitional-bridge names plus a wrong Chapter 13
citation, and exercises.md's invented item counts.

bridge.md's four-times warning is corrected to v/v/ch/v/v/ch;
song-forms.md was right. exercises.md regains Ex 32 and 33, so the 1991
numbering runs 1-44 unbroken.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@claude

claude Bot commented Aug 10, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 28s —— View job


Security review — PR #2183 (re-run at HEAD 181ece6)

  • Gather context (PR diff, changed files)
  • Review changed files for security issues
  • Post findings

No security issues found.

This re-run covers the latest commit (181ece6, "correct two misread answer keys and three fabricated passages") in addition to the scope already reviewed on this PR. That commit touches only three files:

  • plugins/songwriting/CHANGELOG.md
  • plugins/songwriting/context/pat-pattison/research/form.md
  • plugins/songwriting/context/pat-pattison/research/rhyme-fundamentals.md

All three changes are plain-text corrections — fixing two misread answer-key values (T/F, U/D/E labels), replacing an invented 10-item alternative-name list with the source's actual 6-item list, and a changelog entry documenting both. No code, scripts, hooks, workflows, .mcp.json, or manifest files are touched by this commit. I checked the added text for instruction-like phrasing, shell/exec patterns, script/markup injection, and hidden Unicode — none present, consistent with the prior review's findings on this PR's earlier commits.

Scope unchanged from the prior security review pass on this PR: 31 files total across the full PR, all content/metadata (research markdown, CHANGELOG.md, plugin.json version bump, _typos.toml dictionary entry). No workflow files, scripts, hooks, or MCP configs are touched anywhere in this PR, so the consumer/trust boundary remains unchanged.

Non-security note carried over from Codex's review (out of scope for this security lane, but worth the repo owner's attention): copyright/reproduction-rights of the verbatim book excerpts being published to a public marketplace is a legal/licensing question, not a security vulnerability — flagging for awareness, not blocking on it here.
· Branch

@claude

claude Bot commented Aug 10, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2m 59s —— View job


Review complete

  • Gather context (PR description, CLAUDE.md, prior review threads, latest commit)
  • Fetch current diff and review changed files
  • Check whether prior review findings were addressed by the latest commit
  • Review remaining changed files for correctness / internal consistency
  • Post inline findings
  • Post summary

This is a synchronize re-review. The new commit (181ece6) only touches CHANGELOG.md, form.md, and rhyme-fundamentals.md — it corrects two misread Chapter 4 answer keys (Ex 23 #7, Ex 25 #5/#8) and rewrites form.md's transitional-bridge name list from ten fabricated entries down to the chapter's actual six. Both of those fixes are internally consistent and match the CHANGELOG's own description. I re-verified the CHANGELOG's other claims (rhyme-types.md's weak-syllable fabrications removed, bridge.md's "four times" warning correctly attached to v/v/ch/v/v/ch, exercises.md regaining Ex 32/33) against the current file contents — all hold, though those particular fixes landed in the prior commit (9c7ef72), not this one, so the commit message describes a slightly wider scope than its own diff.

Two findings from the previous review pass on this PR are still open (re-flagged inline against the current HEAD, since the latest commit didn't touch them):

  1. rhyme-fundamentals.md#L615-648 — the Marvell/"Coy Mistress" vs. Shelley/"Ozymandias" contrast is stated three times: a paraphrase at L330-341, the new verbatim quote+analysis at L615-648, and a bullet at L650-655 that restates the Marvell point a third time while pairing it with Othello instead. The "Two structural-ambiguity examples" heading no longer matches its own content.
  2. rhyme-fundamentals.md#L89-94 — the cheerleader-analogy paraphrase is tagged paraphrased ≤25w but runs 28 words.

Neither blocks the Chapter 4 rhyme-theory corrections themselves (identity-condition-3, abba-is-open, the six-item balance-paradigm list, feminine-rhyme relabel, and now the two corrected answer keys), which remain internally consistent across rhyme-fundamentals.md, rhyme-strategy.md, and the untouched cross-referencing files.

Mechanics checked, no issues

  • plugin.json version (0.8.5) matches the ## [0.8.5] CHANGELOG.md entry.
  • exercises.md Chapter 5 numbering: Ex 32/33 present, 31→32→33→34 unbroken.
  • bridge.md's "four times is a lot" warning correctly attached to v/v/ch/v/v/ch, matching song-forms.md.
  • rhyme-types.md's weak-syllable section correctly states the book supplies no definition/examples rather than inventing them.

Security review is out of scope for this lane per REVIEW.md's split — see the dedicated security-review comment on this PR.
· Branch

Comment thread plugins/songwriting/context/pat-pattison/research/rhyme-fundamentals.md Outdated
…stale paraphrase notice

exercises.md's header still told readers its exercises were paraphrased
summaries. They are not anymore, so the notice is now false and is
replaced with what the file actually carries.

Rewrites the seven remaining "Books 1 Chapter 4, 4 Chapters 1-9" style
citations into the title-plus-year form book-references.md requires,
across audit-checklist.md, bridge.md, rhyme-generation.md, and the
audit-checklist prompt template. The plugin now has no bare Book N
reference outside book-references.md itself, where it is the
counterexample.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@claude

claude Bot commented Aug 10, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2m 24s —— View job


Review complete

  • Gather context (PR description, prior review threads, latest commit at HEAD 5cb2802)
  • Determine what changed since the last reviewed commit (181ece6)
  • Check whether prior open findings were addressed
  • Review new commit for correctness / internal consistency
  • Post inline findings
  • Post summary

This is a synchronize re-review. The new commit (5cb2802, "retire the last forbidden Book N citations and the stale paraphrase notice") touches only five files: audit-checklist.md, bridge.md, exercises.md, rhyme-generation.md, and audit-checklist-prompt.md.

What it does, verified correct:

  • Rewrites seven remaining bare Book N Chapter M citations into the title-plus-year form book-references.md mandates. I checked each rewrite's book-number → title mapping against book-references.md's canonical table (Book 1 = Essential Guide to Lyric Form and Structure (1991), Book 2 = Writing Better Lyrics (2009), Book 3 = Songwriting Without Boundaries (2011), Book 4 = Essential Guide to Rhyming (2014)) — all seven map correctly, including the Book 3 "Chapter 4" → "Challenge 4" terminology fix in audit-checklist-prompt.md, which matches book-references.md's own DO example (Songwriting Without Boundaries (2011), Challenge 1, Day 5, not "Chapter").
  • I confirmed no bare Book N citation remains outside book-references.md itself (the file's own counterexample table) and CHANGELOG.md (historical/dated entries, not live citations, so out of scope for the convention).
  • exercises.md's header rewrite replaces the now-false "paraphrased ... without reproducing the book" notice with an accurate description; its claim about Ex 32/33 having been dropped matches what a prior commit on this PR already restored (independently spot-checked in an earlier review pass on this PR).

One new finding, posted inline: this commit's fixes have no corresponding CHANGELOG.md bullet under ## [0.8.5], unlike every other fix in this release (see inline comment on exercises.md).

Two findings from earlier review passes on this PR remain open — the commit reviewed here doesn't touch rhyme-fundamentals.md, so neither was addressed:

  1. Marvell/"Coy Mistress" vs. Shelley/"Ozymandias" is still stated three times in rhyme-fundamentals.md — paraphrase at L330-341, verbatim quote+analysis at L615-648, and a bullet restating it a third time (paired with Othello instead) at L650-655, under a heading that still says "Two structural-ambiguity examples."
  2. The cheerleader-analogy paraphrase at L89-94 is still tagged paraphrased ≤25w but runs 28 words.

I did not re-post inline comments for these two since they're already anchored on this PR from the prior review passes and unchanged — re-flagging them here as still-open rather than duplicating.

Mechanics checked, no issues

  • Citation rewrites are internally consistent with book-references.md's DO/DON'T table and canonical short-name list.
  • exercises.md's new header prose doesn't contradict anything else in the file.

Security review is out of scope for this lane — see the dedicated security-review comments on this PR.
· Branch

@claude

claude Bot commented Aug 10, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 32s —— View job


Security review — PR #2183 (re-run at HEAD 5cb2802)

  • Gather context (PR diff, prior review history on this PR)
  • Review latest commit's changes for security issues
  • Confirm scope/trust-boundary unchanged from prior passes
  • Post findings

No security issues found.

This re-run covers the latest commit (5cb2802, "retire the last forbidden Book N citations and the stale paraphrase notice") in addition to the scope already reviewed on this PR. That commit touches five files, all plain-text/prose edits:

  • plugins/songwriting/context/pat-pattison/research/audit-checklist.md
  • plugins/songwriting/context/pat-pattison/research/bridge.md
  • plugins/songwriting/context/pat-pattison/research/exercises.md
  • plugins/songwriting/context/pat-pattison/research/rhyme-generation.md
  • plugins/songwriting/context/pat-pattison/templates/audit-checklist-prompt.md

The change rewrites shorthand "Books N Chapter M" citations into the full title-plus-year form (book-references.md's required style), and updates exercises.md's header notice to reflect that exercises are now verbatim rather than paraphrased. No code, scripts, hooks, workflows, .mcp.json, or manifest files are touched. I checked the added text for instruction-like phrasing, shell/exec patterns, script/markup injection, and hidden Unicode — none present, consistent with the prior review passes on this PR.

Scope unchanged from prior security-review passes on this PR: all changed files across the full PR are content/metadata — research markdown, CHANGELOG.md, a plugin.json version bump, and a _typos.toml dictionary entry. No workflow files, scripts, hooks, or MCP configs are touched anywhere in this PR, so the consumer/trust boundary remains unchanged from the initial review.

Carried-over non-security note (out of scope for this lane, flagged for awareness only): the copyright/reproduction-rights question raised on this PR (publishing verbatim book excerpts to a public marketplace) is a legal/licensing concern, not a security vulnerability.
· Branch

Comment thread plugins/songwriting/context/pat-pattison/research/exercises.md
…de-duplicate the worked example

Reverts the DUM entry added to _typos.toml. That file is synchronized
from melodic-software/standards and AGENTS.md is explicit that a local
edit to a managed file is silently dropped on the next sync. The
scansion strips now use the inline spellchecker:off / spellchecker:on
convention that config itself blesses; a permanent fix belongs upstream.

Consolidates the Marvell / Shelley worked example in rhyme-fundamentals.md,
which appeared three times: the verbatim quotation had been prepended
rather than substituted for the paraphrase and bullet it was restoring.
It is now quoted once, with the other two positions referencing it.

Trims the cheerleader paraphrase back under the file's own declared
25-word cap.

Adds the missing CHANGELOG bullets for the citation pass and this one —
the parity gate only checks the version heading exists, not that each
fix has an entry.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@claude

claude Bot commented Aug 10, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 43s —— View job


Review complete

  • Gather context (PR description, prior review threads, latest commit at HEAD f68d04e)
  • Determine what changed since the last reviewed commit (5cb2802)
  • Check whether all four prior open findings were addressed
  • Review diff for correctness / internal consistency
  • Post inline findings (none needed — see below)
  • Post summary

This is a synchronize re-review. The new commit (f68d04e, "address review — revert the synced-config edit and de-duplicate the worked example") is a direct response to the review threads on this PR, and touches six files: _typos.toml, CHANGELOG.md, daily-practice.md, meter.md, prosody.md, rhyme-fundamentals.md.

All four previously-open findings are resolved. I verified each rather than just checking that files changed:

  1. Codex's _typos.toml synced-config finding — fixed. The DUM entry added in an earlier commit is fully reverted; I diffed the cumulative PR (gh pr diff 2183) and confirmed _typos.toml nets to zero change against origin/main across the whole branch. The three affected files (meter.md, prosody.md, daily-practice.md) now wrap every DUM scansion strip in / markers instead. I confirmed this pattern is already recognized by the synced _typos.toml's own extend-ignore-re ((?s).*?, line 20 — pre-dates this PR), and manually checked every DUM occurrence in all three files falls between a matching off/on pair, with markers correctly balanced (no unclosed or mismatched pairs, including the two pre-existing off/on spans already in meter.md at L1604 and L1614, which establish precedent for the convention). I could not run the typos binary itself in this environment to confirm end-to-end (not installed), so treat that last mile as unverified by me, but the regex match against the config's own pattern is unambiguous.
  2. Marvell/Shelley triplication in rhyme-fundamentals.md — fixed. Read the full section: the verbatim quotes now live once, under ### Two structural-ambiguity examples. The earlier paraphrase at the "Rhyme and flow" section (~L328) is trimmed to a two-sentence pointer that cross-references the anchor rather than restating the analysis, and the bullet list (~L650) now says "quoted above" instead of re-describing Marvell independently. The #two-structural-ambiguity-examples anchor resolves correctly against the heading. No more redundant statement of the same contrast.
  3. Word-cap overage — fixed. The cheerleader paraphrase at L89-93 is now 21 words (counted directly), under its declared ≤25w cap.
  4. Missing CHANGELOG bullets — fixed. CHANGELOG.md now has entries for both the citation-retirement commit and this fix-up commit, including the _typos.toml revert rationale and the exercises.md header fix, matching what actually landed.

No new issues found in this commit — it's a clean, targeted fix-up that does exactly what its commit message describes, with no scope creep.

Carried over from earlier passes (not new, not blocking)

  • The copyright/reproduction-rights question (verbatim book excerpts shipping to a public marketplace) raised by Codex and by an earlier Claude pass remains open — a legal/licensing judgment call for the repo owner, not a code-correctness defect, and outside this lane's scope.

Security review is out of scope for this lane — see the dedicated security-review comments on this PR.
· Branch

@claude

claude Bot commented Aug 10, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 46s —— View job


Security review — PR #2183 (re-run at HEAD f68d04e)

  • Gather context (diff since last reviewed commit 5cb2802)
  • Review latest commit's changes for security issues
  • Confirm scope/trust-boundary unchanged from prior passes
  • Post findings

No security issues found.

This re-run covers the latest commit (f68d04e, "address review — revert the synced-config edit and de-duplicate the worked example") on top of the scope already reviewed in prior passes on this PR. That commit touches six files, all content/config-comment edits:

  • _typos.toml — reverts the DUM dictionary-entry addition (this file is standards-synced; the fix moves the exception to inline spellchecker:off/spellchecker:on HTML comments instead, per Codex's earlier finding on this PR)
  • plugins/songwriting/CHANGELOG.md — documents both fixes in this commit
  • plugins/songwriting/context/pat-pattison/research/{meter,prosody,daily-practice}.md — wrap the existing scansion code blocks in `` comment pairs; no new content, purely a spell-checker suppression mechanism
  • plugins/songwriting/context/pat-pattison/research/rhyme-fundamentals.md — de-duplicates the Marvell/Shelley "Ozymandias" worked example flagged in a prior review pass (paraphrase now cross-references the single verbatim quotation instead of repeating it a third time); also trims the cheerleader-analogy paraphrase back under its declared ≤25w cap

I checked the spellchecker:off/spellchecker:on HTML comments and all other added text for instruction-like phrasing, shell/exec patterns, script/markup injection, and hidden Unicode — none present. These comments are inert markdown, consumed the same way as any other HTML comment in these files (not executable, not parsed as directives by anything other than the typos linter). No code, scripts, hooks, workflows, .mcp.json, or manifest files are touched by this commit — confirmed via git diff 5cb2802..f68d04e --name-only, which shows no .github/, .mcp.json, or plugin.json paths.

Scope unchanged from all prior security-review passes on this PR: every changed file across the full PR (33 files) is content/metadata — research markdown, CHANGELOG.md, a plugin.json version bump, and the _typos.toml change (now reverted). No workflow files, scripts, hooks, or MCP configs are touched anywhere in this PR, so the consumer/trust boundary remains unchanged from the initial review.

Carried-over non-security note (out of scope for this lane, flagged for awareness only): the copyright/reproduction-rights question raised earlier on this PR (publishing verbatim book excerpts to a public marketplace) is a legal/licensing concern, not a security vulnerability.
· Branch

@kyle-sexton
kyle-sexton merged commit 3584ae1 into main Aug 11, 2026
33 checks passed
@kyle-sexton
kyle-sexton deleted the fix/songwriting-1991-ch4-rhyme branch August 11, 2026 00:00
kyle-sexton added a commit that referenced this pull request Aug 11, 2026
…defect

Audits audit-checklist.md, bridge.md and every book-attributed block quote in
the research files, and measures how far the <br> line-break bug actually
reached.

audit-checklist.md was nearly half wrong. 192 lines carrying 26 chapter
citations and zero reproduced text — pure checkbox scaffolding attributed to
specific chapters. All 83 boxes were tallied against those chapters: 42
traceable, 15 distorted, 26 invented. Traceable boxes now quote Pat's actual
sentence, distorted ones are corrected, and invented ones are relabelled as the
file's own synthesis rather than deleted, so the owner can see which is which.
11 false section attributions fixed.

bridge.md opened on a bare uncited "A bridge isn't a verse." The sentence is
real but truncated; Pat's full Chapter 23 passage goes on to contrast bridge
against verse and chorus. Restored and cited, along with Exercises 49 and 50
which were entirely absent, plus two numbered lists that had been flattened
into prose run-ons. Also removed a fabricated alias pair — the file claimed
"channel" and "runway" as pre-chorus names; the figure lists only Pre-Chorus,
Climb or Lift, Vest, Verse Extension, Ramp and Prime. That one was catchable
only by reading the image.

Also fixes a fabricated quote in response-filter.md, a quote misattributed to
Chapter 1 that is really Chapter 5, and two couplets in cliche.md presented as
displayed stanzas when Pat quotes them inline, slash-separated.

The line-break damage is narrower than reported. It was flagged as potentially
affecting all ~9,000 lines restored in #2183. Measured across 1,109 consecutive
line-pairs in every quoted block in all 49 files, 27 candidates surfaced and
nearly all were legitimate — 14 are Pat's own deliberate split into eight short
phrases in phrasing.md, the rest are dialogue split per speaker, contrasted
variants, and a wrapped thesaurus entry. Only cliche.md needed correcting.

A proposed fix to hook.md was checked against the raw XHTML and rejected: there
is a <br> between every line there, so those are genuinely separate printed
lines and joining them would have introduced the corruption being hunted.

Two files were completed by a second toolchain after the output content filter
killed the agent working on them mid-task. Its output was verified against
source rather than trusted — it was wrong once, on the hook.md case above.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 17, 2026
…sub-threshold miss (#2905)

Closes #2865.

## What this fixes

`scripts/silent-revert-incidents.txt` pins a `clean` row that is
supposed to be the closest a non-incident got to the 200-line threshold
without crossing it — the row that breaks first if a threshold change
starts taxing ordinary development. The pinned commit was not that, and
its note named a number that is not a pull request.

**Defect 1 (the re-pin).** Measured over the file's own 500-commit
corpus (`7b47d2253~500..7b47d22`) at the pinned invocations (#2843,
`GIT_CONFIG_GLOBAL=/dev/null GIT_CONFIG_NOSYSTEM=1`), the pinned
`c8470efd0` scores **136** blamed lines — sixth-closest of the eight
commits in the 100–199 band. The true closest miss is **`9a2307c43`
(#2189) at 195 lines** from `3584ae1fa` (#2183) — a margin of 5 lines,
not the ~71 the old row implied. `9a2307c43` is now the lead `clean`
row.

**Defect 2 (the wrong PR number).** The old note credited the deleted
content to #2679, which is a closed issue in this repository, not a pull
request (`gh pr view 2679` cannot resolve it). The blamed lines trace to
`6370a44e7`, the squash commit that landed #2715 — `gh api
.../commits/6370a44e7/pulls` returns only #2715, and the commit's own
body says `Builds on merged #2715#2692#2690`. The row is kept as a
second guard with its note corrected, rather than dropped: it is still a
verified-legitimate quiet commit, and keeping it costs a few lines of
prose.

**Defect 3 (the "once a month" rate)** was already fixed by #2847, which
removed the rate claim from `scripts/check-silent-revert.sh` entirely.
Nothing in this PR touches it.

## What this does NOT do

Neither clean-row figure is CI-asserted, before or after this change.
`clean` rows carry no bracketed attribution field (#2879) — their
assertion is the absence of findings, which has no per-culprit count to
pin — so the 195 and 136 are hand-measured prose, not watched numbers.
The old row's recorded 129 drifting to a measured 136 under the pinned
invocations without anything going red is exactly that gap, and the
section comment now states it so a reader does not mistake the re-pin
for an assertion. Both counts are written as floors ("no fewer than")
because `attribute_file` drops `git blame`'s stderr (#2880), so any line
blame fails on is silently not counted.

## Verification

- Spot-checked both figures against PR #2843's pinned invocations before
editing: `9a2307c43` reproduces **195** (75 lines
`song-forms-examples.md`, 67 `box-model.md`, culprit `3584ae1fa`),
`c8470efd0` reproduces **136** (109 lines `persist-findings.md`, culprit
`6370a44e7`).
- `bash scripts/check-silent-revert.test.sh`: **101 passed, 0 failed**
on this branch.
- `scripts/check-silent-revert.sh --verify-known-incidents`: exit 0 —
all three `fires` rows reproduce their attributions exactly, and both
`clean` rows stay quiet.
- `scripts/check-silent-revert.sh --verify-restoration`: exit 0 — all 5
markers present.
- A fresh-context verifier independently swept all 500 corpus commits
twice (complete coverage: 487 `ok` + 2 `acknowledged` + 11 finding
commits = 500) and reproduced every figure in the file. Its verdict:
**195 at `9a2307c43` is the highest sub-threshold score** — the next
highest is 188 (`3d69448cb`) — so the lead `clean` row pins the true
closest miss. The two acknowledged commits were re-run with the ack file
disabled and score 447 and 323, both above the threshold, so neither
could displace it.

## Related

- #2843, #2847, #2873 — the three PRs that reshaped the canary and this
file ahead of this change; the figures here are measured under #2843's
pinned invocations.
- #2879 — records that `clean` rows carry no bracketed attribution
field, which is why neither figure in this PR is CI-asserted.
- #2880 — records that `attribute_file` drops `git blame`'s stderr,
which is why both counts are written as floors.
- #2831 / #2832 — the same wrong-PR-number defect shape, corrected
earlier on the `fires` rows.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01LwdkpWf6bptu3AqTMoeg2H

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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.

1 participant