# Neon subtle-intent magnitude guard

## Claim

A Neon claim-candidate packet should not rank an oversized mix cut as the recommended candidate for a subtle natural-language request such as "turn the bass part down a little." Objective metrics can rank candidates for review, but the candidate must still match the requested target, direction, and magnitude.

## What the ratchet caught

The production preliminary candidate loop accepted the request "turn the bass part down a little" and correctly constrained the target track and direction to bass/down. It still recommended the largest tested cut:

- before recommendation: `bass -0.25`
- before supported candidates: `4`
- before rejected candidates: `0`
- before receipt count: `10`

The packet was honest that ranking was only review order, not taste proof. The bug was narrower: "a little" had no objective magnitude receipt, so the biggest metric movement could outrank the subtler candidates.

## Fix

LilArcade PR #527 added a subtle-intent magnitude constraint to the Neon proof contract:

- infer `subtle` from natural-language phrases like `a little`, `a bit`, `slightly`, `touch`, and `small`
- set default `maxAbsDelta` to `0.12` for subtle requests
- add `candidate_magnitude_matches_requested_intent` to the claim receipts
- classify oversized candidates as `claim_translation_mismatch`
- expose magnitude evidence in the human-review packet

## Final production proof

After PR #527 deployed through Amplify job 705, the same production request returned:

- final recommendation: `bass -0.10`
- final supported candidates: `bass -0.10`, `bass -0.05`
- final rejected candidates: `bass -0.18`, `bass -0.25`
- rejection receipt: `candidate_magnitude_matches_requested_intent`
- rejected classification: `claim_translation_mismatch`
- max subtle delta: `0.12`

The rejected candidates still preserved section energy floors and audio guardrails. They were rejected because they did not match the requested magnitude, not because the proof claimed they sounded bad.

## Validation

- `node --test src/proof/__tests__/neonProofContract.test.mjs` passed with 11 tests.
- `npm run test:sequencer` passed with 150 tests.
- `npm run build` passed.
- GitHub CI for LilArcade PR #527 passed.
- Amplify job 705 succeeded across BUILD, DEPLOY, and VERIFY.
- Final production ratchet batch passed against `https://main.dlwavl00q582x.amplifyapp.com`.

## Boundary

This catch does not prove that `bass -0.10` sounds better than the other candidates. It proves that the candidate loop now respects a subtle requested magnitude before ranking metric-supported candidates for human listening review.
