A green CI pipeline is a contract. When it breaks in ways that differ from your local environment, something in the contract is wrong — not the code. Here are three failures we debugged this week on ClipCrafter and the underlying problems each exposed. Failure 1: CI fails typecheck, local passes What we saw error TS2345 : Argument of type ' { quality: number; } ' is not assignable to parameter of type ' ExportOptions ' . Types of property ' quality ' are incompatible . Type ' number ' is not assignable to type ' QualityPreset | undefined ' . Enter fullscreen mode Exit fullscreen mode Passed locally. Failed in CI. Classic. The investigation First instinct: the code changed the type. But quality was already a string in our code — we were passing "medium" or "original" . So why was CI complaining about number ? The error message says QualityPreset — a type that didn't exist in our local type definitions at all.…