mirror of
https://github.com/ruvnet/RuView
synced 2026-08-07 20:01:43 +00:00
9cd1b8ce2a
R12 (tick 5) was a NEGATIVE result: naive SVD-spectrum cosine distance detected structure changes at 0.69x the natural drift floor (= undetectable). R12 explicitly identified the revision: 'PABS over Fresnel basis'. R6.1 (tick 18) shipped the multi-scatterer Fresnel forward operator. This tick implements PABS on top of it. PABS = ||y_observed - y_predicted||^2 / ||y_observed||^2 Benchmark (5 m link, 2.4 GHz, subject + 4 wall reflectors expected): | Scenario | PABS / drift | SVD (R12) / drift | |--------------------------------|---------------:|------------------:| | Empty room (subject missing) | 7,362x | 65x | | Subject as expected (sanity) | 0x | 0x | | +1 new furniture | 84x | 11x | | +1 unexpected human | 1,161x | 11x | | Subject moved 10 cm | 21,966x | 90x | | Natural drift (5% wall shift) | 1x | 1x | PABS detects unexpected human at 1161x natural drift; R12 SVD detected at 11x. ~100x lift purely from physics-grounded prediction vs naive statistical eigenshift. R12 NEGATIVE -> POSITIVE. 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 the 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: PABS detects ANY mismatch between expected and observed scene. Real production PABS needs a pose-aware forward model that updates from pose_tracker.rs in real-time. The actual detection signal is PABS-after-pose-update. ~50-100 LOC Rust glue, catalogued as R12.1 follow-up. Composes: - R6.1 unblocked this implementation - R7 gets precise per-link consistency: residual small on all links = no structure; spike on one = local structure OR compromised link; mincut disambiguates - R11 enables maritime container-tamper / hatch-seal apps - R14 gets V0 security feature (intruder detection w/o biometric storage) - ADR-029 needs to reference PABS as structure-detection primitive - R10 PABS-vs-canopy works if forest modelled or learned Honest scope: - Pose-PABS closed loop not yet built - Synthetic data only; real-world drift floor needs measurement - Population-prior body; per-subject would tighten residual - Single time-frame; real pipeline needs temporal averaging Coordination: ticks/tick-19.md, no PROGRESS.md edit.
60 lines
1.5 KiB
JSON
60 lines
1.5 KiB
JSON
{
|
|
"model": "PABS = ||y_observed - y_predicted||^2 / ||y_observed||^2",
|
|
"forward_operator_source": "R6.1 multi-scatterer additive Fresnel",
|
|
"expected_scene": {
|
|
"subject_pos": [
|
|
2.5,
|
|
2.75
|
|
],
|
|
"wall_reflectors": 4
|
|
},
|
|
"link": {
|
|
"tx": [
|
|
0.0,
|
|
2.5
|
|
],
|
|
"rx": [
|
|
5.0,
|
|
2.5
|
|
],
|
|
"freq_ghz": 2.4
|
|
},
|
|
"scenarios": {
|
|
"A_empty_room": {
|
|
"description": "no occupant",
|
|
"pabs": 4.170183705070839,
|
|
"svd_distance": 0.5965843005537784
|
|
},
|
|
"B_subject_expected": {
|
|
"description": "subject where expected",
|
|
"pabs": 0.0,
|
|
"svd_distance": 0.0
|
|
},
|
|
"C_added_furniture": {
|
|
"description": "+1 new structural element",
|
|
"pabs": 0.04744306789447172,
|
|
"svd_distance": 0.1011460778806426
|
|
},
|
|
"D_unexpected_person": {
|
|
"description": "+1 unexpected human",
|
|
"pabs": 0.6575620431155754,
|
|
"svd_distance": 0.09866444424036849
|
|
},
|
|
"E_natural_drift": {
|
|
"description": "5%% wall reflectivity drift",
|
|
"pabs": 0.0005664412950287771,
|
|
"svd_distance": 0.009233808950251039
|
|
},
|
|
"F_subject_moved": {
|
|
"description": "subject shifted 10 cm",
|
|
"pabs": 12.442629346878062,
|
|
"svd_distance": 0.8354632981416396
|
|
}
|
|
},
|
|
"verdict": {
|
|
"pabs_signal_to_drift": 1160.8652986399395,
|
|
"pabs_furniture_to_drift": 83.75637212689702,
|
|
"svd_signal_to_drift": 10.685129481446127,
|
|
"svd_furniture_to_drift": 10.953884623949552
|
|
}
|
|
} |