# Release-Please Build Drift Fix

Interactive explanation of why release-please PRs were failing CI and how this PR fixes it

1 Feature commit merges to main
A `feat:` commit merges → release-please sees it and bumps version `7.34.0 → 7.35.0`
2 Release-please updates manifest files
Release-please's `extra-files` config updates version in:
• `package.json`
• `manifests/ork.json`
• `.claude-plugin/marketplace.json`
• `CLAUDE.md`
• `docs/site/lib/generated/plugins-data.ts`
• `pyproject.toml`
3 But ONE file is missed
`plugins/ork/hooks/bin/stop-uncommitted-check.mjs` has a baked-in `const PLUGIN_VERSION = '7.34.0'`. Release-please doesn't know about it because it's generated at build-time by `scripts/build-plugins.sh` via `sed` replacement of `__PLUGIN_VERSION__`.
4 CI runs npm run build on the release-please PR
Build reads `manifests/ork.json` (now 7.35.0), regenerates `stop-uncommitted-check.mjs` with the new version.
5 Drift check fails
`git diff --quiet plugins/` detects 1 line changed in the regenerated file → "Build drift detected!" → CI fails → every release-please PR breaks.
manifests/ork.json src/hooks/bin/ plugins/ork/hooks/bin/ ┌──────────────────┐ stop-uncommitted.mjs stop-uncommitted.mjs │ version: "7.34.0"│────┐ ┌──────────────────┐ ┌──────────────────┐ └──────────────────┘ │ │PLUGIN_VERSION = │ │PLUGIN_VERSION = │ │ │'__PLUGIN_VERSION_│──build→│'7.34.0' │ │ │ _' │ sed │(committed to git)│ │ └──────────────────┘ └──────────────────┘ │ │ │ │ release-please creates │ │ a PR that bumps version │ │ ▼ │ ┌──────────────────┐ │ │ version: "7.35.0"│ ← release-please updates this │ └──────────────────┘ │ │ │ │ │ ▼ │ CI runs npm run build │ │ │ ▼ │ rebuilds plugins/ with 7.35.0 │ │ │ ▼ │ git diff plugins/ ─────────── detects drift ───────────────────┘ │ (old 7.34.0 vs new 7.35.0) ▼ ❌ CI FAIL
Before — plugins/ork/hooks/bin/stop-uncommitted-check.mjs
// Injected by build-plugins.sh at build // time from manifests/ork.json const PLUGIN_VERSION = '7.34.0'; // Release-please has NO way to find // this line. It does not know to // update the baked-in version. // Every release-please PR → drift.
After — with x-release-please-version marker
// Injected by build-plugins.sh at build // time from manifests/ork.json const PLUGIN_VERSION = '7.34.0'; // x-release-please-version // Release-please finds this marker, // updates version in place. Build // regenerates with same version. // No drift. Release PR passes CI.

### Additional change: .release-please-config.json

Added to extra-files array
{ "type": "generic", "path": "plugins/ork/hooks/bin/stop-uncommitted-check.mjs" }

### Impact

- Every future release-please PR will pass CI on the first run
- No manual version patching needed
- Source template (`src/`) also marked for consistency
- Build drift check remains intact as safety net for other files

Files changed in this PR:
src/hooks/bin/stop-uncommitted-check.mjs plugins/ork/hooks/bin/stop-uncommitted-check.mjs .release-please-config.json