|
8 | 8 |
|
9 | 9 | 33 open items in the libsurvive docs, bucketed by shoot-readiness impact. |
10 | 10 |
|
11 | | -- 6 **launch blockers** — silent corruption or grey failures (LB-1/LB-2/LB-4/LB-5 done; LB-3 deferred to on-Pi recording milestone; LB-6 open) |
| 11 | +- 6 **launch blockers** — silent corruption or grey failures (LB-1/LB-2/LB-4/LB-5/LB-6 done pending deploy; LB-3 deferred to on-Pi recording milestone) |
12 | 12 | - 5 **should fix before launch** — diagnosability gaps |
13 | 13 | - 7 **nice to have** — robustness / dev hygiene |
14 | 14 | - 8 **save for later** — irrelevant to stagehand (third-party bindings) |
@@ -43,14 +43,15 @@ Each item either (a) lets bad data through without visibility, or (b) makes on-s |
43 | 43 | - Bonus cleanup: `src/test_cases/residual_cascade_props.c:781` referenced `TE-PROC-040` but described the per-LH adaptive R formula → corrected to `TE-PROC-038`. |
44 | 44 | - Arrow doc updated: tracking-engine.md spec count 36→41, Kalman object tracker row now 030–042 (10 impl, 3 gaps), Kalman lighthouse tracker row now 050–051. |
45 | 45 |
|
46 | | -- [ ] **LB-6 — Measure + enable pose-emission gates** (`kalman-max-pose-angular-rate`, `--light-max-error`) |
| 46 | +- [x] **LB-6 — Measure + enable pose-emission gates** (`kalman-max-pose-angular-rate`, `--light-max-error`) — **pending on-tracker verification** |
47 | 47 | - Category: **operational safety / fail-closed on output** |
48 | | - - From [reflection-rejection.md](../reflection-rejection.md) bottom checklist. Orthogonal to existing input-side defenses. |
49 | | - - Without these, a reflection that slips past `light-outlier-threshold` + `filter-normal-facingness` reaches the output stream. |
50 | | - - Fix: |
51 | | - - [ ] Run `reflect_test.cap` with `--survive-verbose 105`, record per-pose angular rates during reflection bursts and clean tracking. |
52 | | - - [ ] Set `--kalman-max-pose-angular-rate` from the data (expected 5–10 rad/s). |
53 | | - - [ ] Enable `--light-max-error 0.01` in the agent config. |
| 48 | + - Empirical data from [reflection-rejection.md](reflection-rejection.md): smallest reflection jump 30°/frame → ~31 rad/s at 60 Hz; clean tracker <1 rad/s. Sufficient to pick thresholds without new captures. |
| 49 | + - Config updated 2026-04-17 in [scripts/stagehand-health](../../stagehand/scripts/stagehand-health) `DEFAULT_SURVIVE_ARGS`: |
| 50 | + - `--kalman-max-pose-angular-rate 10.0` (pose-emission gate, comfortably below 31 rad/s reflections, well above <1 rad/s clean) |
| 51 | + - `--light-max-error 0.01` (per-sensor reprojection-error gate) |
| 52 | + - Unit typo fix in [reflection-rejection.md:360-363](reflection-rejection.md): "3.1 rad/s" → "31 rad/s" (factor-of-10 error; 30° × 60 Hz = 0.524 rad × 60 = 31.4 rad/s). |
| 53 | + - Spec updates: TE-PROC-040/041/042 marked `[x]` — the code for both gates already existed ([survive_kalman_tracker.c](../../libsurvive/src/survive_kalman_tracker.c)); flags were just defaulted off. |
| 54 | + - **Remaining**: deploy to both Pis and verify trackers still work. |
54 | 55 |
|
55 | 56 | ## Should Fix Before Launch |
56 | 57 |
|
|
0 commit comments