# Neon RiddleNode Smoke Loop Report

- target: `https://riddlenode.com/neon-lab/`
- source PR: `davisdiehl/lilarcade#534`
- source commit: `13c0d8b`
- status: `smoke_loop_ready`
- evidence role: `interaction_snapshots`

## Plain-English Catch Card

### Title

Neon stopped making a long proof run look like a stuck deploy.

### Summary

The RiddleNode lane now has a one-intent smoke loop and heartbeat output, so agents can quickly prove the live Neon lab target before running the fuller intent matrix.

### What Went Wrong

The fast loop had already moved off Amplify, but the single-browser intent matrix still ran several claim-candidate loops inside one Playwright call with no progress output until the browser returned. That made normal proof time feel like another opaque deployment wait.

### What Riddle Caught

The latest loop exposed the slow layer: the browser proof call, not RiddleNode publishing. LilArcade added `--intent-id` filtering, a one-intent smoke script, and heartbeat progress messages while the single-browser runner is active.

### Why It Matters

Fast proof loops need operator confidence. A short smoke path lets agents check that the current RiddleNode Neon target is live, instrumented, and producing review packets before spending time on the full matrix.

### What Changed

LilArcade added `npm run proof:sequencer:riddlenode-smoke-loop`, which publishes the Neon-only bundle, runs shared gates, then tests only `guitar-down-little` with a two-candidate budget. The single-browser runner now reports periodic "still running" heartbeats.

### What This Does Not Prove

It does not prove subjective mix quality, does not prove every intent, and does not replace the full matrix. It proves the fast lab target can produce one metric-supported, guardrail-preserving review packet without treating promotion as part of the loop.

### Technical Receipt

`intentCount=1`; selected intent `guitar-down-little`; `ratchetMaxIterations=2`; recommendation `guitar -0.02`; supported candidates `2`; rejected candidates `0`; findings `0`; surrogate review `approved_for_development_review`; heartbeat messages emitted at 15s and 30s while the browser proof was running.

## Live RiddleNode Receipt

The smoke loop published the Neon-only bundle to RiddleNode, ran the shared fast/layout/playback gates, then ran one single-browser intent-matrix proof.

| Intent | Recommendation | Supported | Rejected | Findings | Surrogate Review |
| --- | --- | --- | --- | --- | --- |
| guitar down little | `guitar -0.02` | 2 | 0 | 0 | `approved_for_development_review` |

## Validation

- `node --test scripts/__tests__/neonRatchetIntentMatrix.test.mjs` passed: 9/9.
- `npm run proof:sequencer:riddlenode-smoke-loop` passed against `https://riddlenode.com/neon-lab/`.
- The smoke runner printed heartbeat progress at 15s and 30s during the single-browser proof call.
- `npm run test:neon` passed: 107/107.
- `npm run build` passed locally.
- GitHub CI passed for LilArcade PR #534 at `13c0d8b`.

## Artifacts

- `smoke-intent-matrix-summary.md`
- `smoke-intent-matrix-summary.json`
- `guitar-smoke-human-review-packet.md`
- `guitar-smoke-human-review-packet.json`
- `smoke-surrogate-review.md`
- `smoke-surrogate-review.json`
- `smoke-generated-profile.json`
- `smoke-intent-matrix.png`

## Boundary

This is workflow proof and candidate-review proof. It shows the fast RiddleNode target can produce a compact, metric-supported review packet quickly and observably. It does not prove the candidate sounds better.
