Skip to content

Commit 8701de1

Browse files
committed
updated LB2
1 parent 4271f94 commit 8701de1

4 files changed

Lines changed: 12 additions & 14 deletions

File tree

docs/arrows/device-driver-stack.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ Produces raw sensor events (light pulses, IMU, config, buttons) from physical ha
5656
| GATT lighthouse control | DDS-BE-020 to 023 | 4 | 0 | 0 |
5757
| Playback driver | DDS-BE-030 to 034 | 5 | 0 | 0 |
5858
| UDP driver | DDS-BE-040 to 042 | 3 | 0 | 0 |
59-
| Global scene solver | DDS-BE-050 to 054 | 4 | 1 | 0 |
59+
| Global scene solver | DDS-BE-050 to 054 | 5 | 0 | 0 |
6060

61-
**Summary:** 30 of 31 active specs implemented; 1 active gap; 0 deferred.
61+
**Summary:** 31 of 31 active specs implemented; 0 active gaps; 0 deferred.
6262

6363
## Key Findings
6464

@@ -75,12 +75,12 @@ Produces raw sensor events (light pulses, IMU, config, buttons) from physical ha
7575
## Work Required
7676

7777
### Must Fix
78-
1. Add GSS solve-failure rejection path — if global scene solver result error exceeds threshold, retain previous calibration (DDS-BE-054)
78+
_(none — DDS-BE-054 verified implemented at poser_mpfit.c:978-989, retained in else branch; stagehand patch adds fail-loud callback at L981-988)_
7979

8080
### Should Fix
81-
2. Document `driver_usbmon.c` — what format it consumes and how to use it
82-
3. Document the off-by-two config length quirk in a comment visible to future USB backend implementors
83-
4. Evaluate `driver_simulator.c` — either complete it or mark it as unfinished
81+
1. Document `driver_usbmon.c` — what format it consumes and how to use it
82+
2. Document the off-by-two config length quirk in a comment visible to future USB backend implementors
83+
3. Evaluate `driver_simulator.c` — either complete it or mark it as unfinished
8484

8585
### Nice to Have
8686
5. Add GATT mode write confirmation readback (DDS-BE-022)

docs/arrows/index.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ arrows:
1515
device-driver-stack:
1616
status: MAPPED
1717
sampled: 2026-04-12
18-
audited: null
18+
audited: 2026-04-17
1919
blocks: []
2020
blockedBy: []
2121
detail: device-driver-stack.md
22-
next: "Add GSS solve-failure rejection and document driver_usbmon.c"
22+
next: "Document driver_usbmon.c and off-by-two config length quirk"
2323
drift: "driver_global_scene_solver makes direct cross-cluster call into Tracking Engine"
2424

2525
tracking-engine:

docs/launch-readiness-triage.2026-04-17.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,10 @@ Each item either (a) lets bad data through without visibility, or (b) makes on-s
2424
- Feature deployed to both Pis with `--filter-normal-facingness 0.1`. Verified implemented in `src/survive_sensor_activations.c:139-183` (2026-04-17). All 7 specs marked `[x]` in [lighthouse-protocol-intelligence-specs.md](specs/lighthouse-protocol-intelligence-specs.md).
2525
- Arrow-doc coverage table still needs updating in [lighthouse-protocol-intelligence.md](arrows/lighthouse-protocol-intelligence.md).
2626

27-
- [ ] **LB-2 — Verify GSS solve-failure rejection** (`DDS-BE-054`)
27+
- [x] **LB-2 — Verify GSS solve-failure rejection** (`DDS-BE-054`)
2828
- Category: **fail-closed on calibration corruption**
29-
- Spec: if global scene solver error exceeds threshold, reject result and retain previous calibration.
30-
- `--max-cal-error 0.01` clamps the initial solve, but mid-session re-solve rejection may not be wired.
31-
- Fix: audit `driver_global_scene_solver.c` for rejection path; implement if missing.
32-
- Risk if skipped: bad GSS solve silently overwrites good calibration mid-shoot.
29+
- Verified 2026-04-17. `solve_global_scene()` in `poser_mpfit.c:978-989` returns `false` when `status_failure || sensor_error > max_cal_error`. Calibration commit (`PoserData_lighthouse_poses_func` at L1047) is inside the success-only `else` branch — previous calibration retained by default on failure. `status_failure` also covers MPFit convergence errors (`res <= 0`) and max-iter termination.
30+
- **Fail-loud bonus**: stagehand patch at L981-988 invokes `stagehand_gss_failure_cb` so the agent emits `GSS_FAILURE` LOG_EVENT with `bestnorm`. Spec marked `[x]`; arrow doc updated to 31/31.
3331

3432
- [ ] **LB-3 — Recording file open/write failure = loud error** (`LI-BE-063`)
3533
- Category: **fail-loud (directly matches stagehand principle)**

docs/specs/device-driver-stack-specs.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,4 @@ Prefix: **DDS**
4949
- [x] **DDS-BE-051**: While a tracked object is in motion (detected via IMU), the system shall not accumulate measurements for global scene solving.
5050
- [x] **DDS-BE-052**: Where the `gss-auto-floor-height` config flag is set, the system shall set the floor Z coordinate from the minimum observed tracked object height.
5151
- [x] **DDS-BE-053**: Where the `disable-calibrate` config flag is set, the system shall skip all global scene solver activity.
52-
- [ ] **DDS-BE-054**: If the global scene solver produces a result with error above a configurable threshold, the system shall reject the result and retain the previous calibration.
52+
- [x] **DDS-BE-054**: If the global scene solver produces a result with error above a configurable threshold, the system shall reject the result and retain the previous calibration.

0 commit comments

Comments
 (0)