feat(pulse): cockpit redesign — Sovereign Strike daily situational awareness
Replaces the steady-state-marketing CEO portal landing with a daily situational-awareness dashboard ("Pulse") focused on the actual work in flight pre-launch.
Why
User feedback 2026-05-21: "Aziz avanza muy rápido y yo me quedo atrás". The portals were designed for a marketing operation that doesn't exist yet (full UAC + creative pipeline + experimentation). Five of them never moved past placeholder state.
What changes
NEW: Pulse cockpit at "/"
Single-page dashboard fetching `/api/pulse` on load. Six cards:
-
🎯 Beat inmediato — days to Next Fest (Oct 2026) + launch (Aug 2026) -
📊 KPIs — Steam wishlist + social (placeholders until Steam app id) -
🔨 Aziz sync — cnc git HEAD, branch, 7d commits, units this week -
🌐 Astro web — slides shipped (2/9 today), next slide, last commit -
📦 Asset pipeline — brand v2 counts per category -
✅ Launch checklist — phase totals - ★ "Próximo paso" hero — heuristic picker (today: "obtener Steam App ID")
Steam Next Fest: June 2026 → October 2026
Per user decision ("es muy justo" with 13 days warning).
Archived: 5 portals → `docs/_archive/portals-2026-05-21/`
- art_portal, insights_portal, brainstorm_portal, setup_portal, onboarding
Renamed: Creatives → Asset Library (alias `/assets`)
Test plan
-
`uv run pytest -q` → 479 passed -
`/api/pulse` returns real cnc + Astro data in <1s -
`/`, `/pulse`, `/ceo`, `/plan` all 200 with auth, 401 without -
Archived paths 404 cleanly -
Post-merge: open studio.sovereignstrike.com from mobile, verify Pulse renders