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" .…