docs: record the live pacing dependence and the new test coverage
Some checks failed
tests / model-free (pull_request) Has been cancelled

The live label count is a function of frame pacing, not a fixed property: a
track needs two attempts to settle, so pushing frames faster than the classifier
drains them reports fewer labels (12/8/2/6 at full speed on the same clip, 14
paced, 38 of 30 frames). Precision stays 100% and 0 unknowns are accepted at
every pacing. Also records the local-scale and DecisionPolicy tests.
This commit is contained in:
tngo 2026-09-28 22:41:39 +09:00
parent 890e186182
commit 7fff0cf724

View file

@ -588,6 +588,25 @@ names 12 at 100% precision with 0 unknown accepts, first label on frame 3.
Offline on the corrected labels: 36/61 (59%) at 95% precision, 0/48 unknowns,
11 of those labels sourced from the text lane alone.
The live count is pacing-dependent, not a fixed property: a track needs two
attempts before it settles, so a harness that pushes frames faster than the
classifier drains them reports fewer labels. Re-run at four pacings on the same
12-frame clip: 12, 8, 2 and 6 named at full speed, 14 named with 0.1 s between
frames, and 38 named of 30 frames at 0.1 s. Precision stays 100% throughout and
0 unknowns are accepted at every pacing, which is the property that matters;
coverage is a function of how long the phone holds still, so it belongs to the
device measurement (G4), not to this record.
The shipped default scale now has test coverage. `make_session` builds only
`matcher`-backend engines, so `scale == "local"` in `_on_classified` never ran
in the suite - and that is the branch that was wrong twice. `LocalScaleEngine`
injects the lanes' evidence into the live path, and `LocalScaleTests` pins the
two jobs (a text-only read still labels the track; a text veto blocks a local
accept). `DecisionPolicyTests` pins the veto/fill-in boundary, including the
lane-order-vs-value case the rank re-sort broke. Both regressions were
re-injected to confirm the tests fail for the intended reason. Suite 251 -> 261.
The headline number is reproducible from the repo, not from a scratch script:
.venv/bin/python code/eval_identity.py --stock stock-lopia-clean \