I was ready to ship my first real feature. Editor open. Tasks clear. Momentum high. Then I stopped, closed that branch idea, and spent the session setting up CI instead. In the moment, it felt like I was delaying progress. There were no users yet, no incidents, no red alerts. But I had seen the opposite path before: skip CI early, move fast for a week, then slowly lose speed to noisy PRs, inconsistent checks, and “works on my machine” friction. Not one big disaster. Just constant drag. So this time I treated CI as infrastructure, not polish. The day-one baseline I actually shipped I kept it intentionally small: one lint job one test job same Python/tooling assumptions in local and CI No matrix builds. No release automation. No deployment steps. Just one non-negotiable rule: If checks fail, nothing merges.…