Two labellers, three arms
One fits a model and always answers. The other declines.
keypoint-MoSeq
MoSeq fits a model that assumes behaviour is a sequence of discrete chunks, and slices every frame into one. It always returns an answer, including when it is given noise.
nonparametric v1
The nonparametric labeller finds stretches that recur across animals and labels only frames that closely match one, leaving the rest unlabelled. It declines to label a smooth continuum entirely.
nonparametric v2
The same labeller, with each seed's threshold calibrated against a null instead of set to one arbitrary distance. Five times the coverage, at contamination below MoSeq's.

| MoSeq | nonparam v1 | nonparam v2 | |
|---|---|---|---|
| coverage | 100% by construction | 14.0% | 76.0% |
| abstention | none — no abstain bin exists | 86.01% | 24.02% |
| artifact mass | 2.8% | 0.00% | 2.16% |
| surrogate assignment | not calibrated against one | 0.00% | α = 1e-4 per seed |
| grammar | 1,491provisional | INCONCLUSIVE, 0 of 0 | 8 of 8 surviving |
| noise control | white noise survives it too | no n-gram to test | not yet run |
| human validation | none | none | none |
The 2.8% figure is the conservative half of two: a further 9 labels (18.9% of frames) are enriched for tracking flags but not in every stratum, which means their failure tracks posture — real behaviour that degrades tracking, not the tracker alone. Counting both as one number would overstate the contamination.
The v1 arm's 0.00% surrogate assignment has a 24× margin and does not show its acceptance regions are tight. Phase, AR and OU surrogates all sit about 24× further from the corpus than the corpus sits from itself, so any threshold calibrated against them lands past full coverage.