IDE4EEG 0.8.9 Post-0.8.8 retraction release. 0.8.8 was yanked from PyPI after the macOS DMG hit a cryptic os.replace crash during L2CS weights download on first launch. This release fixes that plus a sweep of bugs exposed by manual testing during the recovery cycle. Fixed: - L2CS-Net weights download robustness (lock + isfile check + size sanity, six regression tests). - Stage 5 false-positive sweep: 8 consistency rules now gate on consumer-enabled (their downstream step must actually run). - Stale step-hash pin survives re-loaded TOML (#21). - torchvision _C.so / image.so rpath rewrite (gaze stack broken in full DMG when @loader_path/../torch/lib wasn't re-added after deleting the ec2-runner rpaths). - ICA-eye loop-guard false positive when selector="manual" on re-entry (caught in user testing on the P300 dataset). - Validator correctness pass on hard rules (filtering:<id> multi-instance, segmentation mode shape, STIM type-only). - Dipole amp_range filter on legacy V-scale books. - MP reconstruction / mp_filter amp_range on µV-native books. - Event-name slash sanitization (#15). - Manifest-vs-config UX guard. - mne.utils.progressbar Windows frozen build. - ChannelStatusBadge zombie cleanup (audit B7). Changed: - macOS .app names renamed inside DMGs: IDE4EEG.app (gaze) and IDE4EEG-nogaze.app (EEG core). DMG filenames and bundle IDs unchanged. Added: - Seven numeric-range consistency rules. - Pre-push hook now runs slow goldens unconditionally. - pytest_configure warns when the pre-push hook isn't wired. - scripts/smoke_test_dmg.sh + scripts/clean_room_smoke.sh. See CHANGELOG.md for the full list with rationale. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>