69 lines
3.4 KiB
Markdown
69 lines
3.4 KiB
Markdown
# Tick 19 — 2026-05-22 07:44 UTC
|
||
|
||
**Thread:** R12 PABS implementation
|
||
**Verdict:** **R12 NEGATIVE → POSITIVE.** PABS detects unexpected occupants at **1,161× natural drift floor** vs R12 naive SVD's 11× — a **~100× lift** purely from using physics-grounded prediction.
|
||
|
||
## What shipped
|
||
|
||
- `examples/research-sota/r12_pabs_implementation.py` — pure-numpy PABS over R6.1's multi-scatterer forward operator.
|
||
- `examples/research-sota/r12_pabs_results.json` — full 6-scenario benchmark.
|
||
- `docs/research/sota-2026-05-22/R12-pabs-implementation.md` — research note documenting the NEGATIVE → POSITIVE conversion.
|
||
|
||
## Headline benchmark
|
||
|
||
| Scenario | PABS / drift | SVD (R12 baseline) / drift |
|
||
|---|---:|---:|
|
||
| Empty room (subject missing) | **7,362×** | 65× |
|
||
| Subject as expected (sanity check) | 0× | 0× |
|
||
| +1 new furniture | **84×** | 11× |
|
||
| +1 unexpected human | **1,161×** | 11× |
|
||
| Subject moved 10 cm | 21,966× | 90× |
|
||
| Natural drift floor (5% wall) | 1× | 1× |
|
||
|
||
## Why this is the meta-positive result
|
||
|
||
Two negative results in this loop (R12, R13). R12 has now been **revisited and turned positive** by using a tool (R6.1's multi-scatterer forward operator) that didn't exist when R12 was first run. This is the meta-lesson:
|
||
|
||
> A research loop that catalogues NEGATIVE results creates a backlog of revisitable work that pays off when later tools become available. R12 → R12 PABS is a worked example.
|
||
|
||
R13 cannot be similarly revisited — its 5 dB shortfall is a hard physics floor, not a missing model.
|
||
|
||
## The subject-moved-10cm caveat
|
||
|
||
Scenario F gives PABS=22,000×, which looks like a bug but is correct behaviour. PABS detects **any** structural mismatch between expected and observed. Real production PABS needs a **pose-aware forward model** that updates the expected scene from `pose_tracker.rs` in real-time. The actual structure-detection signal is **PABS-after-pose-update**.
|
||
|
||
This is ~50-100 LOC of Rust glue. Catalogued as R12.1 follow-up.
|
||
|
||
## Composes with everything
|
||
|
||
- **R6.1** unblocked this implementation
|
||
- **R7** gets precise per-link consistency definition (residual norm small on all links → no structure; spike on one → either local structure OR compromised link; mincut disambiguates)
|
||
- **R11** (maritime) enables container-tamper / hatch-seal applications
|
||
- **R12 NEGATIVE** → POSITIVE
|
||
- **R14** (V0 security feature) intruder detection without biometric storage
|
||
- **ADR-029** needs to reference PABS as the structure-detection primitive
|
||
- **R10** (foliage) PABS-vs-forest works if canopy modelled or learned
|
||
|
||
## Honest scope
|
||
|
||
- Pose-PABS closed loop not yet built (every subject move = false alarm)
|
||
- Synthetic data only; real-world drift floor needs measurement
|
||
- Population-prior body; per-subject body would tighten residual
|
||
- Single time-frame (real pipeline needs temporal averaging)
|
||
|
||
## Coordination
|
||
|
||
`ticks/tick-19.md`. No PROGRESS.md edit. Branch `research/sota-r12-pabs-implementation`.
|
||
|
||
## Remaining work
|
||
|
||
- **R12.1**: pose-PABS closed loop
|
||
- **R12.2**: localised residual decomposition (where is the structural change)
|
||
- **R12.3**: real-world validation on bench ESP32 captures
|
||
- **R3 follow-up**: physics-informed env_sig prediction
|
||
- **R6.2.1**: 3D ceiling/floor placement
|
||
- **R6.2.3**: chest-centric / pose-trajectory zones
|
||
- **ADR-107**: cross-installation federation w/ secure aggregation
|
||
|
||
~4.3h to cron stop. **19 ticks landed. 1 NEGATIVE result revisited and turned POSITIVE.**
|