@@ -6,17 +6,24 @@ import {
66} from '@domain/recognition/value-objects/RecognitionDiagnostics' ;
77
88/**
9- * The same statistics measured over SWL-LSE's test split — `tools/train`, 598 recordings.
9+ * The same statistics over SWL-LSE's test split — `tools/train`, 598 recordings.
1010 *
11- * Shown beside the live numbers because the model scores near-noise in the browser while
12- * measuring 0.741 offline, and feature parity with the trainer is already verified. So the
13- * input differs, and the part whose numbers do not match is where.
11+ * Medians, not means. The mean of a hand block is 3.37 and its median 0.73: three of the
12+ * sixty-nine floats are the wrist relative to the torso, and on the 0.01% of frames where
13+ * MediaPipe collapses shoulder width to nearly zero that division reaches six figures. A
14+ * mean reference flagged a perfectly healthy vector as broken by a factor of three.
1415 */
1516const EXPECTED : Record < string , { empty : number ; magnitude : number } > = {
16- 'Mano derecha' : { empty : 0.238 , magnitude : 3.37 } ,
17- 'Mano izquierda' : { empty : 0.377 , magnitude : 3.61 } ,
18- Torso : { empty : 0.0 , magnitude : 0.515 } ,
19- Cara : { empty : 0.002 , magnitude : 0.157 } ,
17+ 'Mano derecha' : { empty : 0.238 , magnitude : 0.73 } ,
18+ 'Mano izquierda' : { empty : 0.377 , magnitude : 0.73 } ,
19+ Torso : { empty : 0.0 , magnitude : 0.51 } ,
20+ Cara : { empty : 0.002 , magnitude : 0.15 } ,
21+ } ;
22+
23+ const VETO_LABELS : Record < WindowVeto , string > = {
24+ classifier : 'el modelo: ninguna opción llegó a su mínimo' ,
25+ stabilizer : 'el estabilizador: el modelo respondió pero se quedó corto' ,
26+ duplicate : 'repetido: mismo signo que el anterior' ,
2027} ;
2128
2229/**
@@ -26,12 +33,6 @@ const EXPECTED: Record<string, { empty: number; magnitude: number }> = {
2633 * deployed page, so a dev-only panel would never once be looked at while the bug is
2734 * reproducing.
2835 */
29- const VETO_LABELS : Record < WindowVeto , string > = {
30- classifier : 'el modelo: ninguna opción llegó a su mínimo' ,
31- stabilizer : 'el estabilizador: el modelo respondió pero se quedó corto' ,
32- duplicate : 'repetido: mismo signo que el anterior' ,
33- } ;
34-
3536export class DiagnosticsPanel {
3637 private open = false ;
3738 private latest : RecognitionDiagnostics = EMPTY_DIAGNOSTICS ;
@@ -84,7 +85,8 @@ export class DiagnosticsPanel {
8485 [ 'Última ventana' , d . lastWindowFrames ? `${ d . lastWindowFrames } fotogramas` : '—' ] ,
8586 [ 'Motor cargado' , d . vocabularyReady ? 'sí' : 'no' ] ,
8687 [ 'Veces consultado' , `${ d . vocabularyInvocations } ` ] ,
87- [ 'Palabras escritas' , `${ d . wordsEmitted } ` ] ,
88+ [ 'Palabras del vocabulario' , `${ d . wordsEmitted } ` ] ,
89+ [ 'Letras deletreadas' , `${ d . lettersEmitted } ` ] ,
8890 [ 'Bloqueado por' , d . lastVeto ? VETO_LABELS [ d . lastVeto ] : '—' ] ,
8991 ] ;
9092
0 commit comments