Skip to content

fix(songwriting): adjudicate worksheets.md against Writing Better Lyrics chapters 2, 4, 5 - #2093

Merged
kyle-sexton merged 3 commits into
mainfrom
fix/worksheets-adjudicate-2009-chapters-2-4-5
Aug 9, 2026
Merged

fix(songwriting): adjudicate worksheets.md against Writing Better Lyrics chapters 2, 4, 5#2093
kyle-sexton merged 3 commits into
mainfrom
fix/worksheets-adjudicate-2009-chapters-2-4-5

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

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, and cliche.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.md vs 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.md vs Chapter 5 — its four families map to the chapter's four
    sections 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.md told the reader to give every core word five labelled rows:

For each core word:
- perfect:
- family:
- additive/subtractive:
- assonance:
- consonance:

Chapter 4's own worksheet — figures ATW and ATX, two full pages — is ten
numbered 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.md
owns — 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.md template was checked and never had the bucketed shape, so
the defect was isolated to this one file.

Verified correct and worth recording

  • The consonant-family chart (ATS — plosives / fricatives / nasals, split
    voiced and unvoiced, with the companions relationship) is carried faithfully
    in rhyme-types.md.
  • The chord-voicing analogy for rhyme stability — C in the bass, C/G, C/E,
    the chord with no C in the right hand, then E minor as "only a suggestion of
    home" — is carried in rhyme-types.md voicing by voicing, mapped onto the
    five rhyme types. worksheets.md correctly keeps only the resulting scale and
    points onward rather than restating it.
  • Chapter 5 is already bound at generation time. response-filter §1 runs a
    cliché-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 set
contains no collar, show-before-tell, worksheet, or cliché claim at all. Four
other sets reference cliché — co-write, diagnose, metaphor, rhyme — and
every 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.md is audited against 2009 Chapter 4 only. object-writing.md
carries material from Chapter 1 (audited earlier) and from sources beyond the
books; cliche.md is Chapter 5 throughout. As with meter.md and prosody.md,
none of these files is "audited" full stop.

Verification

  • typos --config _typos.toml — clean
  • markdownlint-cli2 — 0 errors over 103 files
  • lychee --offline --include-fragments — 0 errors, 692 OK
  • check-changelog-parity.sh --check / --check-bump origin/main /
    --check-order — all clean
  • validate-plugins.sh — passed
  • No skill body changed, so the skill-quality gate is unaffected

Related

🤖 Generated with Claude Code

…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>
@cursor

cursor Bot commented Aug 9, 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 9, 2026

Copy link
Copy Markdown
Contributor

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


Security review complete

  • Gather context (PR diff, changed files)
  • Review plugins/songwriting/.claude-plugin/plugin.json version bump
  • Review plugins/songwriting/CHANGELOG.md addition
  • Review plugins/songwriting/context/pat-pattison/research/worksheets.md content change
  • Post findings

No security issues found.

All three changed files are non-executable content:

  • plugin.json — a semver bump (0.7.30.7.4), no schema, permission, or trust-boundary change.
  • CHANGELOG.md — static prose describing the fix, no injected content.
  • worksheets.md — reference/context markdown consumed as documentation by a skill, not executed, not templated, and containing no credentials, tokens, URLs to fetch, or shell/command constructs.

No workflow files, hooks, .mcp.json entries, or scripts are touched by this PR, so the categories in scope for this review (injection surfaces, GitHub Actions trust-boundary issues, token/secret handling, permission widening, supply-chain pin changes) don't apply here — there's no code-execution or trust-boundary surface in this diff to review.

@claude

claude Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

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


Review complete

  • Gather context (diff, CLAUDE.md, changed files)
  • Understand the request
  • Review worksheets.md changes for source fidelity and correctness
  • Review CHANGELOG.md and plugin.json version bump
  • Post findings

This PR replaces worksheets.md's invented five-labelled-row rhyme layout with Chapter 4's actual single mixed-column shape, and adds a paragraph explaining why the mixing matters and where the placement decision belongs (rhyme-strategy.md). I checked the referenced files (rhyme-strategy.md, rhyme-types.md, rhyme-worksheets.md, worksheet-prompt.md) — all exist and the cross-references are accurate; worksheet-prompt.md does confirm it never had the bucketed shape, consistent with the PR body's claim. The plugin.json version bump (0.7.3 → 0.7.4) and the new CHANGELOG.md entry are consistent with each other.

One finding posted inline on worksheets.md lines 162–166:

  • The new layout drops the old image/idea notes: and keep / maybe / reject: rows along with the per-type buckets, but "Skill workflow" step 8 (line 206) still instructs marking each word keep/maybe/reject. There's no longer a field on the worksheet template for that annotation, so the template and the workflow step that acts on it are now out of sync. Worth a follow-up: either restore a lightweight annotation slot or reword step 8 so it doesn't imply a worksheet field that no longer exists.

No other correctness, architecture, or maintainability issues found in the diff. Security review is out of scope for this lane.

Note: typos, markdownlint-cli2, lychee, and check-changelog-parity.sh results cited in the PR description are author-claimed; I did not independently run them in this session.

@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: 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".

Comment thread plugins/songwriting/context/pat-pattison/research/worksheets.md Outdated
Comment thread plugins/songwriting/context/pat-pattison/research/worksheets.md
@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown

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

claude Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

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


Security review complete

  • Gather context (PR diff via gh pr diff 2093)
  • Review plugin.json version bump
  • Review CHANGELOG.md addition
  • Review worksheets.md content change
  • Post findings

No security issues found.

This PR touches three non-executable content files, +59/-19 total:

  • plugin.json — a semver bump (0.7.30.7.4) only. No schema, permission, or trust-boundary field touched.
  • CHANGELOG.md — static prose describing the fix. No links to fetch, no embedded scripts, no secrets.
  • worksheets.md — reference/context markdown consumed as documentation by a skill (not executed, not templated with variable substitution). I specifically checked this one for prompt-injection patterns, since it's markdown an agent reads as context — no hidden instructions, no directives aimed at the model reading it (ignore previous..., fake system:/assistant: turns, etc.), no HTML/script constructs, no URLs.

No workflow files, hooks, .mcp.json entries, permission grants, or dependency pins are touched by this PR, so the categories in scope for this review — injection surfaces, GitHub Actions trust-boundary issues, token/secret handling, permission widening, supply-chain pin changes — don't apply here. There's no code-execution or trust-boundary surface in this diff.

@claude

claude Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

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


Review complete

  • Gather context (PR diff, changed files, CLAUDE.md)
  • Review worksheets.md diff for correctness and consistency
  • Review CHANGELOG.md / plugin.json version bump
  • Check whether commit 7ce4c86 addressed the two prior review findings (Codex + Claude)
  • Post findings

Commit 7ce4c86 cleanly resolves both prior review findings:

  • Codex's finding (type-aware generation vs. type-neutral display) — now split explicitly. worksheets.md line 175 states "Search by type; record unsorted," and Skill workflow step 7 (line 213) restores the per-type search (perfect/family/additive/subtractive/assonance/consonance) while keeping the recorded output in one mixed column. Stage 3 (lines 99-115) is unchanged and still requires the full search.
  • My prior finding (dropped keep/maybe/reject field vs. step 8 instructing it) — step 8 (line 216) now reads "Parenthesise anything kept only as an alternate; drop the rest by leaving it off the page," which matches the new template's parenthetical convention instead of a field that no longer exists.

One new issue from this fix, posted inline on worksheets.md lines 168-173:

  • The new explanation treats freeze (wheel, shield), (re)born, and guarantee(s) as the same convention ("a word kept as an alternate rather than a first choice"), but the last two parenthesize an optional morpheme inside a single candidate, not a separate alternate word next to a first choice. Skill workflow step 8 only operationalizes the freeze-style case, leaving the (re)born / guarantee(s) case without an instruction that produces it. The same conflation is restated in the CHANGELOG.md entry.

plugin.json's version bump (0.7.3 → 0.7.4) and the CHANGELOG.md entry are internally consistent, and both link targets referenced from the new prose (rhyme-strategy.md, and the file's existing links to rhyme-types.md / rhyme-worksheets.md) exist in the repo. No architecture, error-handling, or test-coverage concerns apply to this content-only change — content correctness/maintainability is the relevant lane here, and the one finding above is the only outstanding item.

Note: I did not independently re-run typos, markdownlint-cli2, lychee, or check-changelog-parity.sh in this session — those results in the PR description are author-claimed and unverified by me. Security review is out of scope for this lane.

Comment thread plugins/songwriting/context/pat-pattison/research/worksheets.md Outdated
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

claude Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

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


Security review complete

  • Gather context (gh pr diff 2093 at HEAD 96ff70b)
  • Review plugin.json version bump
  • Review CHANGELOG.md addition
  • Review worksheets.md content change
  • Post findings

No security issues found.

This PR's final diff (+38/-18 in worksheets.md, +28/-0 in CHANGELOG.md, +1/-1 in plugin.json) touches only non-executable content:

  • plugin.json — semver bump 0.7.30.7.4 only. No schema, permission, or trust-boundary field touched.
  • CHANGELOG.md — static prose describing the fix. No embedded scripts, links to fetch, or secrets.
  • worksheets.md — reference/context markdown consumed as documentation by a skill, not executed and not templated. Checked specifically for prompt-injection patterns (this is markdown an agent reads as context at skill-run time): no hidden instructions directed at a model reader, no fake system:/assistant: turns, no HTML/script constructs, no external URLs — only relative links to sibling files in the same directory (rhyme-strategy.md, rhyme-types.md, rhyme-worksheets.md, object-writing.md, metaphor.md), all of which exist in the repo.

This latest commit (96ff70b) only splits the "alternates" vs. "optional morphemes" parenthetical explanation into two named conventions and updates workflow step 8 to cover both — a content-clarity change with no new surface: no code execution, no workflow/hook/.mcp.json changes, no permission or dependency changes, nothing that touches the categories in scope for this lane (injection surfaces, Actions trust boundaries, token/secret handling, permission widening, supply-chain pin changes).

@claude

claude Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

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


Review complete

  • Gather context (PR diff via gh pr diff 2093, changed files, CLAUDE.md)
  • Review worksheets.md diff for correctness/consistency with prior review threads
  • Review CHANGELOG.md / plugin.json version bump
  • Post findings

No new issues found. Commit 96ff70b (the latest push) cleanly resolves the outstanding finding from my prior review pass:

  • Conflated parenthetical conventions, now split. worksheets.md lines 168–175 now names two distinct conventions instead of one: Alternates (freeze (wheel, shield) — a whole word held behind a first choice) and Optional morphemes ((re)born, guarantee(s) — a prefix/suffix that may or may not apply). Skill workflow step 8 (line 222) now reads "Parenthesise alternates and optional morphemes," which covers both cases the layout section describes — the gap I flagged (step 8 only operationalizing the freeze-style case) is closed. The CHANGELOG.md entry (lines 26–32) was updated in the same commit and stays consistent with the file.

I also re-checked the two earlier findings (mine and Codex's) against the current HEAD and both remain resolved:

  • Type-aware generation vs. type-neutral display (Codex, P2): "Search by type; record unsorted" (line 181) and Skill workflow step 7 (lines 219–221) explicitly require the per-type search to still run, with only the recorded output unsorted.
  • Dropped keep/maybe/reject field vs. workflow step 8: step 8 now matches the template's parenthetical-only convention.

Checked that worksheet-prompt.md (the Essential Guide to Rhyming (2014) rhyme-worksheet template, routed to separately by the rhyme skill) still carries its own strong/usable/reject-watch labeling — that's a different worksheet from a different source (rhyme-worksheets.md's methodology), so it's not inconsistent with this PR's claim that Chapter 4's worksheet has no label field; I considered and ruled this out as a false lead rather than a real cross-file gap.

plugin.json's version bump (0.7.3 → 0.7.4) and the CHANGELOG.md entry remain internally consistent. No architecture, error-handling, or test-coverage concerns apply to this content-only change.

Note: I did not independently re-run typos, markdownlint-cli2, lychee, or check-changelog-parity.sh in this session — those results in the PR description are author-claimed and unverified by me. Security review is out of scope for this lane.

@kyle-sexton
kyle-sexton merged commit cba42e5 into main Aug 9, 2026
33 checks passed
@kyle-sexton
kyle-sexton deleted the fix/worksheets-adjudicate-2009-chapters-2-4-5 branch August 9, 2026 20:45
kyle-sexton added a commit that referenced this pull request Aug 10, 2026
…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>
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