Adapt CultureMech's review-open-issues skill to this site - #103
Merged
Merged
Conversation
CultureMech has a full-queue triage skill built around its corpus: data layers, gate baselines in its justfile, SSSOM identity, ontology grounding. The shape transfers; almost none of the content does, because the defects here are a different kind. This site's bugs are wrong claims on public pages, not wrong chemistry in a record. So the layer graph is the fleet pipeline (census → subsets → data → stats → assemble → Pages) with the hand-curated card layer alongside it, and the stop-the-line list is about published claims: a wrong number or licence on a page other work cites, a dead link, an enumeration short of the fleet, a partial pipeline run that dates the page to one run over data from another. Three things are worth writing down because they have each produced a wrong conclusion here, and none is guessable from the code: The three numbers. A published-site total, a local-checkout count and a census count are different facts with different refresh rules, and they legitimately disagree — CultureMech publishes 6,286 merged canonical media and serves 15,878 normalized records from the same site; CommunityMech's hero counts kb/communities while the fleet glob also takes the four data/isolates records, so the two can never match. Most numeric issues in the queue are one mistaken for another. A page can contradict its own data. ProteinTraitsMech ships 408,978 as static HTML and overwrites it at runtime from facets.json, which serves 429,291, so a scraper and a visitor disagree. CultureMech's 10,657 tile matches no data layer at all. Read what the page renders, and fetch the pages/ URL directly since several Mech roots are meta-refresh shells that return 200. A passing test may be unable to fail. Two guards here passed against the very regression they named — one because setUp had already clobbered the file the assertion compared, one because its only real teeth were a timeout that a small fixture never trips. The skill says to mutation-test before crediting a gate, and to do it with a fast fixture. The measurement-discipline section keeps only the traps that have actually fired here: rg skipping gitignored files when proving absence, --no-ignore not being a grep flag so the && chain skips silently, emoji heading ids needing the deployed HTML, generated mechs.md versus its sources, and argument evaluation order being load-bearing in prefix_census.main(). Every path, CI step and figure cited was checked against the repository and the live site before committing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
realmarcin
added a commit
that referenced
this pull request
Sep 22, 2026
realmarcin
added a commit
that referenced
this pull request
Sep 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
.claude/skills/review-open-issues/SKILL.md, adapted from the skill of the same name inCultureMech.What transferred, and what didn't
The shape transferred: full-queue sweep rather than first-page sampling, a dependency graph before ranking, P0/P1/P2 with a separate readiness axis, evidence-over-vibes for every CLOSE, a read-only mutation boundary.
Almost none of the content did. CultureMech's version is built around its corpus — data layers,
justfilegate baselines, SSSOM identity, ontology grounding. The defects here are a different kind: wrong claims on public pages, not wrong chemistry in a record. So:mechs.mdhand-edited so the next assembly reverts it, a partial pipeline run;Three things worth writing down
None is guessable from the code, and each has produced a wrong conclusion here.
The three numbers. A published-site total, a local-checkout count and a census count are different facts with different refresh rules, and they legitimately disagree. CultureMech publishes 6,286 merged canonical media and serves 15,878 normalized records from the same site. CommunityMech's hero counts
kb/communitieswhile the fleet glob also takes the fourdata/isolatesrecords — verified inroots.py— so the two can never match. Most numeric issues in the queue are one mistaken for another.A page can contradict its own data. ProteinTraitsMech ships
408,978as static HTML and overwrites it at runtime fromfacets.json, which serves 429,291; a scraper and a visitor disagree. CultureMech's10,657tile matches no data layer at all. And several Mech roots are meta-refresh shells returning 200, socurl -Lnever reaches the real page.A passing test may be unable to fail. Two guards in this repository passed against the very regression they named — one because
setUphad already clobbered the file the assertion compared, one because its only real teeth were a timeout a small fixture never trips. The skill says to mutation-test before crediting a gate, and to do it with a fast fixture, which is what exposed both.Measurement discipline
Kept only the traps that have actually fired here:
rgskipping gitignored files when proving absence;--no-ignorenot being agrepflag, so the&&chain skips silently and reads as "no matches"; emoji heading ids needing the deployed HTML rather than local kramdown; generatedmechs.mdversus its sources; and argument evaluation order being load-bearing inprefix_census.main().Also records that
../CLAUDE.mdsits above the git root and is untracked, so it never reaches a clone and should not be cited as a shared contract.Verification
Every path, CI step and figure cited was checked before committing:
../CLAUDE.mdconfirmed outside the repositoryfleet-page.ymlexactlyCommunityMechglob confirmed askb/communities/*.yaml+data/isolates/*.yaml, with 4 isolate records6,286 canonical mediaconfirmed on the live/mechs/page#-advanced-research-toolsand#-developer-resourcesconfirmed in the deployed HTMLassemble_page.py --checkstill passDocs-only: no runtime code touched.
🤖 Generated with Claude Code