# v0.1.0 launch retro **Cutover date:** TBD (filled in by the operator on launch day). **Cutover window:** TBD (e.g., "Saturday 2026-MM-DD 22:00–22:45 UTC"). A short, blameless retro filled in within 24 hours of the cutover. Lives in `docs/internal/retro/` so future v2/v3 launches can read the prior one and learn. ## What worked (Filled in post-cutover. Bullets, two sentences each. Examples from a hypothetical good run: - The Ansible playbook applied first-try; ~12s downtime measured end-to-end. Lower than the 30s budget. - The smoke script caught a misconfigured Caddy header within 60s of the deploy reporting success — fixed before any user noticed. - HSTS + the Caddy default cert-renewal worked on first request; no manual cert ceremony needed.) ## What surprised us (Things we hadn't predicted. Honest writeups; this isn't a brag sheet.) ## Top 3 user-reported issues in the first 24h | # | Severity | Title | Status | |---|----------|-------|--------| | 1 | TBD | TBD | TBD | | 2 | TBD | TBD | TBD | | 3 | TBD | TBD | TBD | ## Numbers | Metric | Value | |-------------------------------------------|---------| | Cutover window length | TBD | | Downtime during cutover | TBD | | Signups in first 24h | TBD | | Repos created in first 24h | TBD | | Pushes in first 24h | TBD | | Peak RPS during HN spike | TBD | | 5xx rate during HN spike | TBD | | Backups successful since cutover | TBD | | Alerts paged | TBD | | Alerts that were false positives | TBD | ## What goes into the next sprint The first post-launch sprint focuses on: 1. (Top user-reported issue from the table above, fix.) 2. (Second-highest issue, or a parked S41+ feature if no urgent bug.) 3. (Drop the GitHub mirror? Track its disposition; default plan is to keep it 90 days.) ## Lessons for the next major release (Things we'd do differently for v2.0.0. Operator-facing notes, not rehash of every minor decision.) ## Closing shithub is now real. The v0.1.0 surface is what users will judge the project against; what we ship from here forward is judged in the context of a public, dogfood-driven instance. That's the forcing function we wanted.