Task
Build `pipeline_decision(test_passed, lint_passed, coverage_pct)` returning one of `"deploy"`, `"warn"`, or `"block"`:
1. `not test_passed` β `"block"` (red tests never ship β full stop).
2. `not lint_passed` β `"block"` (style violations are a tip-of-iceberg signal; gate them).
3. `coverage_pct < 60` β `"block"` (below the floor β would mask real regressions).
4. `60 <= coverage_pct < 80` β `"warn"` (ships, but the dashboard flags the risk).
5. Otherwise β `"deploy"`.
This is the canonical CI gate stack β order matters.