Address Greptile review feedback on PR #41361:
1. Fire before_compaction/after_compaction hooks in the overflow recovery
path (run.ts) when engine owns compaction — same asymmetry that was
fixed for the /compact command path.
2. Add 3 tests for compactEmbeddedPiSession with ownsCompaction=true:
- Verifies hooks fire with sentinel -1 values
- Verifies after_compaction skipped on failed compaction
- Verifies hook exceptions are caught without aborting compaction