Skip to content

chore: re-vendor the description-cap gate at v2.2.1, and drop dead cross-references - #22

Merged
wan-huiyan merged 2 commits into
mainfrom
fix/description-cap-accuracy-pass
Aug 5, 2026
Merged

chore: re-vendor the description-cap gate at v2.2.1, and drop dead cross-references#22
wan-huiyan merged 2 commits into
mainfrom
fix/description-cap-accuracy-pass

Conversation

@wan-huiyan

Copy link
Copy Markdown
Owner

1. Re-vendored the description-cap gate at context-police v2.2.1

The vendored copy's header claimed "at v2.2.0" and pointed at an upstream state a reviewer could not obtain. At the time it was written:

Three surfaces overstated that provenance, and the file's own docstring told the next contributor to "re-vendor from upstream" — which would have silently reverted the fix and turned CI red.

All of it is resolved by the same act: #6 merged as eedad0f, so this is now a plain re-vendor from a public commit. The code here was already byte-identical to v2.2.1 (this repo took the working-tree fix early); what was stale was the note.

The new header is machine-strippable (--8<-- markers) so a parity digest can be pinned mechanically rather than grepped for, and it records that 2.2.0/2.2.1 are context-police plugin versions, not git tags — upstream's newest tag is v2.0.0.

upstream commit  eedad0f
upstream sha256  f210ccd2feb4a3f76289e078bdc5621919ca657026f3d86cc5d7cb1201985fb0

Correction to the workstream handoff. It states the cap arithmetic changed in v2.2.1 and that every "N chars discarded" figure is one too low. It did not. desc_chars - (MAX_DESC_CHARS - 1) was already in 4dc1a62. The only behavioural delta is find_wrap_corruption(), which no longer reports a bogus BROKEN BY LINE-WRAP on description: >- skills (11 → 7 hits across ~/.claude/plugins/cache, all four dropped being false positives).

No version bump: nothing under a plugin source dir changed.

2. Dangling cross-references (second commit)

Every backticked identifier in a See-also / References / Sister-skills bullet was resolved against all 475 skill names reachable on this machine. Dead pointers to never-published siblings are removed.

Deliberately conservative:

  • Scoped to an explicitly vetted list of 32 identifiers, each re-confirmed to resolve nowhere immediately before deletion. A first pass keyed on "looks like a skill name" also deleted bullets containing the-project-repo and the-dashboard-service — a repo and a Cloud Run service. That pass was thrown away.
  • Scoped to cross-reference sections only; ## Notes bullets are prose, not pointers.
  • Bullets naming both a live and a dead skill keep the bullet and lose only the dead name — data-provenance-verifier survives where verify-plan-constants-against-data beside it did not.

0 descriptions changed, so no version bump and no cap/coverage figure moves.

Checks

38 SKILL.md (25 model-invocable, 13 disabled) · gate exit 0 in both text and --json

🤖 Generated with Claude Code

The vendored copy's header claimed "at v2.2.0" and pointed at an upstream state a
reviewer could not obtain: at the time it was written, scripts/check_skill_descriptions.py
did not exist on context-police main at all, the v2.2.0 code lived only on the open,
unmerged PR #6, and the local copy additionally carried a fix that was sitting
UNCOMMITTED in upstream's working tree. Three separate surfaces overstated that
provenance, and the file's own docstring told the next contributor to "re-vendor from
upstream" -- which would have silently reverted the fix and turned CI red.

All of that is resolved by the same act: #6 merged as eedad0f, so the fix is now on
upstream main and this is a plain re-vendor from a public commit. The code here was
already byte-identical to v2.2.1 (this repo had taken the working-tree fix early); what
was stale was the note.

The new header is machine-strippable (--8<-- markers) so a parity digest can be pinned
mechanically rather than grepped for, and it records what a version number here does and
does not mean: 2.2.0/2.2.1 are context-police plugin.json/marketplace versions, NOT git
tags. Upstream's newest tag is v2.0.0.

    upstream commit  eedad0f
    upstream sha256  f210ccd2feb4a3f76289e078bdc5621919ca657026f3d86cc5d7cb1201985fb0

NOTE, since the handoff for this workstream states otherwise: the cap arithmetic did NOT
change between v2.2.0 and v2.2.1. `desc_chars - (MAX_DESC_CHARS - 1)` was already in
4dc1a62. The only behavioural delta is find_wrap_corruption(), which no longer reports a
bogus BROKEN BY LINE-WRAP on skills written `description: >-`. So no "N chars discarded"
figure in this repo moves, and no version bump is warranted -- nothing under a plugin
source dir changed.

Verified: 38 SKILL.md (25 model-invocable, 13 disabled), gate exit 0 in both the text and
--json forms.
Every backticked kebab-case identifier in a See-also / References / Sister-skills
bullet was resolved against every SKILL.md reachable on this machine --
~/.claude/plugins/cache, ~/.claude/skills, and every repo under ~/Documents (475
distinct skill names). The ones below matched nothing anywhere: they point at
sibling skills that were never published, so a reader following them finds
nothing and cannot tell whether the skill is missing or they are.

Deliberately conservative, because the obvious sweep is wrong:

  - Scoped to an explicitly vetted list of 32 identifiers, each re-confirmed to
    resolve nowhere immediately before deletion -- not to whatever a regex
    happened to flag. A first pass keyed on "looks like a skill name" also
    deleted bullets containing `the-project-repo` and `the-dashboard-service`,
    which are a repo and a Cloud Run service. That pass was thrown away.
  - Scoped to cross-reference sections only. In ## Notes and ## Worked example
    the bullet is substantive prose that happens to name a skill; deleting it
    would remove content, not a pointer. Those are left alone.
  - Bullets naming BOTH a live and a dead skill keep the bullet and lose only
    the dead name -- e.g. `data-provenance-verifier` survives where
    `verify-plan-constants-against-data` beside it did not.

Frontmatter is never touched: 0 descriptions changed, so no plugin version bump
is needed and no cap/coverage figure moves.

Verified: gate exit 0 in both the text and --json forms, no BROKEN BY LINE-WRAP.
@wan-huiyan
wan-huiyan merged commit 40b2460 into main Aug 5, 2026
1 check passed
@wan-huiyan
wan-huiyan deleted the fix/description-cap-accuracy-pass branch August 5, 2026 15:41
wan-huiyan added a commit that referenced this pull request Aug 5, 2026
…ipped (#24)

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