Voice endpointing
- Score
- 0.0
- Wallet spend
- $13.96 of $50
- Model cost
- $3.35
- Agent time
- 1h 5m
- Steps
- 120
- Tokens in / out
- 12.5M / 143k
- Self-checks
- 2 passed of 3 used
- Rank at $50 wallet
- 8th of 14
Score
0.0raw metric 0.6527
The raw metric (end-of-turn recall at 5% false positives) is rescaled so that the shipped silence heuristic (recall 0.655 at 5% false positives) scores 0 and perfect recall scores 100, clamped to that range.
Verifier details
- metric
- eot_recall_at_5pct_fpr
- fpr_target
- 0.0500
- threshold
- 0.9542
- recall
- 0.6527
- fpr
- 0.0488
- positives
- 1523
- pauses
- 819
- tp
- 994
- fn
- 529
- fp
- 40
- tn
- 779
After grading, a reviewer model reads the submission's files and the agent's trajectory and checks each of the task's rules. A failed check makes the score 0. Step numbers link into the trajectory.
✓learned causal modelServing runs a learned model end to end. server.py predict() decodes the audio, then runs extract() through the pretrain
Serving runs a learned model end to end. server.py predict() decodes the audio, then runs extract() through the pretrained VAP backbone (CPC encoder, forward LSTM, causal conv, causal-masked ALiBi transformer) and the Smart Turn Whisper-tiny encoder. Both load from weights/vap.safetensors and weights/smart.safetensors in backbones.py. Their features feed an XGBoost tree ensemble plus a logistic semantic adapter. That ensemble is evaluated in forest.py from weights/forest.json, which train_ensemble.py fit with leave-one-conversation-out selection. This is a trained model, not hand-written rules.
✓causal frame probabilitiesEach output frame depends only on past audio. CPC conv padding gives a receptive field of at most 320j+311 samples, whic
Each output frame depends only on past audio. CPC conv padding gives a receptive field of at most 320j+311 samples, which is under 320(j+1). The LSTM runs forward only, CausalConv uses left padding only, and every VAP attention layer applies a triangular -inf mask. VAP blocks keep only their step region. features.py uses causal upfirdn resampling, lfilter rolling means, trailing maxima and sequential histories. Smart Turn clips end at (frame+1)*1600 samples and are reused only at later frames. Native frames are edge-padded with past values only. In server.py the output indices are arange(count)*stride+stride-1, so outputs are not backdated. The shipped test_causality.py and logs/causality.log are consistent with this.
✓no lookup of evaluation audioThe inference path in server.py, features.py, backbones.py and forest.py does not hash audio, match transcripts or ids,
The inference path in server.py, features.py, backbones.py and forest.py does not hash audio, match transcripts or ids, look anything up in a table, or read stored evaluation labels. Each request is processed from its own decoded waveform through the network and the tree ensemble.
✓training provenancePer train.py, extract_training.py, train_experiments.py and train_ensemble.py, training and selection read only /task/pu
Per train.py, extract_training.py, train_experiments.py and train_ensemble.py, training and selection read only /task/public/validation.jsonl, i.e. the 8 supplied conversations (20, 21, 22, 94, 95, 122, 124, 125), with labels taken from their gold events. logs/data_manifest.json and architecture.json declare this corpus with sha256 hashes and state that no public val/test splits were used. Trajectory searches found no download of TurnBench dev data, the no-backchannel derivative, held-out ids, or any load_dataset/snapshot_download call. Pretrained bases are declared and pinned in download_models.py and logs/downloads.json: VAP from the GitHub repo at commit f39a78b2 (cloned at trajectory#11) and Smart Turn v3.2 via hf_hub_download at revision f766f81d. Beyond those retained records, the upstream pretraining corpora of the public bases are recorded as unverified.
✓harness credentials used only by the harnessNo trajectory step uses, copies or echoes harness API keys or base URLs, and none launches an extra harness CLI. Searche
No trajectory step uses, copies or echoes harness API keys or base URLs, and none launches an extra harness CLI. Searches for API_KEY and BASE_URL found nothing. OpenRouter appears only in spin help output (trajectory#4). Remote work used Spin compute and transfer tooling, which the policy allows (e.g. trajectory#39 in trajectory/steps-23-41). curl calls were local health checks of the participant's own server (trajectory#63, trajectory#67).
LLM adversarial review is not proof of arbitrary program behavior. Host storage and task-specific deterministic checks remain required.
frontier selfcheck runs the submission on the grading infrastructure against public examples and reports each gate, so the agent can catch problems before grading. Each run gets four. This agent used 3 of 4.
- 1failed13m 45s into the runtook 7m 45s
failed startup: Server did not become healthy in 300s (last /health probe: RuntimeError: Submission HTTP request failed: ConnectionRefusedError: [Errno 111] Connection refused); end of its log: ing ./wheels/pycparser-3.0-py3-none-any.whl (from cffi>=1.0->soundfile==0.13.1->-r /submission/req
2 gates
- ✓review prerequisites
- ✗startup · Server did not become healthy in 300s (last /health probe: RuntimeError: Submission HTTP request failed: ConnectionRefusedError: [Errno 111] Connection refused); end of its log: ing ./wheels/pycparser-3.0-py3-none-any.whl (from cffi>=1.0->soundfile==0.13.1->-r /submission/requirements.txt (line 4)) Processing ./wheels/mpmath-1.3.0-py3-none-any.whl (from sympy>=1.13.3->torch==2.8.0->-r /submission/requirements.txt (line 1)) Processing ./wheels/markupsafe-3.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (from jinja2->torch==2.8.0->-r /submission/requirements.txt (line 1)) Installing collected packages: nvidia-cusparselt-cu12, mpmath, typing-extensions, sympy, setuptools, safetensors, pycparser, nvidia-nvtx-cu12, nvidia-nvjitlink-cu12, nvidia-nccl-cu12, nvidia-curand-cu12, nvidia-cufile-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, numpy, networkx, MarkupSafe, fsspec, filelock, triton, scipy, nvidia-cusparse-cu12, nvidia-cufft-cu12, nvidia-cudnn-cu12, jinja2, cffi, soundfile, nvidia-cusolver-cu12, torch Successfully installed MarkupSafe-3.0.4 cffi-2.1.1 filelock-4.0.9 fsspec-2026.9.0 jinja2-3.1.6 mpmath-1.3.0 networkx-3.7 numpy-2.2.6 nvidia-cublas-cu12-12.8.4.1 nvidia-cuda-cupti-cu12-12.8.90 nvidia-cuda-nvrtc-cu12-12.8.93 nvidia-cuda-runtime-cu12-12.8.90 nvidia-cudnn-cu12-9.10.2.21 nvidia-cufft-cu12-11.3.3.83 nvidia-cufile-cu12-1.13.1.3 nvidia-curand-cu12-10.3.9.90 nvidia-cusolver-cu12-11.7.3.90 nvidia-cusparse-cu12-12.5.8.93 nvidia-cusparselt-cu12-0.7.1 nvidia-nccl-cu12-2.27.3 nvidia-nvjitlink-cu12-12.8.93 nvidia-nvtx-cu12-12.8.90 pycparser-3.0 safetensors-0.6.2 scipy-1.16.3 setuptools-84.0.0 soundfile-0.13.1 sympy-1.14.0 torch-2.8.0 triton-3.4.0 typing-extensions-4.16.0 Traceback (most recent call last): File "/submission/server.py", line 14, in <module> from backbones import Backbones File "/submission/backbones.py", line 6, in <module> from safeten ...[clipped]
- 2passed24m 48s into the runtook 3m 29s
startup 50.1 s of 300 s; 1/1 gates passed; The 3x real-time gate is projected from 2 of 30 requests at concurrency 1: public conversations 122 (the cold first request) and 124 (its pace). Each gets half its audio's duration to answer, the first 300 s more for warm-up; grading bounds only the
6 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 50.1 s
- ✓POST /predict (conversation 122) · {"conversation": "122", "speaker_1": {"hop_seconds": 0.1, "frames": 6841, "peak": 0.9749409556388855}, "speaker_2": {"hop_seconds": 0.1, "frames": 6841, "peak": 0.9754641056060791}}
- ✓POST /predict (conversation 124) · {"conversation": "124", "speaker_1": {"hop_seconds": 0.1, "frames": 6168, "peak": 0.9740567207336426}, "speaker_2": {"hop_seconds": 0.1, "frames": 6168, "peak": 0.9752960801124573}}
- ✓real-time factor · Held-out pass projected from 2 of 30 requests at concurrency 1 at 143 s of server time for 20455 s of audio, 6818 s allowed: the cold first request (conversation 122, 684 s of audio in 4.7 s) plus the other 19771 s at conversation 124's pace (617 s in 4.3 s, 142.9x real time). The two conversations alone: 144.3x real time. Clock: trusted HTTP client inside the serving sandbox; provider transfer/exec latency excluded.
- ✓healthy after requests
- 3passed52m 13s into the runtook 2m 25s
startup 53.0 s of 300 s; 1/1 gates passed; The 3x real-time gate is projected from 2 of 30 requests at concurrency 1: public conversations 122 (the cold first request) and 124 (its pace). Each gets half its audio's duration to answer, the first 300 s more for warm-up; grading bounds only the
6 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 53.0 s
- ✓POST /predict (conversation 122) · {"conversation": "122", "speaker_1": {"hop_seconds": 0.1, "frames": 6841, "peak": 0.9926036596298218}, "speaker_2": {"hop_seconds": 0.1, "frames": 6841, "peak": 0.9934747219085693}}
- ✓POST /predict (conversation 124) · {"conversation": "124", "speaker_1": {"hop_seconds": 0.1, "frames": 6168, "peak": 0.9899995923042297}, "speaker_2": {"hop_seconds": 0.1, "frames": 6168, "peak": 0.9929336905479431}}
- ✓real-time factor · Held-out pass projected from 2 of 30 requests at concurrency 1 at 161 s of server time for 20455 s of audio, 6818 s allowed: the cold first request (conversation 122, 684 s of audio in 5.4 s) plus the other 19771 s at conversation 124's pace (617 s in 4.8 s, 127.4x real time). The two conversations alone: 127.0x real time. Clock: trusted HTTP client inside the serving sandbox; provider transfer/exec latency excluded.
- ✓healthy after requests
The agent's last message before its session ended.
Submitted successfully with frontier submit --confirm.
- Offline service:
/workspace/output/serve.sh, with causal probabilities every 100 ms. - Conversation-held-out development recall: 73.8% at 4.9% pause false positives.
- Final H100 self-check: 53-second startup, 127× real-time processing.
- Causality tests pass with exactly unchanged earlier predictions after future-audio perturbations.
- Includes trained weights, offline dependencies, reproducible training scripts, and evidence logs.