# Neon Review Packet Candidate Table Catch

## Catch

The Neon preliminary ratchet loop already produced a reviewable candidate packet, but the Markdown packet hid the candidate evidence that made the recommendation reviewable.

The old packet showed:

- recommendation: `chord -0.10`
- supported candidates: `2`
- rejected candidates: `0`
- ranking role: `review_order_only`
- taste boundary language

But the supported candidate rows, target movement, receipt pass/fail summaries, and ranking values were only visible in raw JSON.

## Fix

Integrations PR #729 added reusable supported/rejected candidate tables to `@riddledc/riddle-proof-packs` human-review Markdown. PR #730 published `@riddledc/riddle-proof-packs@0.5.2` through trusted publishing. LilArcade PR #510 consumed the package and asserted the table rows in Neon review-packet tests.

## Final Receipt

The final local Neon preliminary batch produced:

- status: `preliminary_candidate_ready`
- recommendation: `chord -0.10`
- supported candidates: `2`
- rejected candidates: `0`
- state restored after loop: `true`
- no permanent edit: `true`
- first candidate movement: `chord: rms -0.0013, peak -0.0088, energy 0`
- second candidate movement: `chord: rms 0.0019, peak 0.0106, energy 0`
- receipts: `pass (6)` for both supported rows

The final Markdown packet now shows the candidate rows directly:

- candidate
- action
- target movement
- receipt summary
- ranking value

## Boundary

This improves reviewability, not taste automation. The proof packet supports objective change claims and guardrails. Musical quality still requires listening review.
