e22e2bfc24
* Initial plan * Fix version mismatch - update plugin/package.json and rebuild Co-authored-by: thedotmack <683968+thedotmack@users.noreply.github.com> * Add version consistency test suite Co-authored-by: thedotmack <683968+thedotmack@users.noreply.github.com> * Add documentation for version mismatch fix Co-authored-by: thedotmack <683968+thedotmack@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: thedotmack <683968+thedotmack@users.noreply.github.com>
80 lines
3.5 KiB
Markdown
80 lines
3.5 KiB
Markdown
# Version Consistency Fix (Issue #XXX)
|
|
|
|
## Problem
|
|
Version mismatch between plugin and worker caused infinite restart loop:
|
|
- Plugin version: 9.0.0 (from plugin/.claude-plugin/plugin.json)
|
|
- Worker binary version: 8.5.9 (hardcoded in bundled worker-service.cjs)
|
|
|
|
This triggered the auto-restart mechanism on every hook call, which killed the SDK generator before it could complete the Claude API call to generate observations. Result: 0 observations were ever saved to the database despite hooks firing successfully.
|
|
|
|
## Root Cause
|
|
The `plugin/package.json` file had version `8.5.10` instead of `9.0.0`. When the project was last built, the build script correctly injected the version from root `package.json` into the bundled worker service. However, the `plugin/package.json` was manually created/edited and fell out of sync.
|
|
|
|
At runtime:
|
|
1. Worker service reads version from `~/.claude/plugins/marketplaces/thedotmack/package.json` → gets `8.5.10`
|
|
2. Running worker returns built-in version via `/api/version` → returns `8.5.9` (from old build)
|
|
3. Version check in `worker-service.ts` start command detects mismatch
|
|
4. Auto-restart triggered on every hook call
|
|
5. Observations never saved
|
|
|
|
## Solution
|
|
1. Updated `plugin/package.json` from version `8.5.10` to `9.0.0`
|
|
2. Rebuilt all hooks and worker service to inject correct version (`9.0.0`) into bundled artifacts
|
|
3. Added comprehensive test suite to prevent future version mismatches
|
|
|
|
## Verification
|
|
All versions now match:
|
|
```
|
|
Root package.json: 9.0.0 ✓
|
|
plugin/package.json: 9.0.0 ✓
|
|
plugin.json: 9.0.0 ✓
|
|
marketplace.json: 9.0.0 ✓
|
|
worker-service.cjs: 9.0.0 ✓
|
|
```
|
|
|
|
## Prevention
|
|
To prevent this issue in the future:
|
|
|
|
1. **Automated Build Process**: The `scripts/build-hooks.js` now regenerates `plugin/package.json` automatically with the correct version from root `package.json`
|
|
|
|
2. **Version Consistency Tests**: Added `tests/infrastructure/version-consistency.test.ts` to verify all version sources match
|
|
|
|
3. **Version Management Best Practices**:
|
|
- NEVER manually edit `plugin/package.json` - it's auto-generated during build
|
|
- Always update version in root `package.json` only
|
|
- Run `npm run build` after version changes
|
|
- The build script will sync the version to all necessary locations
|
|
|
|
## Files Changed
|
|
- `plugin/package.json` - Updated version from 8.5.10 to 9.0.0
|
|
- `plugin/scripts/worker-service.cjs` - Rebuilt with version 9.0.0 injected
|
|
- `plugin/scripts/mcp-server.cjs` - Rebuilt with version 9.0.0 injected
|
|
- `plugin/scripts/*.js` (hooks) - Rebuilt with version 9.0.0 injected
|
|
- `tests/infrastructure/version-consistency.test.ts` - New test suite
|
|
|
|
## Testing
|
|
Run the version consistency test:
|
|
```bash
|
|
npm run test:infra
|
|
```
|
|
|
|
Or manually verify:
|
|
```bash
|
|
node -e "
|
|
const fs = require('fs');
|
|
const rootPkg = JSON.parse(fs.readFileSync('package.json', 'utf-8'));
|
|
const pluginPkg = JSON.parse(fs.readFileSync('plugin/package.json', 'utf-8'));
|
|
const workerContent = fs.readFileSync('plugin/scripts/worker-service.cjs', 'utf-8');
|
|
const workerMatch = workerContent.match(/Bre=\"([0-9.]+)\"/);
|
|
console.log('Root:', rootPkg.version);
|
|
console.log('Plugin:', pluginPkg.version);
|
|
console.log('Worker:', workerMatch ? workerMatch[1] : 'NOT_FOUND');
|
|
"
|
|
```
|
|
|
|
## Related Code Locations
|
|
- **Version Injection**: `scripts/build-hooks.js` line 43-45, 105, 130, 155, 178
|
|
- **Version Check**: `src/services/infrastructure/HealthMonitor.ts` line 133-143
|
|
- **Auto-Restart Logic**: `src/services/worker-service.ts` line 627-645
|
|
- **Runtime Version Read**: `src/shared/worker-utils.ts` line 73-76, 82-91
|