# Neon RiddleNode Single-Browser Intent Matrix Report

## Plain-English Summary

The Neon RiddleNode loop stopped reopening a separate browser/profile run for every small mix question.

The useful catch is ergonomic and operational: the earlier matrix had already avoided repeating broad gates, but it still launched one proof run per intent. The new lane runs the bass, guitar, and chord claim-candidate loops inside one browser/profile call, then writes the same separate human-review packets for each intent.

This makes the lab loop faster without changing the proof/taste boundary.

## What Changed

- LilArcade PR #534 added `runRatchetIntentMatrix` to the Neon proof contract.
- `scripts/neonRatchetIntentMatrix.mjs` now supports `--single-browser-intents`.
- `npm run proof:sequencer:riddlenode-intent-matrix-fast` runs the RiddleNode matrix with that mode and adds the conservative surrogate review.
- The script still writes per-intent human-review packets, so downstream review artifacts stay readable.
- The older per-intent profile path remains available as a fallback when debugging app-state coupling.

## Verification

Live RiddleNode fast matrix:

- status: `intent_matrix_ready_for_review`
- execution mode: `single_browser_intents`
- shared gates: `local_gate_ready`
- single-browser profile: `passed`
- bass request: `bass -0.05`, supported `3`, rejected `0`
- guitar request: `guitar -0.02`, supported `3`, rejected `0`
- chord request: `chord -0.035`, supported `3`, rejected `0`
- deterministic findings: `0`
- review warnings: `0`
- surrogate status: `approved_for_development_review`
- surrogate approvals: `3`
- recommended development candidate: `guitar -0.02`

Local checks:

- `node --test src/proof/__tests__/neonProofContract.test.mjs scripts/__tests__/neonRatchetIntentMatrix.test.mjs`
- `npm run test:neon`
- `npm run publish:neon-preview`
- `npm run proof:sequencer:riddlenode-intent-matrix-fast`

GitHub checks:

- LilArcade PR #534 CI passed at head `6d9e3b3`.

## Proof Boundary

This proves that the Neon lab can run several bounded public-target claim-candidate loops through one browser/profile call, preserve separate human-review packets, and add a conservative development-review surrogate from objective receipts.

It does not prove subjective mix quality, listener preference, the best musical candidate, or that any candidate should be promoted automatically.

