fix(songwriting): adjudicate worksheets.md against Writing Better Lyrics chapters 2, 4, 5 - #2093
Conversation
…s.md The file told the reader to give every core word five labelled rows, one per rhyme type. Chapter 4's own worksheet is ten numbered core words each heading a single undifferentiated column with every type mixed together. The mixing is the mechanism, not an accident of layout. One field is scanned once and the candidates compete on what they mean for the lyric. Five labelled rows turn one choice into five sub-choices and invite filling each to a quota, which generates to a target instead of generating a surplus to reject most of. Rhyme type is a placement decision — where a candidate lands, which rhyme-strategy.md owns — so sorting at generation time front-loads a question that belongs after the column exists. Chapters 2 and 5 were read in full against object-writing.md and cliche.md and needed no change. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
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 finished @kyle-sexton's task in 47s —— View job Security review complete
No security issues found. All three changed files are non-executable content:
No workflow files, hooks, |
|
Claude finished @kyle-sexton's task in 2m 7s —— View job Review complete
This PR replaces One finding posted inline on
No other correctness, architecture, or maintainability issues found in the diff. Security review is out of scope for this lane. Note: |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2b2477c239
ℹ️ 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".
|
Claude has reviewed this PR 3 times. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
"Rhyme type is a placement decision, not a generation one" overreached and contradicted the same file's Stage 3, which searches each type separately — those are different lookups and skipping one loses candidates. Only the recording is unsorted; the searching is still per-type. Dropping the per-type buckets also dropped the keep/maybe/reject and notes rows while the workflow step that marks each word stayed. The chapter's worksheet has neither field: its only annotation is parentheses for a word kept as an alternate, and rejection happens by not writing the word down. Both the template and the step now carry that. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 1s —— View job Security review complete
No security issues found. This PR touches three non-executable content files, +59/-19 total:
No workflow files, hooks, |
|
Claude finished @kyle-sexton's task in 2m 41s —— View job Review complete
Commit
One new issue from this fix, posted inline on
Note: I did not independently re-run |
freeze (wheel, shield) holds a whole alternate word behind a first choice sharing its vowel — Stage 2's duplicate-vowel rule on the page. (re)born and guarantee(s) parenthesize an optional morpheme, recording two rhyme candidates in one entry. Presenting them as one convention taught neither. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 49s —— View job Security review complete
No security issues found. This PR's final diff (+38/-18 in
This latest commit ( |
|
Claude finished @kyle-sexton's task in 2m 29s —— View job Review complete
No new issues found. Commit
I also re-checked the two earlier findings (mine and Codex's) against the current HEAD and both remain resolved:
Checked that
Note: I did not independently re-run |
…g against Writing Better Lyrics chapters 20-24 + appendix (#2114) Continues the per-chapter source-fidelity pass. **Chapters 20-24 and the Appendix of *Writing Better Lyrics* (2009)** read in full — Chapter 20 with its figure, Chapter 21 across all four of its split spine items, Chapter 24 with both of its figures. **This finishes Book 2.** Paraphrase only; no chapter prose, example writes, or student work reaches this public repository. Two scopes, two commits, two version bumps: **0.8.1** (Ch 20-23 vs `song-forms.md` / `form.md`) and **0.8.2** (Ch 24 + Appendix vs `process.md` / `co-writing.md` / the co-write opener template). ## The main finding `song-forms.md` carried a **late-appended block that restated the Chapter 22 and 23 repair strategies and got four of the six wrong** — each one contradicting the correct statement earlier in the same file: | Strategy | The block said | The chapter says | |---|---|---| | Ch 22 repair 3 | Give four verses four different jobs | Merge two verses into one that shifts internally — **two** verses result | | Ch 22 repair 2 | "Same content," recast structurally | Change structure **and** the kind of information | | Ch 23 alt 2 | Verse three still builds normally | The bridge **replaces** the third verse | | Ch 23 alt 1 → 3 | Convert to AABA by **dropping** the third verse | Convert to AABA precisely so all three verse ideas **survive** | The first is the consequential one: a writer following it keeps the `v/v/ch/v/v/ch` shape that Chapter 22 exists to dismantle. The fourth inverts the condition that selects the form. Each repair now states its resulting form explicitly, so the two descriptions in the file cannot silently drift apart again. ## Also fixed - **"Four times is a lot."** was attributed to *Essential Guide to Lyric Form and Structure* (1991) Chapter 6 and labelled a paraphrase. It is verbatim from *Writing Better Lyrics* (2009) Chapter 22. The claim that the 1991 chapter shares the warning is left standing but flagged unverified — that chapter has not been read yet. - **"Im(potent) Packages"** parenthesised the wrong half of Pat's pun. ## Added Five claims the files were missing, all checked against the chapters: - `form.md` — Pattison names both readings of form-follows-function: on one section it *is* prosody, on two compared sections it *is* contrast. The mechanics were present; the link to the plugin's own prosody vocabulary was not. - `form.md` — the musical-bar mechanism behind the "Years" chorus. The stress arithmetic (6 and 6) was there, but the prosody is in the setting: both groups get four bars, so three phrases occupy the space two had and the final phrase compresses to one bar exactly where the lyric says time moves fastest. - `form.md` — a contrast-audit caution from the "Southern Comfort" chorus: three-stress phrases and a "3+" opening can look like contrast while still leaning toward the verse's common meter. - `song-forms.md` — an AABA song's last system is **bridge/verse**, not a lone verse (Ch 23); diagnose an unearned return across the whole B-to-final-A unit. - `song-forms.md` — the cost Ch 23 attaches to its first alternative: returning to a full verse before the last chorus can still read as long. ## Checked and found correct `form.md`'s Chapter 20/21 coverage is otherwise accurate — the balance rule keeps its two qualifiers, the four balance jobs match, the "Exercises to preserve" list already carries Ch 20's Exercise 44 and Ch 21's three-verse condition. `phrasing.md` and `bridge.md` were checked and needed no change. The image-inventory claims are now verified rather than assumed: Ch 20 links `image_rsrcAUG` (a verse/chorus rhyme-column comparison), and Chapters 21-23 link no images. ## Chapter 24 + Appendix (0.8.2) **The Appendix finding is an attribution one.** The No-Free-Zone method was credited to Pat throughout `co-writing.md` and the printable session opener. It is **Stan Webb's** — he taught it to Pat in Pat's first professional co-write, and the Appendix thanks him by name. Pat carried it into Berklee and added two of the four rules (stay inside the song; no technical talk). Both files now credit Webb. Two more in the same area: - **The opener collapsed Webb's two distinct rules into one.** "Say everything" and "nobody says no / silence means more" do different jobs; merging them left "write crap" occupying a numbered slot as though it were a third rule rather than the encouragement attached to the first two. - **`co-writing.md` contradicted itself on solo application** — one section says two of four rules apply when writing alone, another says all four. The Appendix supports the looser reading, so the disagreement is now stated with its evidence instead of left for a reader to hit. Chapter 24 contributed material that existed nowhere in the plugin: five named rhyme-rejection criteria (including the "seems to mean more than it conveys" clunker test), the rule that the rhyming syllable must carry primary rather than secondary stress, **pattern lock** as a named failure mode (the chapter's bridge came out in the verses' meter on autopilot, and it catches itself borrowing a specific Paul Simon bridge), and the form option that **lost** — dumping a verse is tested first and rejected on cause. `image_rsrcAUJ.jpg` turned out to be load-bearing: the prose lists the worksheet's five column headings and nothing under them, so the columns exist only in the figure — which independently confirms the one-undifferentiated-column-per-core-word layout that 0.7.4 established in `worksheets.md`. ## Verification `typos`, `markdownlint-cli2`, `lychee --offline --include-fragments` (729 links, 0 errors), `validate-plugins.sh`, and `check-changelog-parity.sh` (`--check`, `--check-order`, `--check-bump origin/main`) all pass. Context-file and template only, so the skill-quality gate does not apply. Two review findings on the earlier commits were fixed in place: a P2 where a new contrast note asserted an "eight lines" verse count that collided with an emphatic seven-phrase claim in `song-forms-examples.md` (the 2009 and 1991 books genuinely read that verse two ways, so the note now asserts neither count), and a P3 bare surname that broke this file's title-only attribution convention. Plugin bumped to **0.8.1** then **0.8.2**. A 0.8.0 landed on `main` mid-branch (the skill frontmatter `name` removal); this branch was renumbered accordingly and `main` was merged in, so the gates above were re-run after the merge. ## Related No linked issue — this is a turn of the standing per-chapter source-fidelity pass over the Pattison context files. - #2093 (0.7.4, Chapters 2/4/5), #2071 (0.7.3, Chapters 18-19), #2063 (0.7.2, Chapters 14-17) — prior turns of the same pass. - #2061 — plugin cache is keyed by version number, not commit; until it is fixed, testing 0.8.2 in a running session needs an uninstall/install/enable cycle. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
No linked issue — the defect this PR fixes was found by the pass itself, not
filed ahead of it.
Sixth session of the chapter-by-chapter source-fidelity pass. Writing Better
Lyrics (2009) Chapters 2 (Rusty's Collar), 4 (Learning to Say No: Building
Worksheets), and 5 (Clichés) read in full, all eight figures rendered, against
object-writing.md,worksheets.md, andcliche.md. Plugin 0.7.3 → 0.7.4.Paraphrase only — no chapter prose, no example writes, no student work. Chapter
3 was audited in an earlier session, so this closes the book's opening block.
Two of the three files were already correct
Worth stating plainly, because it is the first time in this pass that a chapter
read produced no change at all:
object-writing.mdvs Chapter 2 — faithful on every load-bearing point:the Sister Mary Elizabeth rule, the collar as the concrete thing held up
first, the dye-drips-downward mechanic, the placement consequence (colors drip
down, not up, so a late collar leaves the opening under-coloured), and the
cliché-substitution warning drawn from the chapter's own beige-rewrite
demonstration.
cliche.mdvs Chapter 5 — its four families map to the chapter's foursections exactly and in order, the universal-is-not-generic distinction is the
chapter's own, and friendly clichés, draft-stage placeholders, and
"most cliché rhymes are perfect rhymes, so stretch into imperfect types" all
land. Its inventories are described as territories rather than copied, which
is the licensing constraint working as intended.
The worksheet layout was invented
worksheets.mdtold the reader to give every core word five labelled rows:Chapter 4's own worksheet — figures
ATWandATX, two full pages — is tennumbered core words, each heading one undifferentiated column with every
rhyme type mixed together. Under
risk: cliff, fist, kissed, stiff, itch,pitch, drift, switch, shift, pinched, chips. Perfect, family, additive and
assonance candidates sit side by side, unlabelled.
This is not cosmetic, and it works against what the chapter is for. The
worksheet exists to produce enough options that the writer can say no — the
chapter's framing is a musician with enough gigs to turn down the bad ones. A
single field is scanned once and the candidates compete on what they mean for
this lyric. Five labelled rows turn one choice into five sub-choices and invite
filling each row to a quota, which is generating to a target rather than
generating a surplus in order to discard most of it.
The type labels are also downstream information. Which rhyme type a candidate is
matters when deciding where it lands — the stability question
rhyme-strategy.mdowns — not while the column is being built. Sorting at generation time front-loads
a decision that belongs after.
Fixed by carrying the chapter's actual shape, stating why the mixing matters, and
pointing the placement question at the file that owns it. The
worksheet-prompt.mdtemplate was checked and never had the bucketed shape, sothe defect was isolated to this one file.
Verified correct and worth recording
ATS— plosives / fricatives / nasals, splitvoiced and unvoiced, with the companions relationship) is carried faithfully
in
rhyme-types.md.the chord with no C in the right hand, then E minor as "only a suggestion of
home" — is carried in
rhyme-types.mdvoicing by voicing, mapped onto thefive rhyme types.
worksheets.mdcorrectly keeps only the resulting scale andpoints onward rather than restating it.
response-filter§1 runs acliché-pair scan with an inline flag list; §2 runs a cliché scan and a
friendly-cliché test. Nothing to add.
Step 5 — evals
Not empty this time, but nothing asserts the defect.
object-writing's eval setcontains no collar, show-before-tell, worksheet, or cliché claim at all. Four
other sets reference cliché —
co-write,diagnose,metaphor,rhyme— andevery one is consistent with Chapter 5, which this pass found correct. No eval
encodes a worksheet-shape claim, so the layout fix asserts nothing back.
One observation for the remaining passes: the file whose chapter was audited
here owns an eval set that says nothing about that chapter, while the chapter
that is encoded (Chapter 5's cliché material) is encoded across four skills
that do not own it. Eval coverage does not track file ownership.
Scope warning
worksheets.mdis audited against 2009 Chapter 4 only.object-writing.mdcarries material from Chapter 1 (audited earlier) and from sources beyond the
books;
cliche.mdis Chapter 5 throughout. As withmeter.mdandprosody.md,none of these files is "audited" full stop.
Verification
typos --config _typos.toml— cleanmarkdownlint-cli2— 0 errors over 103 fileslychee --offline --include-fragments— 0 errors, 692 OKcheck-changelog-parity.sh--check/--check-bump origin/main/--check-order— all cleanvalidate-plugins.sh— passedRelated
precisely this session: the installed
0.7.3/cache directory holds asnapshot of an intermediate commit, carrying the first prosody commit and
neither the
response-filterbinding nor the review fixes that replaced it. Aversion bump alone does not deliver final content when the version was
installed mid-branch. Not closed here.
🤖 Generated with Claude Code