# Clean change fixture — proposal.md

A minimal, well-formed proposal that should produce 0 P0, 0 P1
findings across all 5 lenses (per T16 / CAL-013 TRIANGULATE).

## 1. Intent

Add a `dedupeFindings` helper to `lib/lens/risk.ts`.

## 2. Why

The current `risk.run` emits duplicate findings in pathological
cases (e.g., same keyword on same line via two distinct regex
matches). This is a v0.6.0 bug.

## 3. Scope

In scope: `lib/lens/risk.ts` only.
Out of scope: receipt schema, other 4 lens modules.

## 4. Success criteria

- Tests pass.
- No new file.
- No new export other than `dedupeFindings` + `RISK_*` constants.

## 5. Rollback

Revert the single file.
