v2.9.0 — Critical publisher/deploy safety fixes
Root cause of portal outage — fixed
Bug 1 (Critical): Pruning ran in --render-only mode
Publisher CI uses --render-only but the Phase 5 pruning deleted pages not regenerated in that pass, breaking MkDocs nav references.
Fix: Pruning and nav sync are completely skipped in --render-only mode.
Bug 2: Nav sync failure didn't abort deletion
If _sync_enterprise_navigation threw an exception, deletion still ran → inconsistent state.
Fix: Nav sync returns True/False. Deletion is gated on nav sync success.
Bug 3: Fragile nav sync regex
re.sub(r'nav:.*', ..., re.DOTALL) could eat content after the nav block.
Fix: Uses content.index('nav:') string split instead of regex.
Bug 4: V2 build failure overwrote V1
If V2 produced a broken build, cp -r site_v2/* site/ overwrote V1's working content.
Fix: Deploy checks V2 page count (minimum 50 HTML pages + index.html) before overwriting V1. Falls back to V1-only if V2 looks broken.
Safeguard added
Pages in self.dimensions are never deleted even in full mode — only truly orphaned pages (not in any dimension) can be pruned.
🤖 Generated with Claude Code