-
-
Published 20s digital A/B: B playing. A lowered 2.53 dB for listening; public WAVs unchanged. No room measurement.
-
Oct 15 recorded Duo session 9535351: source reads and draft MR approval. That approval did not authorize merge or deployment.
-
Recorded Duo refusal: a separate request to skip digital_audio CI was outside permitted source paths.
-
Historical MR !26, Oct 15: Duo draft reviewed, corrected and human-merged. Separate from deployed web source 024725b.
-
Deployed web source 024725b: main pipeline 2968167138 passed all 14 required jobs.
-
Published 20s Library of Congress digital A/B: piece 1 of 5, web source 024725b. No physical host admission.
-
Silent screens: Pixel 8 build 3, 20s A/B (app 310dde8; backend c8c2b98). iPhone: older 1s UI, a384616. Public TestFlight pending.
-
Real speakers filmed by phone. Edited B playback with common gain; no calibrated room comparison or measured acoustic benefit.
Inspiration
An audio engineer needs to hear a filter change before deciding to release it. A passing pipeline answers whether the checks passed. The listening result still needs to be connected to the code that produced it.
Soundcheck makes that connection visible: listen to A and B, inspect the returned files, and follow them back to a GitLab commit and its CI evidence.
What it does
The live judge page plays 20 seconds of a real public-domain recording and a digital FIR smoothing candidate. It verifies five published pieces before joining each continuous take. You can replay either version, inspect the release and download the original files. A separate route renders a fresh short A/B through the deployed backend.
The GitLab workflow brings a proposed source change into the same review loop. In the recorded Duo Agent Platform session, the agent read an issue and repository files, waited for human approval, and created a branch, code-and-test commit and draft MR. A separate session refused a request to bypass CI. A later flow posted a bounded MR review note.
This is an Assisted workflow. People performed the observed merges, deployment and release publication. The project spans the nine lifecycle stages below through a combination of Duo, CI and operator actions. It does not demonstrate nine autonomous agent stages.
How I built it
The React/TypeScript client verifies audio bytes before playback. Mediabunny decodes short browser imports. A Python digital renderer runs on Google Cloud Run; Firestore stores release records and Cloud Storage retains content-addressed artifacts. The Expo/React Native app uses the same deployed evidence API.
GitLab Duo Agent Platform provides the source-change flow, human approval component, refusal path and bounded review flow. GitLab CI checks the compiler, audio engine, web/native clients, evidence API, security and package. The deployment gate checks the exact source and package, then verifies release bytes after a new Cloud Run revision replaces the old one. Deployment code is included in the public repository.
AI coding assistants helped with implementation, tests and review. Their output still needed source inspection, executed checks and actual recordings. In the observed Duo-authored MR, a person corrected a test before merging it.
Challenges I ran into
- A loading audio preview moved an upload consent checkbox during a click. Consent now waits for preparation, with a regression that holds the real encoded-byte read.
- Device automation reported success while showing the short sample. I corrected the guided navigation and inspected the encoded recording for both 20-second endpoints.
- A healthy deployment did not establish durable audio. The live check now compares the stored release bytes before and after redeployment.
- Digital evidence and speaker evidence needed separate claims. The film includes real phone-recorded speaker playback, labelled as edited excerpts rather than a calibrated room comparison.
Accomplishments I'm proud of
The product offers a complete listening-to-source path without a judge login. Its published release connects the recording, filter graph, audio hashes, source and 14 successful required CI jobs. The film shows the recorded human approval, refusal, MR, CI and release evidence alongside the audible result.
The Android build-3 APK and receipt are public Release downloads. A real Pixel 8 recording shows both A and B reaching 20.00/20.00 seconds. That device recording is silent and proves visible playback progression. The film's separate speaker excerpts contain the actual phone audio.
Lifecycle coverage and who acted
| Stage | Demonstrated action | Actor |
|---|---|---|
| Plan | Read issue #3 and propose a scoped source change | Duo, then human approval |
| Create | Author branch, code-and-test commit and draft MR !26 | Duo; later human correction and merge |
| Verify | Post bounded MR review; execute exact-source tests | Duo review flow and GitLab CI |
| Package | Build a source-marked container | GitLab CI |
| Secure | Run secret detection and report guards | GitLab security and CI |
| Release | Publish source-linked audio and native downloads | Operator and deterministic publisher |
| Configure | Apply a verified package to dedicated Cloud Run infrastructure | Operator-invoked deployment gate |
| Monitor | Read deployed source and diagnostic host state | Deployed API and verification tools |
| Govern | Refuse a CI bypass; retain human merge/release decisions | Duo refusal and people |
Environmental observation
Serving stored, verified audio avoids rerendering it for every delivery. A six-window Cloud Run comparison delivered identical artifact bytes for the complete 4.157-second sample under matched request counts. It observed 91.28% less allocated vCPU time per verified delivery than an engineered render-per-delivery reference. This is a bounded compute-allocation observation, not measured energy, carbon, an SCI score or a product-wide saving. Configuration parity was operator-recorded; a service-configuration snapshot was not archived.
What I learned
Enough uninterrupted playback matters more than another proof badge. Twenty seconds lets someone hear the result, while the release links let them check its origin.
Agent authorship, human approval, passing CI and deployment are separate events. Naming the actor at each step made both the product and its limits clearer.
A successful device-test status is not enough. The recorded UI must show the intended sample and actual progress. Speaker playback also needs its own evidence; a screen recording cannot establish room acoustics.
What's next
Complete the physical iPhone 20-second test and make TestFlight available after Apple's review. Separately, validate calibrated physical measurements and the unfinished CI-repair execution boundary before enabling either path. Neither is presented as completed here.
Try it
- Open the live audition, select "Verify and load A/B," then play A and B.
- Inspect the release and follow its source, WAV and CI links.
- Read MR !26 and the public flow evidence. Hosted session pages require project access; public screenshots and the MR remain available.
Source and evidence scope
- Filmed/live website:
024725b88df864e083874cdf5bd732e8f45416bb. - Repository main at preparation:
7517d3b28efff8657740b9e7608595ea25470895, with its own 14-job main pipeline. - Native build 3:
310dde8253e236ba5ca9fa02eb8f0cdd04137268. Pixel footage used backendc8c2b98db6445ec4edfc1998f56d8fef0b211edb; the filmed iPhone is an earlier one-second UI ona384616. - iOS 0.1.0 (3) is processed VALID and waiting for external beta review. No public TestFlight link is available as of October 20, 22:08 UTC.
- Digital audio does not establish acoustic benefit. The Mac diagnostic host reports offline, with physical control disabled. Phone A/B excerpts demonstrate playback, not a calibrated comparison.
- The repair flow is disabled. Current main permits Developer pushes; a single reviewer who is also the author is not an enforced second-person merge gate.
- Demo video: https://www.youtube.com/watch?v=pgcmnXmLTd8. Prepared film duration: 2:46.
Recording credit: Library of Congress Citizen DJ, "Joe Turner blues" medley excerpt. Collection reuse terms.
Built With
- expo.io
- firestore
- gitlab
- gitlab-ci-cd
- gitlab-duo-agent-platform
- google-cloud
- google-cloud-run
- mediabunny
- python
- react
- react-native
- typescript
Log in or sign up for Devpost to join the conversation.