Operational Lesson: Always Deploy After Milestones (2026-04-06)

## Issue
After completing 16 commits (4 ICP test projects — TestimonialWall, MetricsPanel, AuthorBioCard, FeatureComparisonTable), the production site at cms.chem.dev showed ChunkLoadError 400s and MIME type mismatches. The PM2 process was still serving old build artifacts.

## Root Cause
Code was committed but not rebuilt/redeployed. Next.js static chunks from the old build don't match the new route structure, causing webpack chunk loading failures in the browser.

## Fix Applied
Rebuilt (`npx next build`) and restarted PM2 (`pm2 restart cms-web`). All 10 routes immediately served correctly.

## Rule Added
CLAUDE.md Milestone/Decision Loop now includes an explicit DEPLOY step (step 3 of 4):
1. QUERY the brain
2. Proceed autonomously
3. **DEPLOY to production** — rebuild + restart PM2 after commits to production surfaces
4. PUSH status back

This is mandatory after any milestone that commits changes to apps/web or apps/cms-theme. Applies to both surfaces:
- Next.js: `cd apps/web && npx next build && pm2 restart cms-web`
- Astro: `cd apps/cms-theme && npm run build && pm2 restart cms-content`
