Skip to content

fix: bump the three plugins whose SKILL.md files changed but never shipped - #24

Merged
wan-huiyan merged 1 commit into
mainfrom
fix/ship-stranded-crossref-removals
Aug 5, 2026
Merged

fix: bump the three plugins whose SKILL.md files changed but never shipped#24
wan-huiyan merged 1 commit into
mainfrom
fix/ship-stranded-crossref-removals

Conversation

@wan-huiyan

Copy link
Copy Markdown
Owner

PR #22 removed 12 dead cross-references from six SKILL.md files under plugins/ — shipped files — and bumped nothing. Its own commit body says "the gate here is CI-only (not under a plugin source dir), so no version bump." That was false for that commit. No description changed, but six shipped SKILL.md bodies did, across three plugins.

claude plugin update compares versions, saw equal, and did nothing.

Verified against the installed copies before writing this:

plugin installed files still carrying the dead refs
observational-analysis-rigor 1.2.1 4
overnight-multi-issue-implementation 1.2.1 1
overnight-review-panel-blocked-reviewer-reads-as-clean 1.0.0 2
diff repo/plugins/overnight-multi-issue-implementation/SKILL.md
     cache/…/overnight-multi-issue-implementation/1.2.1/SKILL.md   → differ

So 12 of this session's 32 cross-reference removals are fixed on main and still live for an installed user.

This is the exact failure recorded as "THE LESSON THAT ALMOST COST THE WHOLE THING" in the workstream handoff — a fix with no version bump is undeliverable — committed by the session that was cleaning up after it. The live-install gate did not catch it and could not: it measures cap and corruption, not repo-vs-install parity. Nothing else does either.

observational-analysis-rigor                            1.2.1 → 1.2.2
overnight-multi-issue-implementation                    1.2.1 → 1.2.2
overnight-review-panel-blocked-reviewer-reads-as-clean  1.0.0 → 1.0.1

No content change — versions only, so the already-merged edits can actually reach an install. Gate exit 0; all 8 marketplace entries agree with their plugin.json.

Worth a follow-up: a check that every commit touching plugins/** also touches that plugin's version — the only thing that would have caught this.

🤖 Generated with Claude Code

…ipped

PR #22 removed 12 dead cross-references from six SKILL.md files under
plugins/ -- shipped files -- and bumped nothing. Its own commit body says:

    "0 descriptions changed, so no version bump and no cap/coverage figure
     moves."
    "The gate here is CI-only (not under a plugin source dir), so no version
     bump."

The first sentence is true and irrelevant; the second is false for that commit.
No *description* changed, but six shipped SKILL.md bodies did, across three
plugins. `claude plugin update` compares versions, saw equal, and did nothing.

Verified against the installed copies before writing this:

    observational-analysis-rigor                     1.2.1  4 files still carry the dead refs
    overnight-multi-issue-implementation             1.2.1  1 file  still carries them
    overnight-review-panel-blocked-reviewer-reads-as-clean
                                                     1.0.0  2 files still carry them

    diff repo/plugins/overnight-multi-issue-implementation/SKILL.md
         cache/.../overnight-multi-issue-implementation/1.2.1/SKILL.md   -> differ

So 12 of this session's 32 cross-reference removals are fixed on main and
still live for an installed user.

This is the exact failure recorded as "THE LESSON THAT ALMOST COST THE WHOLE
THING" in the workstream handoff -- a fix with no version bump is
undeliverable -- committed by the session that was cleaning up after it. The
live-install gate did not catch it and could not: it measures cap and
corruption, not repo-vs-install parity. Neither does anything else.

    observational-analysis-rigor                            1.2.1 -> 1.2.2
    overnight-multi-issue-implementation                    1.2.1 -> 1.2.2
    overnight-review-panel-blocked-reviewer-reads-as-clean  1.0.0 -> 1.0.1

No content change in this commit -- versions only, so the already-merged edits
can actually reach an install. Gate exit 0; all 8 marketplace entries agree
with their plugin.json.

Worth a follow-up: a check that every commit touching `plugins/**` also touches
that plugin's version, which is the only thing that would have caught this.
@wan-huiyan
wan-huiyan merged commit 438ffc7 into main Aug 5, 2026
1 check passed
@wan-huiyan
wan-huiyan deleted the fix/ship-stranded-crossref-removals branch August 5, 2026 21:31
wan-huiyan added a commit that referenced this pull request Aug 6, 2026
…vernight run taught (1.3.0)

Source: a single overnight run of 17 items -- 20 merged PRs, 4 orchestrated
workflows, 91 subagents, ~11 hours. Every addition below is something that
cost real work on that night, not a guess about what might go wrong.

Seven additions to the SKILL body, all verified absent from 1.2.2 by grep
before splicing:

1. Never truncate a findings payload. Three reviewers returned six critical
   findings; the merging agent was handed
   `JSON.stringify(reviews).slice(0, 9000)` and five arrived. The sixth was
   cut mid-object and was the worst of the six. Three reviewers dispatched,
   three verdicts returned, findings commented on the PR, PR merged -- nothing
   looked wrong. Rules: never slice a findings list; make the merging agent
   report received-vs-answered and treat a mismatch as blocking; the run
   journal holds each agent's true return value when the orchestrator's own
   view was truncated. Same family as a green suite that ran zero tests.

2. Coordinating with sessions you do not control. The existing collision
   audits assume the other work is a branch you can diff. Increasingly it is
   another live agent session whose files are not committed. Claim your intent
   -- id, state, plain label, and the file list -- on a committed shared board
   before starting. It worked: a parallel session read the board, saw two of
   its three tasks already claimed, and did only the third. Append, never
   replace (two sessions each wrote a one-element array and the second erased
   the first). Don't drop the claim while your PRs are open. Nothing expires
   it, so take it down at the end.

3. Amend a running orchestration through a file on disk, not the script.
   Guardrail text is embedded in every agent prompt, so editing the script
   changes every call signature and a resume re-runs completed work instead of
   replaying from cache -- on this run that would have discarded eight
   finished PRs. Point the script at a plan file and append dated addenda.
   Check which phase is running first: an addendum after the last agent
   started is a note to nobody.

4. A third kind of collision neither pre-flight audit can see: the same piece
   of work, in two places, under two names, in a live session's uncommitted
   tree and declared against a different issue. Gate rather than parallelise,
   then extract the piece into a tested module and prove the refactor changed
   no result by diffing both paths' outputs.

5. The baseline numbers in your own brief go stale mid-run. A parallel PR
   re-derived the published test counts while the run was in flight; the
   guardrail text said 269, the truth became 314, and a later item quoted its
   own brief. Measure the baseline on your own rebase; never carry a count
   from a document. An item pasted a stale count inside the PR that existed to
   fix stale counts.

6. What an autonomous run may and may not decide. An assumption is a default,
   not a ruling, and never overrides a standing decision or a
   pre-registration. For pre-registered questions the conservative action is
   DISCLOSE, not COMPUTE. An un-run unit is "no result", not "inconclusive".
   Production changes only in the reverting direction and only on unanimous
   reviewer authorisation, asked as a separate explicit field. Merging its own
   PRs is a separate grant from changing production -- neither is implied by
   the instruction to implement.

7. A verbatim line for every reviewer prompt: "Check whether this change ships
   a fresh instance of the defect it repairs." Five of the twenty merged PRs
   did -- a correction to a figure with no corpus named printed a figure with
   no corpus named. It was the most common review finding of the night, ahead
   of ordinary regressions, and every instance was caught by someone
   re-deriving a number, never by reading the diff. Plus: dropping an honest
   positive is drift too.

Seams adjusted, not content rewritten: one connective sentence so the tier
rubric still reads as "below"; the new section's merge/production paragraph
now points at Phase C step 4 and the anti-patterns, which hold the
ask-before-merge line; the "don't auto-deploy" anti-pattern names the one
bounded exception the new section introduces, so the skill does not argue
against itself; the blocked-reviewer sister plugin is now listed in
References, since the body cites it. The draft's "a fourth collision" was
wrong -- the document establishes two (ID-level and file-level), so it is a
third.

Versions, in every place this repo records one -- the failure mode of #20/#21/
#24 is a content change that never ships because a version did not move:

    SKILL.md frontmatter                    1.2.0 -> 1.3.0  (had drifted; the
                                                             1.2.1 and 1.2.2
                                                             bumps were
                                                             manifest-only)
    plugins/.../.claude-plugin/plugin.json  1.2.2 -> 1.3.0
    .claude-plugin/marketplace.json         1.2.2 -> 1.3.0
    VERSION (bundle)                        1.2.1 -> 1.3.0

VERSION had also drifted a patch behind the plugins. release.yml's own comment
says to bump it in the same PR as the version bump, so it moves here and cuts
the v1.3.0 release.

No description changed. The gate reports overnight-multi-issue-implementation
at 1,463 chars with 73 to spare, identical to before this commit.

SKILL.md 553 -> 702 lines. Gates: description-cap exit 0, leak exit 0,
validate_plugins exit 0, listing budget fits at 1M context with 9,496 chars to
spare.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013JVMGELnoA2vM56Va4gLXE
wan-huiyan added a commit that referenced this pull request Aug 6, 2026
…vernight run taught (1.3.0)

Source: a single overnight run of 17 items -- 20 merged PRs, 4 orchestrated
workflows, 91 subagents, ~11 hours. Every addition below is something that
cost real work on that night, not a guess about what might go wrong.

Seven additions to the SKILL body, all verified absent from 1.2.2 by grep
before splicing:

1. Never truncate a findings payload. Three reviewers returned six critical
   findings; the merging agent was handed
   `JSON.stringify(reviews).slice(0, 9000)` and five arrived. The sixth was
   cut mid-object and was the worst of the six. Three reviewers dispatched,
   three verdicts returned, findings commented on the PR, PR merged -- nothing
   looked wrong. Rules: never slice a findings list; make the merging agent
   report received-vs-answered and treat a mismatch as blocking; the run
   journal holds each agent's true return value when the orchestrator's own
   view was truncated. Same family as a green suite that ran zero tests.

2. Coordinating with sessions you do not control. The existing collision
   audits assume the other work is a branch you can diff. Increasingly it is
   another live agent session whose files are not committed. Claim your intent
   -- id, state, plain label, and the file list -- on a committed shared board
   before starting. It worked: a parallel session read the board, saw two of
   its three tasks already claimed, and did only the third. Append, never
   replace (two sessions each wrote a one-element array and the second erased
   the first). Don't drop the claim while your PRs are open. Nothing expires
   it, so take it down at the end.

3. Amend a running orchestration through a file on disk, not the script.
   Guardrail text is embedded in every agent prompt, so editing the script
   changes every call signature and a resume re-runs completed work instead of
   replaying from cache -- on this run that would have discarded eight
   finished PRs. Point the script at a plan file and append dated addenda.
   Check which phase is running first: an addendum after the last agent
   started is a note to nobody.

4. A third kind of collision neither pre-flight audit can see: the same piece
   of work, in two places, under two names, in a live session's uncommitted
   tree and declared against a different issue. Gate rather than parallelise,
   then extract the piece into a tested module and prove the refactor changed
   no result by diffing both paths' outputs.

5. The baseline numbers in your own brief go stale mid-run. A parallel PR
   re-derived the published test counts while the run was in flight; the
   guardrail text said 269, the truth became 314, and a later item quoted its
   own brief. Measure the baseline on your own rebase; never carry a count
   from a document. An item pasted a stale count inside the PR that existed to
   fix stale counts.

6. What an autonomous run may and may not decide. An assumption is a default,
   not a ruling, and never overrides a standing decision or a
   pre-registration. For pre-registered questions the conservative action is
   DISCLOSE, not COMPUTE. An un-run unit is "no result", not "inconclusive".
   Production changes only in the reverting direction and only on unanimous
   reviewer authorisation, asked as a separate explicit field. Merging its own
   PRs is a separate grant from changing production -- neither is implied by
   the instruction to implement.

7. A verbatim line for every reviewer prompt: "Check whether this change ships
   a fresh instance of the defect it repairs." Five of the twenty merged PRs
   did -- a correction to a figure with no corpus named printed a figure with
   no corpus named. It was the most common review finding of the night, ahead
   of ordinary regressions, and every instance was caught by someone
   re-deriving a number, never by reading the diff. Plus: dropping an honest
   positive is drift too.

Seams adjusted, not content rewritten: one connective sentence so the tier
rubric still reads as "below"; the new section's merge/production paragraph
now points at Phase C step 4 and the anti-patterns, which hold the
ask-before-merge line; the "don't auto-deploy" anti-pattern names the one
bounded exception the new section introduces, so the skill does not argue
against itself; the blocked-reviewer sister plugin is now listed in
References, since the body cites it. The draft's "a fourth collision" was
wrong -- the document establishes two (ID-level and file-level), so it is a
third.

Versions, in every place this repo records one -- the failure mode of #20/#21/
#24 is a content change that never ships because a version did not move:

    SKILL.md frontmatter                    1.2.0 -> 1.3.0  (had drifted; the
                                                             1.2.1 and 1.2.2
                                                             bumps were
                                                             manifest-only)
    plugins/.../.claude-plugin/plugin.json  1.2.2 -> 1.3.0
    .claude-plugin/marketplace.json         1.2.2 -> 1.3.0
    VERSION (bundle)                        1.2.1 -> 1.3.0

VERSION had also drifted a patch behind the plugins. release.yml's own comment
says to bump it in the same PR as the version bump, so it moves here and cuts
the v1.3.0 release.

No description changed. The gate reports overnight-multi-issue-implementation
at 1,463 chars with 73 to spare, identical to before this commit.

SKILL.md 553 -> 702 lines. Gates: description-cap exit 0, leak exit 0,
validate_plugins exit 0, listing budget fits at 1M context with 9,496 chars to
spare.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013JVMGELnoA2vM56Va4gLXE
wan-huiyan added a commit that referenced this pull request Aug 6, 2026
…vernight run taught (1.3.0)

Source: a single overnight run of 17 items -- 20 merged PRs, 4 orchestrated
workflows, 91 subagents, ~11 hours. Every addition below is something that
cost real work on that night, not a guess about what might go wrong.

Seven additions to the SKILL body, all verified absent from 1.2.2 by grep
before splicing:

1. Never truncate a findings payload. Three reviewers returned six critical
   findings; the merging agent was handed
   `JSON.stringify(reviews).slice(0, 9000)` and five arrived. The sixth was
   cut mid-object and was the worst of the six. Three reviewers dispatched,
   three verdicts returned, findings commented on the PR, PR merged -- nothing
   looked wrong. Rules: never slice a findings list; make the merging agent
   report received-vs-answered and treat a mismatch as blocking; the run
   journal holds each agent's true return value when the orchestrator's own
   view was truncated. Same family as a green suite that ran zero tests.

2. Coordinating with sessions you do not control. The existing collision
   audits assume the other work is a branch you can diff. Increasingly it is
   another live agent session whose files are not committed. Claim your intent
   -- id, state, plain label, and the file list -- on a committed shared board
   before starting. It worked: a parallel session read the board, saw two of
   its three tasks already claimed, and did only the third. Append, never
   replace (two sessions each wrote a one-element array and the second erased
   the first). Don't drop the claim while your PRs are open. Nothing expires
   it, so take it down at the end.

3. Amend a running orchestration through a file on disk, not the script.
   Guardrail text is embedded in every agent prompt, so editing the script
   changes every call signature and a resume re-runs completed work instead of
   replaying from cache -- on this run that would have discarded eight
   finished PRs. Point the script at a plan file and append dated addenda.
   Check which phase is running first: an addendum after the last agent
   started is a note to nobody.

4. A third kind of collision neither pre-flight audit can see: the same piece
   of work, in two places, under two names, in a live session's uncommitted
   tree and declared against a different issue. Gate rather than parallelise,
   then extract the piece into a tested module and prove the refactor changed
   no result by diffing both paths' outputs.

5. The baseline numbers in your own brief go stale mid-run. A parallel PR
   re-derived the published test counts while the run was in flight; the
   guardrail text said 269, the truth became 314, and a later item quoted its
   own brief. Measure the baseline on your own rebase; never carry a count
   from a document. An item pasted a stale count inside the PR that existed to
   fix stale counts.

6. What an autonomous run may and may not decide. An assumption is a default,
   not a ruling, and never overrides a standing decision or a
   pre-registration. For pre-registered questions the conservative action is
   DISCLOSE, not COMPUTE. An un-run unit is "no result", not "inconclusive".
   Production changes only in the reverting direction and only on unanimous
   reviewer authorisation, asked as a separate explicit field. Merging its own
   PRs is a separate grant from changing production -- neither is implied by
   the instruction to implement.

7. A verbatim line for every reviewer prompt: "Check whether this change ships
   a fresh instance of the defect it repairs." Five of the twenty merged PRs
   did -- a correction to a figure with no corpus named printed a figure with
   no corpus named. It was the most common review finding of the night, ahead
   of ordinary regressions, and every instance was caught by someone
   re-deriving a number, never by reading the diff. Plus: dropping an honest
   positive is drift too.

Seams adjusted, not content rewritten: one connective sentence so the tier
rubric still reads as "below"; the new section's merge/production paragraph
now points at Phase C step 4 and the anti-patterns, which hold the
ask-before-merge line; the "don't auto-deploy" anti-pattern names the one
bounded exception the new section introduces, so the skill does not argue
against itself; the blocked-reviewer sister plugin is now listed in
References, since the body cites it. The draft's "a fourth collision" was
wrong -- the document establishes two (ID-level and file-level), so it is a
third.

An independent reviewer read the result against CONTRIBUTING.md and found
three things the splice had left broken. All three are fixed here:

- **"The observed run" was never defined anywhere in the shipped file.** Five
  new passages rest their evidence on it, including "five of twenty merged
  PRs", while the only run the file described was the 2026-05-08 chatbox
  session -- 2 PRs, ~6 hours, ~38 dispatches. A reader following the phrase
  landed on numbers that contradicted it, and the run that actually backs the
  prose lived only in the README and this message, neither of which ships to
  an installed user. The Overview now says which run the phrase means, and a
  second worked example at the end gives it, with each lesson traced to what
  it cost.
- **The production carve-out quietly removed the human.** The anti-pattern
  demands "human review for high-stakes changes"; the new exception permitted
  a change on "unanimous reviewer authorisation", and everywhere else in this
  file a reviewer is a subagent. As written the run could change production
  unattended but could not merge a PR without waking someone. Both ends now
  say it plainly: the reviewers are the run's own agents, no human is in the
  loop at 3am, that is why the direction bound comes first, and anything that
  is not a revert still waits for a person.
- **The stale-baseline lesson collided with the recipe three lines above it.**
  That recipe defines the baseline as a failing-set snapshot taken once,
  before the chain; the new text said to measure it "on its own rebase",
  which would absorb an earlier PR's regression and then print IDENTICAL over
  it. The two are now distinguished: the thing you must never quote from a
  document is the suite's headline count, not the pre-chain snapshot.

Two smaller ones from the same read: the companion-skill pointer had been
left below the new third-collision paragraphs, where it looked like it
covered them (it is branch-based, and the third kind is defined by having no
branch) -- moved above, and it now says so; and `resumeFromRunId` was named
without saying what provides it.

Two pre-existing anonymization scars in files this PR already touches, fixed
while here: "for the\nthe project" in SKILL.md:319 and "the project
propensity project" in README.md:58 are both the visible seam of an old
scrub, not identifiers.

Versions, in every place this repo records one -- the failure mode of #20/#21/
#24 is a content change that never ships because a version did not move:

    SKILL.md frontmatter                    1.2.0 -> 1.3.0  (had drifted; the
                                                             1.2.1 and 1.2.2
                                                             bumps were
                                                             manifest-only)
    plugins/.../.claude-plugin/plugin.json  1.2.2 -> 1.3.0
    .claude-plugin/marketplace.json         1.2.2 -> 1.3.0
    VERSION (bundle)                        1.2.1 -> 1.3.0

VERSION had also drifted a patch behind the plugins. release.yml's own comment
says to bump it in the same PR as the version bump, so it moves here and cuts
the v1.3.0 release.

No description changed. The gate reports overnight-multi-issue-implementation
at 1,463 chars with 73 to spare, identical to before this commit.

SKILL.md 553 -> 742 lines. Gates: description-cap exit 0, leak exit 0,
validate_plugins exit 0, listing budget fits at 1M context with 9,496 chars to
spare.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013JVMGELnoA2vM56Va4gLXE
wan-huiyan added a commit that referenced this pull request Aug 6, 2026
…vernight run taught (1.3.0) (#25)

Source: a single overnight run of 17 items -- 20 merged PRs, 4 orchestrated
workflows, 91 subagents, ~11 hours. Every addition below is something that
cost real work on that night, not a guess about what might go wrong.

Seven additions to the SKILL body, all verified absent from 1.2.2 by grep
before splicing:

1. Never truncate a findings payload. Three reviewers returned six critical
   findings; the merging agent was handed
   `JSON.stringify(reviews).slice(0, 9000)` and five arrived. The sixth was
   cut mid-object and was the worst of the six. Three reviewers dispatched,
   three verdicts returned, findings commented on the PR, PR merged -- nothing
   looked wrong. Rules: never slice a findings list; make the merging agent
   report received-vs-answered and treat a mismatch as blocking; the run
   journal holds each agent's true return value when the orchestrator's own
   view was truncated. Same family as a green suite that ran zero tests.

2. Coordinating with sessions you do not control. The existing collision
   audits assume the other work is a branch you can diff. Increasingly it is
   another live agent session whose files are not committed. Claim your intent
   -- id, state, plain label, and the file list -- on a committed shared board
   before starting. It worked: a parallel session read the board, saw two of
   its three tasks already claimed, and did only the third. Append, never
   replace (two sessions each wrote a one-element array and the second erased
   the first). Don't drop the claim while your PRs are open. Nothing expires
   it, so take it down at the end.

3. Amend a running orchestration through a file on disk, not the script.
   Guardrail text is embedded in every agent prompt, so editing the script
   changes every call signature and a resume re-runs completed work instead of
   replaying from cache -- on this run that would have discarded eight
   finished PRs. Point the script at a plan file and append dated addenda.
   Check which phase is running first: an addendum after the last agent
   started is a note to nobody.

4. A third kind of collision neither pre-flight audit can see: the same piece
   of work, in two places, under two names, in a live session's uncommitted
   tree and declared against a different issue. Gate rather than parallelise,
   then extract the piece into a tested module and prove the refactor changed
   no result by diffing both paths' outputs.

5. The baseline numbers in your own brief go stale mid-run. A parallel PR
   re-derived the published test counts while the run was in flight; the
   guardrail text said 269, the truth became 314, and a later item quoted its
   own brief. Measure the baseline on your own rebase; never carry a count
   from a document. An item pasted a stale count inside the PR that existed to
   fix stale counts.

6. What an autonomous run may and may not decide. An assumption is a default,
   not a ruling, and never overrides a standing decision or a
   pre-registration. For pre-registered questions the conservative action is
   DISCLOSE, not COMPUTE. An un-run unit is "no result", not "inconclusive".
   Production changes only in the reverting direction and only on unanimous
   reviewer authorisation, asked as a separate explicit field. Merging its own
   PRs is a separate grant from changing production -- neither is implied by
   the instruction to implement.

7. A verbatim line for every reviewer prompt: "Check whether this change ships
   a fresh instance of the defect it repairs." Five of the twenty merged PRs
   did -- a correction to a figure with no corpus named printed a figure with
   no corpus named. It was the most common review finding of the night, ahead
   of ordinary regressions, and every instance was caught by someone
   re-deriving a number, never by reading the diff. Plus: dropping an honest
   positive is drift too.

Seams adjusted, not content rewritten: one connective sentence so the tier
rubric still reads as "below"; the new section's merge/production paragraph
now points at Phase C step 4 and the anti-patterns, which hold the
ask-before-merge line; the "don't auto-deploy" anti-pattern names the one
bounded exception the new section introduces, so the skill does not argue
against itself; the blocked-reviewer sister plugin is now listed in
References, since the body cites it. The draft's "a fourth collision" was
wrong -- the document establishes two (ID-level and file-level), so it is a
third.

An independent reviewer read the result against CONTRIBUTING.md and found
three things the splice had left broken. All three are fixed here:

- **"The observed run" was never defined anywhere in the shipped file.** Five
  new passages rest their evidence on it, including "five of twenty merged
  PRs", while the only run the file described was the 2026-05-08 chatbox
  session -- 2 PRs, ~6 hours, ~38 dispatches. A reader following the phrase
  landed on numbers that contradicted it, and the run that actually backs the
  prose lived only in the README and this message, neither of which ships to
  an installed user. The Overview now says which run the phrase means, and a
  second worked example at the end gives it, with each lesson traced to what
  it cost.
- **The production carve-out quietly removed the human.** The anti-pattern
  demands "human review for high-stakes changes"; the new exception permitted
  a change on "unanimous reviewer authorisation", and everywhere else in this
  file a reviewer is a subagent. As written the run could change production
  unattended but could not merge a PR without waking someone. Both ends now
  say it plainly: the reviewers are the run's own agents, no human is in the
  loop at 3am, that is why the direction bound comes first, and anything that
  is not a revert still waits for a person.
- **The stale-baseline lesson collided with the recipe three lines above it.**
  That recipe defines the baseline as a failing-set snapshot taken once,
  before the chain; the new text said to measure it "on its own rebase",
  which would absorb an earlier PR's regression and then print IDENTICAL over
  it. The two are now distinguished: the thing you must never quote from a
  document is the suite's headline count, not the pre-chain snapshot.

Two smaller ones from the same read: the companion-skill pointer had been
left below the new third-collision paragraphs, where it looked like it
covered them (it is branch-based, and the third kind is defined by having no
branch) -- moved above, and it now says so; and `resumeFromRunId` was named
without saying what provides it.

Two pre-existing anonymization scars in files this PR already touches, fixed
while here: "for the\nthe project" in SKILL.md:319 and "the project
propensity project" in README.md:58 are both the visible seam of an old
scrub, not identifiers.

Versions, in every place this repo records one -- the failure mode of #20/#21/
#24 is a content change that never ships because a version did not move:

    SKILL.md frontmatter                    1.2.0 -> 1.3.0  (had drifted; the
                                                             1.2.1 and 1.2.2
                                                             bumps were
                                                             manifest-only)
    plugins/.../.claude-plugin/plugin.json  1.2.2 -> 1.3.0
    .claude-plugin/marketplace.json         1.2.2 -> 1.3.0
    VERSION (bundle)                        1.2.1 -> 1.3.0

VERSION had also drifted a patch behind the plugins. release.yml's own comment
says to bump it in the same PR as the version bump, so it moves here and cuts
the v1.3.0 release.

No description changed. The gate reports overnight-multi-issue-implementation
at 1,463 chars with 73 to spare, identical to before this commit.

SKILL.md 553 -> 742 lines. Gates: description-cap exit 0, leak exit 0,
validate_plugins exit 0, listing budget fits at 1M context with 9,496 chars to
spare.


Claude-Session: https://claude.ai/code/session_013JVMGELnoA2vM56Va4gLXE

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