Knowledge dashboard
The anti-cascader
The essay's knowledge, dashboard-shaped — graph, eyes, actions. The graph is the source of truth; the prose follows.
The essay's claims, typed and connected. Synthesis is the author's contribution. Citation grounds in a named source. Derivation follows from prior nodes. Click any node to jump to its card.
S S01-cascade-not-gravity · the spine
The cascade isn't gravity — it's a function of which side of the migration is doing the pulling. Flip the pull, and the cascade doesn't form.
S S02-team-pull · inversion 1
Operator-push → team-pull. The platform team publishes a skill; the receiving team installs and invokes it on their clock.
derives_from: S01-cascade-not-gravity
S S03-choreographed · inversion 2
Single-shot → choreographed. A migration is a sequence of small reviewable PRs with state in the target repo, not one big diff.
derives_from: S01-cascade-not-gravity
S S04-teach-while-doing · inversion 3 — load-bearing
"Do the work" → teach while doing. Each step ships with publisher-authored prose that explains the transform before running it.
derives_from: S01-cascade-not-gravity
S S05-engine-plus-ux · inversion 4
Engine-only → engine + receiving-team UX. The codemods inside Bob are the same shape any AST tool produces; the contribution is the wrapper above.
derives_from: S01-cascade-not-gravity
D D06-bob-the-artifact · the artifact
bob-the-fixer is one instance of the artifact you get when you compose all four inversions — a Claude Code plugin shipping today.
derives_from: S02-team-pull , S03-choreographed , S04-teach-while-doing , S05-engine-plus-ux
D D07-skills-made-it-deliverable · why this couldn't have shipped earlier
Before the agent-skills format, the operator had no way to ship anything but a PR. Skills are the second option.
derives_from: S02-team-pull , D06-bob-the-artifact
O O08-teaching-layer-gap · the gap
Across surveyed AI coding tools as of May 2026 — Cursor, Continue, Aider, Cody, JetBrains, Copilot, Sweep, Windsurf, Codemod's CLI — none ship the active teaching layer.
derives_from: S04-teach-while-doing
C C01-2to3
Python 2to3 — single command, run locally on the team's clock, ships with the standard library since Python 3.
grounds: docs.python.org/3/library/2to3
C C02-openrewrite
OpenRewrite OSS — Java migration recipes distributed via Maven Central; teams pull, run, commit.
grounds: docs.openrewrite.org
C C03-jscodeshift
jscodeshift — Facebook's JS codemod toolkit; treats codemods as a library devs run on their own clock.
grounds: github.com/facebook/jscodeshift
C C04-shopify-packwerk
Shopify (2020): "A single centralized team can't make change happen by working against the momentum of hundreds of developers." Pivoted to Architecture Guild + embedded engineers + team-installed Packwerk.
grounds: Shopify Engineering · Deconstructing the Monolith (2020)
C C05-codemod
Codemod ships the engine and Campaigns — operator-side fan-out across N repos. A real product, well-funded engine layer; the team-side teacher isn't in their offering.
grounds: codemod.com
C C06-skills-format
Anthropic SKILL.md (folder + YAML frontmatter, on-demand load) + plugin marketplace — the distribution channel that makes "a migration with a teacher built in" one install command for the receiving team.
grounds: Anthropic Skills
C C07-google-lsc
Hyrum Wright's Large-Scale Changes (Software Engineering at Google, Ch 22): LSCs at Google almost always machine-generated; pre-LLM operator-side practice for cross-cutting change.
Claims that need more grounding. The essay's confident synthesis — but where external corroboration would strengthen the case, or an open question is implicit.
The surveyed-tools claim — "none of Cursor, Continue, Aider, Cody, JetBrains, Copilot, Sweep, Windsurf, Codemod's CLI ship an active teaching layer as of May 2026" — is the author's hand survey. Falsifiable but not yet externally corroborated.
Why eyes: The load-bearing observation behind S04 (teach-while-doing). Open to falsification by anyone who finds a counter-example in the surveyed set, or names a tool that wasn't surveyed. Worth a follow-up pass each quarter; the field is moving fast.
ground_with:
Teaching-as-load-bearing is the author's framing. Adjacent literature (literate programming, dev-experience research, runbook-vs-skill comparisons) names the value of explanation alongside execution but does not frame the teaching layer as the load-bearing inversion in cross-cutting change.
Why eyes: The framing reads cleanly against the surveyed tools, but a published taxonomy already naming "teaching-while-doing" as the missing primitive would let the essay sit alongside it instead of re-naming it. Active eyes — most likely place an external reader could already have shipped the same claim.
ground_with:
Bob is presented as one demonstration of the four-inversion shape. The claim that the four inversions are jointly sufficient to defeat the cascade is implicit, not yet proven against a second instance.
Why eyes: One artifact is an existence proof for the shape, not for the shape's necessity or sufficiency. Other shapes that hold the same four inversions — or that drop one and still avoid the cascade — would sharpen the claim. Open invitation to the field.
What the essay implies for the reader. Etudes drill specific claims; apply items put the principle to work; next points at sibling essays.
etude Install bob →
Watch the choreography land. Install, invoke, one step, stop. Demonstrates the team-pulled posture and per-step pacing in 90 seconds.
etude Teaching layer →
Same diff. With and without the explanation wrapped around it. Drills the load-bearing inversion — S04.
etude Pull vs push →
Two scenarios land in your week as team lead. Pick the response. Drills S02.
etude Author one step →
Write the rename rule. Run it against the fixture. Drills S05 — what shipping a step actually feels like.
apply Pick one cross-cutting change you tried to push
What would the team-pulled shape have looked like? Where would the per-step pacing have lived? What's the teaching layer your PR description didn't carry?
apply Try bob →
If you have a Spring Boot 2.7, JUnit 4, Jest, or unstructured-logging codebase, install the plugin and run the migration. The repo is MIT-licensed and under 1,000 lines.
next Part II — the cascade with agents in the loop →
The cascade survives the substrate. Same pattern reproduces inside one operator running a fleet of agents. Sets up why the team-pulled inversion in this essay matters at agent scale, not just human scale.
next Part I — where the cascade was first named →
How to run a cross-cutting campaign — the principle, the three paths, the dead zone. The pre-LLM framing the anti-cascader is a positive instance of.
An audit of this essay against the same schema it argues for. Five dimensions: grounded (load-bearing claims cite real evidence), tentatives (speculative claims marked tentative), synthesis (credit lands honestly), provenance (the reader can verify), voice (claim leads, no hedging). Composite is the read across them.
Each load-bearing claim cites a real prior-art reference; the four inversions are explicitly framed as a recombination, not an invention. Composite is mid not strong because the surveyed-tools observation (O08) and the four-inversions-are-sufficient claim (D06) are author-side surveys without independent corroboration yet.
Soft spot · repair
Two soft spots: 1. The surveyed-tools claim is the load-bearing empirical observation but rests on the author's hand survey. A reproducible methodology — feature matrix across the named tools, last-checked date, link to each tool's docs section that confirms or denies a teaching layer — would let a reader verify rather than trust. 2. "The four inversions compose" presents as an exhaustive decomposition. It may not be. There are plausible fifth axes — reversibility, blast radius, telemetry — that the essay doesn't surface. Worth marking the four as the ones bob explicitly inverts rather than the complete set.