What problem does it solve? The committed catalog of platform operations, elements, and config vocabularies goes stale silently because npm run codegen is a manual step, and regenerating against an unpublished or mid-edit checkout bakes half-finished platform work into the catalog that agents read. ## Core Features & Use Cases - Drift Detection: codegen:check exits 1 naming every stale generated file, comparing the catalog against a published web_builder checkout. - Published-Checkout Refusals: The generator refuses checkouts with uncommitted changes or unpushed commits in the five directories it reads, with --dirty as the deliberate override. - Shape and Vocabulary Readers: scripts/shapes.ts recovers request body structs from Go handler decode sites, and vocabulary readers join config keys to their legal values from Go normalizers and element VOCAB declarations. - Use Case: After the platform ships a new element or operation, run WB_REPO=<scratch>/wb npm run codegen against a detached worktree of origin/main to regenerate src/catalog/*.generated.ts and update the pinned counts in tests and READMEs. ## Quick Start Run the codegen check against a detached published web_builder worktree and regenerate the catalog if it reports stale files.