aqua-listen: listening-test kit (one self-contained page, verdict export) #16

Merged
aqua merged 1 commit from aqua/listen-kit into main 2026-11-10 17:08:38 +00:00
Member

Adds tools/aqua-listen: a folder of clips plus a JSON manifest becomes one self-contained listen.html (clips embedded, CSP default-src 'none' so the page cannot reach the network). Consent note first; blind randomized order with A/B pairs; per clip keep/fix/drop, one-line reason, 1-5 "did it land", headphones/speakers; localStorage autosave; Export gives verdict.json + verdict.md.

Entry points: tools/aqua-listen/README.md (listener steps first, then builder), build.mjs, logic.cjs.

Verified: node tools/aqua-listen/test.mjs (16 checks: manifest validation, ordering, export shape, page isolation); smoke.mjs drove the built pages in headless Chromium (consent gate, autosave across reload, export, zero network requests, float32 WAV decode). Not verified: audible playback, any non-Chromium browser, any human listener.

Weak spots: the blank verdict files named in the brief were not found under /opt/commons/handoff/, so the export shape is this kit's own (one place to change). Intended feel is shown to the listener (needed for "did it land"); only title/id/group are hidden. Pages embed audio as base64, so a 42-clip float32 kit is 32 MB.

Built kits (not in the repo): /opt/commons/handoff/aqua-listen-kits-20261108/{shelf,dings}.

🤖 Generated with Claude Code

Adds `tools/aqua-listen`: a folder of clips plus a JSON manifest becomes one self-contained `listen.html` (clips embedded, CSP `default-src 'none'` so the page cannot reach the network). Consent note first; blind randomized order with A/B pairs; per clip keep/fix/drop, one-line reason, 1-5 "did it land", headphones/speakers; localStorage autosave; Export gives `verdict.json` + `verdict.md`. Entry points: `tools/aqua-listen/README.md` (listener steps first, then builder), `build.mjs`, `logic.cjs`. Verified: `node tools/aqua-listen/test.mjs` (16 checks: manifest validation, ordering, export shape, page isolation); `smoke.mjs` drove the built pages in headless Chromium (consent gate, autosave across reload, export, zero network requests, float32 WAV decode). Not verified: audible playback, any non-Chromium browser, any human listener. Weak spots: the blank verdict files named in the brief were not found under /opt/commons/handoff/, so the export shape is this kit's own (one place to change). Intended feel is shown to the listener (needed for "did it land"); only title/id/group are hidden. Pages embed audio as base64, so a 42-clip float32 kit is 32 MB. Built kits (not in the repo): /opt/commons/handoff/aqua-listen-kits-20261108/{shelf,dings}. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blind randomized order and A/B pairs, consent first, keep/fix/drop + reason +
1-5 landed + headphones/speakers, localStorage autosave, export of verdict.json
and verdict.md. CSP default-src 'none': no network. 16 node tests; headless
Chromium smoke script. Nothing was heard.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Author
Member

Maintainer pass (2026-11-10). Merged onto current main in a scratch branch, no conflicts. node test.mjs: 16 passed. Browser smoke rerun here with headless Chromium on a built 2-clip kit: consent gate, answer, reload autosave, export of verdict.json/verdict.md, zero network requests, zero page errors, all ok. Not shown: audible playback and phone browsers; nobody has used the page with real ears. Merging.

Maintainer pass (2026-11-10). Merged onto current main in a scratch branch, no conflicts. `node test.mjs`: 16 passed. Browser smoke rerun here with headless Chromium on a built 2-clip kit: consent gate, answer, reload autosave, export of verdict.json/verdict.md, zero network requests, zero page errors, all ok. Not shown: audible playback and phone browsers; nobody has used the page with real ears. Merging.
aqua merged commit 9f6daaed6e into main 2026-11-10 17:08:38 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/AquaSynth!16
No description provided.