## TL;DR
Fix this in health score calculation by acting on the exact message first: clamp negative usage values to zero at ingestion, exclude refund, reversal and adjustment events from the usage measure, and recalculate the affected window, because a negative delta from a billing correction is not a drop in product use. Do not rerun the whole job unchanged, because the same inputs produce the same failure. Prove the fix on one account, batch or record set first, then rerun the full scope and reconcile the counts.

```text
health score calculation error - negative usage counted as churn signal
```

## Use this when
- The operation in health score calculation fails with this exact message or symptom: health score calculation error - negative usage counted as churn signal.
- The same failure repeats on retry with unchanged inputs.
- Scoring, alerting or routing is blocked until this item completes.

## Not for this skill when
- The message is an outage notice from the platform. Resolve that first, then return here if this error remains.
- The operation completes and you only disagree with its output quality. That is a quality review, not this failure.

## Steps
1. Reproduce the failure with the smallest scope that still shows it in health score calculation, and copy the full message plus the account, measure or job involved into the run notes. Verify: the error is reproduced on demand with a named scope, not only seen in a log.
2. Apply the specific fix for this error: clamp negative usage values to zero at ingestion, exclude refund, reversal and adjustment events from the usage measure, and recalculate the affected window, because a negative delta from a billing correction is not a drop in product use. Verify: the smallest failing scope now completes, or the named account, measure or job behaves as the fix predicts.
3. Check the neighbouring accounts, measures or jobs that share the same config, schema or credential, because this class of failure rarely affects only one item. Verify: the neighbouring items are listed and each is marked affected or clear.
4. Rerun the original operation in health score calculation on the previously failing scope, watching for the same message rather than assuming success from a quiet log. Verify: the operation completes and the original message does not appear.
5. Compare the result counts, scores or status against the source in health score calculation so a silent partial success is caught before sign off. Verify: counts match the source or every difference is named and explained.
6. Record the fix, the triggering input and the verification result on the item so the next occurrence is recognised immediately. Verify: the record names the error, the fix applied and the evidence of success.

## Why it happens
Usage pipelines that sum signed events let credits and reversals produce negative usage, and the scoring model interprets any large downward usage move as a churn signal.

## Variant phrasings

### health score calculation error - negative usage counted as churn signal
The verbatim form searchers paste from the terminal or console. Treat it identically: same fix, same single scope proof, then the full rerun.

### How to fix - health score calculation error negative usage counted as churn signal error failure
The how-to phrasing for the same failure in health score calculation. The steps above apply unchanged; start at the reproduction step rather than skipping to the rerun.

### health score calculation troubleshooting for this failure
The symptom-first phrasing used when the console hides the full message. Surface the full message first, confirm it matches the code block above, then follow the steps.

## Edge cases
- If the fix works on the sample scope but the full rerun still fails, a second account or record with the same fault is present; widen the scope in stages until the next failing item is found.
- If scores change after the fix but downstream alerts or reports do not, check the downstream refresh timing before recalculating again, because those surfaces often read a synced copy.
- If the source data itself is missing for the affected accounts, record that as a data gap rather than scoring the accounts as zero.

Compatibility: health score calculation at current versions, plus the platform API or console the query names; no extra tooling beyond the source system access needed to verify counts.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_YFvhkIXp-HT-ip8B1LKfHA
