Skip to content

Commit 4271f94

Browse files
committed
confirmed LB-1 is complete
1 parent 75ccb41 commit 4271f94

4 files changed

Lines changed: 14 additions & 14 deletions

File tree

docs/arrows/index.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
schema_version: 1
2-
last_updated: 2026-04-13
2+
last_updated: 2026-04-17
33

44
arrows:
55
lighthouse-protocol-intelligence:

docs/arrows/lighthouse-protocol-intelligence.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Decodes raw photon timestamps into calibrated sweep angles and lighthouse calibr
1515
- [docs/llds/lighthouse-protocol-intelligence.md](../llds/lighthouse-protocol-intelligence.md)
1616

1717
### EARS
18-
- [docs/specs/lighthouse-protocol-intelligence-specs.md](../specs/lighthouse-protocol-intelligence-specs.md) (33 specs)
18+
- [docs/specs/lighthouse-protocol-intelligence-specs.md](../specs/lighthouse-protocol-intelligence-specs.md) (40 specs)
1919

2020
### Tests
2121
- src/test_cases/watchman.c
@@ -56,9 +56,10 @@ Decodes raw photon timestamps into calibrated sweep angles and lighthouse calibr
5656
| Gen2 LFSR | LPI-PROC-030 to 032 | 2 | 1 | 0 |
5757
| Angle computation | LPI-PROC-040 to 042 | 3 | 0 | 0 |
5858
| Sensor activation filtering | LPI-PROC-050 to 053 | 4 | 0 | 0 |
59+
| Back-face normal filter | LPI-PROC-060 to 066 | 7 | 0 | 0 |
5960
| Reprojection model | LPI-DATA-060 to 063 | 4 | 0 | 0 |
6061

61-
**Summary:** 29 of 33 specs implemented; 3 active gaps; 0 deferred.
62+
**Summary:** 36 of 40 specs implemented; 3 active gaps; 0 deferred.
6263

6364
## Key Findings
6465

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@
1919

2020
Each item either (a) lets bad data through without visibility, or (b) makes on-set incident response harder because docs/specs don't match reality.
2121

22-
- [ ] **LB-1 — Close spec drift on back-face filter** (`LPI-PROC-060` through `LPI-PROC-066`)
22+
- [x] **LB-1 — Close spec drift on back-face filter** (`LPI-PROC-060` through `LPI-PROC-066`)
2323
- Category: **coherence / operational safety**
24-
- Feature deployed to both Pis with `--filter-normal-facingness 0.1`. Seven specs in [lighthouse-protocol-intelligence-specs.md](specs/lighthouse-protocol-intelligence-specs.md) still marked `[ ]`.
25-
- Fix: mark `[x]`, update [lighthouse-protocol-intelligence.md](arrows/lighthouse-protocol-intelligence.md) arrow-doc coverage table.
26-
- Risk if skipped: on-set grep "is the back-face filter in?" returns "not implemented" during a 3am incident.
24+
- 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).
25+
- Arrow-doc coverage table still needs updating in [lighthouse-protocol-intelligence.md](arrows/lighthouse-protocol-intelligence.md).
2726

2827
- [ ] **LB-2 — Verify GSS solve-failure rejection** (`DDS-BE-054`)
2928
- Category: **fail-closed on calibration corruption**

docs/specs/lighthouse-protocol-intelligence-specs.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ Prefix: **LPI**
5151

5252
## Back-Face Normal Filter
5353

54-
- [ ] **LPI-PROC-060**: When `filter-normal-facingness` ≥ -0.5, the system shall evaluate each incoming sensor hit against the back-face criterion before any other filtering: compute `facingness = dot(quatrotatevector(OutPose.Rot, sensor_normals[sensor_id]), normalize(bsd[lh].Pose.Pos - sensorInWorld))` and reject the hit if `facingness < filterNormalFacingness`.
55-
- [ ] **LPI-PROC-061**: When `filter-normal-facingness` < -0.5, the system shall skip the back-face filter entirely and pass the hit to subsequent filtering stages unchanged.
56-
- [ ] **LPI-PROC-062**: If the tracked object's `sensor_normals` or `sensor_locations` field is NULL, the system shall skip the back-face filter for that object (not all device types carry sensor geometry data).
57-
- [ ] **LPI-PROC-063**: While `poseConfidence` is below `filter-normal-min-confidence`, the system shall skip the back-face filter (pose not yet reliable enough to compute a trustworthy world-frame normal).
58-
- [ ] **LPI-PROC-064**: If the lighthouse referenced by the incoming hit does not yet have `PositionSet`, the system shall skip the back-face filter for that hit (lighthouse position needed to compute direction-to-LH).
59-
- [ ] **LPI-PROC-065**: The back-face filter shall run before the Chauvenet outlier filter so that geometrically impossible hits are rejected upstream, before they influence the per-sensor running statistics.
60-
- [ ] **LPI-PROC-066**: When `filter-normal-facingness` ≥ -0.5 and a hit is rejected by the back-face filter, the system shall emit a `SV_VERBOSE(105)` log line including the measured facingness, the threshold, and the (lh, sensor_id, axis) triple.
54+
- [x] **LPI-PROC-060**: When `filter-normal-facingness` ≥ -0.5, the system shall evaluate each incoming sensor hit against the back-face criterion before any other filtering: compute `facingness = dot(quatrotatevector(OutPose.Rot, sensor_normals[sensor_id]), normalize(bsd[lh].Pose.Pos - sensorInWorld))` and reject the hit if `facingness < filterNormalFacingness`.
55+
- [x] **LPI-PROC-061**: When `filter-normal-facingness` < -0.5, the system shall skip the back-face filter entirely and pass the hit to subsequent filtering stages unchanged.
56+
- [x] **LPI-PROC-062**: If the tracked object's `sensor_normals` or `sensor_locations` field is NULL, the system shall skip the back-face filter for that object (not all device types carry sensor geometry data).
57+
- [x] **LPI-PROC-063**: While `poseConfidence` is below `filter-normal-min-confidence`, the system shall skip the back-face filter (pose not yet reliable enough to compute a trustworthy world-frame normal).
58+
- [x] **LPI-PROC-064**: If the lighthouse referenced by the incoming hit does not yet have `PositionSet`, the system shall skip the back-face filter for that hit (lighthouse position needed to compute direction-to-LH).
59+
- [x] **LPI-PROC-065**: The back-face filter shall run before the Chauvenet outlier filter so that geometrically impossible hits are rejected upstream, before they influence the per-sensor running statistics.
60+
- [x] **LPI-PROC-066**: When `filter-normal-facingness` ≥ -0.5 and a hit is rejected by the back-face filter, the system shall emit a `SV_VERBOSE(105)` log line including the measured facingness, the threshold, and the (lh, sensor_id, axis) triple.
6161

6262
## Reprojection Model
6363

0 commit comments

Comments
 (0)