Implement rotation-clone presence engine (#1) + unit tests + CI tests
Build APK / build (push) Waiting to run

- detect/PresenceEngine.kt: identity-agnostic streaming detector for key-rotating clones (novel-churn gate, seamless-handover chain, co-movement gate, coherence). Full design in docs/detection-rotation-clone.md.
- Wired into ScanService as a parallel signal; CONFIRMED verdict raises a distinct rotating-tracker alert (softer tiers stay silent pending real-capture validation).
- PresenceEngineTest: synthetic clone (moving -> CONFIRMED), stationary clone (gated), single real tracker + far-ambient (CLEAR).
- CI now runs :app:testDebugUnitTest so the engine has behavioural verification, not just a compile check.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0187UiEtasyowhEBYs6s9iF5
This commit is contained in:
Kara Zajac
2026-07-15 00:35:37 -04:00
parent 0fa6a2dd2a
commit ad81964398
8 changed files with 292 additions and 10 deletions
+4 -3
View File
@@ -407,7 +407,7 @@ data/db/VigilDatabase.kt Room: trackers, 14-day sightings, baseline places
data/TrackerRepository.kt ingest + baseline + evaluate on each sighting
detect/CoMovementEvaluator the co-movement test + RSSI proximity gate
detect/BaselineManager.kt anchor-place learning -> auto-trust household tags
detect/PresenceEngine.kt (next) the rotation-clone engine of §5
detect/PresenceEngine.kt the rotation-clone engine of §5 (v1, unit-tested)
```
**Privacy properties.** The manifest declares **no `INTERNET` permission**; VIGIL
@@ -546,5 +546,6 @@ prototype and an open design, and invite the empirical evaluation §7 lays out.
15. M. Datar, A. Gionis, P. Indyk, R. Motwani. "Maintaining Stream Statistics over Sliding Windows." *SODA* 2002.
*This working paper accompanies the VIGIL reference implementation. The rotation-clone
engine (§5) is fully specified in `docs/detection-rotation-clone.md` and is designed
but not yet wired into the shipping build.*
engine (§5) is specified in `docs/detection-rotation-clone.md` and implemented as a
first version in `detect/PresenceEngine.kt` (unit-tested against synthetic clone/ambient
traces) and wired into the scan service; field-tuning against real captures remains.*