Your Robot Moved Wards and Didn't Tell You: Relocation Detection Without GPS
Tuesday, 11pm. Night nurse Sarah in an eldercare facility picks up the companion robot from Ward 3B and moves it to Ward 7A. A resident down the hall has been anxious. Sarah thinks the robot might help. She does not log this in any system. She does not tell the fleet operator. She carries the robot 40 metres down a corridor and puts it on a bedside table.
Wednesday, 8am. The fleet dashboard shows a relocation alert for Robot #247. Ward reassignment flagged. Fingerprint drift exceeds threshold. The facility manager investigates and discovers the move.
There is no GPS in this building. No BLE beacons. No Wi-Fi fingerprinting infrastructure. No indoor positioning system of any kind.
How did the system know?
The Robot's Operational Identity Changed
The robot did not detect its own movement. It has no motion sensor designed for room-level tracking. What it has is a familiarity accumulator for every environmental context it has encountered — and when the environment changes, those accumulators tell the story.
In Ward 3B, Robot #247 had built up a stable operational identity over weeks. Its fingerprint looked like this:
Ward 3B (baseline, 6 weeks deployed):
|K| = 142 (vocabulary: 142 distinct contexts encountered)
mu_f = 0.47 (mean familiarity: moderate, well-established)
sigma^2_f = 0.08 (variance: experience fairly evenly distributed)
p_I = 0.31 (Phase I: 31% low-familiarity time)
rho = 0.19 (density: moderately sparse context transitions)
g = 16 (groups: 16 structural clusters)
rhythm = (0.24, 0.29, 0.28, 0.19) (diurnal: roughly balanced)
presence = (0.18, 0.42, 0.14, 0.26) (social: mostly static nearby)
This is a robot that knows its environment. Mean familiarity of 0.47 means it has seen most of its contexts many times. Only 31% of its time is in Phase I (low familiarity). Its vocabulary is stable — 142 contexts, not growing rapidly. The fingerprint has been consistent for weeks.
Then it was moved to Ward 7A. Within 24 hours, the fingerprint changed:
Ward 7A (24 hours after relocation):
|K| = 167 (vocabulary: 25 new contexts appeared)
mu_f = 0.28 (mean familiarity: dropped — new contexts dilute the average)
sigma^2_f = 0.21 (variance: spiked — some old contexts still familiar, new ones at zero)
p_I = 0.58 (Phase I: 58% low-familiarity time — almost double)
rho = 0.11 (density: dropped — new contexts have few transitions yet)
g = 21 (groups: 5 new clusters emerged)
rhythm = (0.19, 0.25, 0.24, 0.32) (diurnal: night-shifted, consistent with night move)
presence = (0.22, 0.31, 0.18, 0.29) (social: different presence pattern)
Every component moved. Vocabulary jumped by 25 (new contexts the robot had never seen before). Mean familiarity dropped from 0.47 to 0.28 (new contexts start at zero, diluting the average). Familiarity variance nearly tripled (bimodal distribution: old contexts still familiar, new ones at zero). Phase I proportion nearly doubled (more time in low-familiarity operational mode). State matrix density dropped (new contexts have not yet built transition patterns). Five new structural clusters appeared.
This is not subtle. This is a fingerprint rupture.
The Drift Formula
The relocation detection mechanism from patent section [0018] is based on fingerprint drift:
d_drift(T) = ||f_T - f_baseline||
Where f_T is the current fingerprint, f_baseline is the established baseline fingerprint, and ||...|| is a weighted distance metric. The baseline is a rolling average of recent fingerprints during stable operation.
The composite distance formula from [0019a] weights the three most diagnostic components:
d_composite = w_v * d_vocabulary + w_f * d_familiarity + w_p * d_phase
With weights:
| Component | Weight | What It Captures | |---|---|---| | Vocabulary drift (d_v) | w_v = 0.40 | New contexts appearing, old ones going inactive | | Familiarity drift (d_f) | w_f = 0.35 | Accumulators resetting for new contexts | | Phase drift (d_p) | w_p = 0.25 | Shift toward Phase I (low familiarity) |
Vocabulary drift gets the highest weight because it is the most immediate signal. When a robot moves to a new environment, it encounters context keys it has never seen before. The vocabulary cardinality jumps. Old context keys that were active in the previous location stop appearing. The vocabulary turnover — new keys in, old keys out — is the earliest and strongest indicator of relocation.
Familiarity drift is second. New contexts enter the familiarity accumulator at zero. The mean drops. The variance spikes (bimodal: old contexts high, new contexts low). This signal takes hours to develop because it depends on the accumulator dynamics.
Phase drift is third. As familiarity drops, the robot spends more time in Phase I (low familiarity). This is a consequence of the familiarity drop, so it lags behind vocabulary and familiarity signals. But it is a strong confirmatory signal — a genuine relocation produces a sustained Phase I increase, while a transient vocabulary spike (a one-time unusual event) does not.
The Adaptive Threshold
Not every fingerprint fluctuation is a relocation. The robot's environment is not static even when the robot stays in the same room. New people visit. Furniture gets moved. Seasons change the lighting. The drift metric fluctuates at a baseline level even during normal operation.
The relocation threshold from [0019b] adapts to the robot's individual baseline:
theta_reloc = mu_drift + 3 * sigma_drift
Where mu_drift is the mean of the drift metric over the past N stable periods, and sigma_drift is its standard deviation. The 3-sigma threshold means that a relocation alert fires only when the drift exceeds what the robot would expect from normal environmental variation with 99.7% confidence.
For Robot #247 in Ward 3B, the baseline drift was approximately:
mu_drift = 0.04 (small daily fluctuations)
sigma_drift = 0.02
theta_reloc = 0.04 + 3 * 0.02 = 0.10
The composite drift after relocation to Ward 7A:
d_vocabulary = |167 - 142| / 142 = 0.176
d_familiarity = |0.28 - 0.47| / 0.47 = 0.404
d_phase = |0.58 - 0.31| / 0.31 = 0.871
d_composite = 0.40 * 0.176 + 0.35 * 0.404 + 0.25 * 0.871
= 0.070 + 0.141 + 0.218
= 0.429
The composite drift of 0.429 exceeds the threshold of 0.10 by more than 4x. This is a high-confidence relocation detection.
What Happens After Detection
The fleet analytics service flags the relocation. Three things happen, as described in [0020]:
1. Baseline re-initialisation. The robot's baseline fingerprint is reset. The old baseline (Ward 3B) is archived for audit. A new baseline will be established from fingerprints collected in Ward 7A. During the re-stabilisation period, the robot is flagged as "recently relocated" on the dashboard and the relocation threshold is temporarily widened to avoid false alerts during adaptation.
2. Pre-relocation fingerprint archived. The last stable fingerprint from Ward 3B is stored with a timestamp and associated with the relocation event. This creates an audit trail: the robot was in environment X (fingerprint A) until time T, then moved to environment Y (fingerprint B). The audit trail contains no information about who moved the robot, who was in either room, or what happened during the move.
3. Re-stabilisation monitoring. The fleet dashboard tracks the robot's fingerprint convergence in the new environment. Mean familiarity should climb. Phase I proportion should decline. Vocabulary growth should slow as the robot finishes encountering new contexts. If the robot does not stabilise within the expected window (typically 5-14 days depending on environment complexity), the dashboard flags it for investigation.
Why GPS Cannot Do This
Indoor GPS does not work. This is not a funding problem or a technology maturity problem. GPS signals do not penetrate building structures reliably. Indoor positioning requires purpose-built infrastructure.
BLE beacons work but cost $15,000-40,000 per facility to install, calibrate, and maintain. They require ongoing recalibration as the RF environment changes. They tell you WHERE the robot is but nothing about its operational state. A robot in Ward 7A that is functioning normally and a robot in Ward 7A that is malfunctioning both report the same coordinates.
Wi-Fi fingerprinting works in some buildings but requires a training phase, degrades over time, and provides room-level accuracy at best. It also requires the robot to have Wi-Fi connectivity and the facility to have a dense enough AP deployment.
The CCF fingerprint requires no infrastructure. No beacons. No access points. No GPS receivers. No training phase. The robot detects its own relocation from the disruption in its operational identity — data structures it already maintains for behavioural gating. The marginal cost of relocation detection is zero.
Beyond Eldercare: Warehouses, Agriculture, Mining
The relocation detection mechanism is environment-agnostic. It depends on the robot encountering different contexts in different locations. This is true of any real-world deployment.
Warehouse robotics. A pick-and-place robot assigned to Zone C gets moved to Zone A. The vocabulary changes (different product types, different shelf configurations, different ambient conditions). The fingerprint drifts. The fleet manager knows before the next shift.
Agricultural drones. A monitoring drone assigned to Field 12 gets reassigned to Field 3 by a farm worker. The vocabulary changes (different crop height, different soil moisture readings, different pest patterns). The fingerprint drifts. The agronomist's dashboard flags it.
Mining robots. An inspection robot assigned to Level 3 gets moved to Level 5. The vocabulary changes (different rock types, different ventilation patterns, different temperature profiles). The fingerprint drifts. The operations manager investigates.
In every case: no GPS, no beacons, no infrastructure, no raw sensor data transmitted. Just 20 numbers that changed in a way consistent with relocation.
How Different Is Different Enough?
The three-environment simulation (seed 20260426) quantifies the fingerprint separation between radically different environments:
| Metric | Forest | Mars | Bedroom | |---|---|---|---| | Vocabulary |K| | 148 | 76 | 295 | | Phase I proportion | 61.4% | 52.1% | 76.1% | | State matrix density | 24.0% | 63.0% | 4.2% | | Mean familiarity | 0.31 | 0.38 | 0.12 | | Context group count | 20 | 14 | 9 |
Jaccard distances between any two environments range from 0.78 to 0.95. These are near-maximal separations. A robot relocated from a forest environment (|K|=148, density 24%) to a Mars-like habitat (|K|=76, density 63%) would show vocabulary, density, and group count shifts so large that the composite drift would exceed any reasonable threshold within hours.
Even between more similar environments — two different eldercare wards — the combination of vocabulary turnover (different context keys), familiarity reset (new contexts start at zero), and phase shift (more Phase I time) produces reliable detection. The multi-component fingerprint makes relocation detection robust because a genuine relocation disturbs multiple components simultaneously, while normal variation typically affects one component at a time.
The implementation uses ccf-core on crates.io. The relocation detection algorithm is a downstream consumer of the identity fingerprint, which is itself a read-only projection of the CCF runtime's existing data structures.
For the underlying trust mathematics — how familiarity accumulators are updated, how phase boundaries work, and why the minimum gate is forced — see The Forced Convergence Theorem and Sinkhorn-Knopp for Trust.
Full patent claim structure at /patent. Architecture overview at /how-it-works.
— Colm Byrne, Founder — Flout Labs, Galway, Ireland
Patent pending. US Provisional 64/039,623.
FAQ
How quickly does the system detect relocation?
It depends on the magnitude of the environmental change. A move to a completely different environment (different floor, different building) produces detectable vocabulary drift within hours — as soon as the robot encounters enough new context keys to shift the fingerprint beyond the adaptive threshold. A move to a very similar environment (adjacent ward with similar layout) takes longer, typically 12-48 hours, because the vocabulary overlap is higher and the drift accumulates more slowly.
Can the system distinguish relocation from a major environmental change in the same location?
This is the environmental drift case, covered in detail in a companion post. The short answer: relocation produces a sudden, large, multi-component fingerprint shift (vocabulary, familiarity, and phase all move together within hours). Environmental drift in a fixed location produces a gradual, sustained shift in specific components (e.g., temporal rhythm changes over weeks as schedules adjust). The composite drift formula and the adaptive threshold are calibrated to distinguish these cases. A relocation exceeds the threshold abruptly. Environmental drift approaches it gradually.
What if someone moves the robot and moves it back before detection?
If the robot is returned to its original location before enough new contexts accumulate to trigger the threshold, the relocation goes undetected. The minimum detection window depends on the dissimilarity of the two environments. For a very brief relocation (minutes) to a very similar environment, the fingerprint may not shift enough. For a relocation lasting several hours to a different floor, detection is highly likely. The system is designed for operationally significant relocations — the ones that affect the robot's deployment purpose — not for brief physical movements.
Does the system require a training period in the new location?
No. The detection is based on deviation from the established baseline, not on recognition of the new location. The robot does not need to have been in Ward 7A before to detect that it is no longer in Ward 3B. Any sufficiently different environment will produce vocabulary, familiarity, and phase shifts that trigger the adaptive threshold. The new location does not need to be in any database.
Can a malicious actor suppress the relocation alert by gradually moving the robot?
In theory, an adversary could attempt to avoid detection by making a series of very small moves, each below the adaptive threshold. In practice, the threshold adapts — mu_drift and sigma_drift are computed from recent history. A sustained pattern of slightly-above-baseline drift would itself become the new baseline, but the familiarity accumulator dynamics make this difficult. Moving the robot even a short distance to a new environment introduces new context keys, and the familiarity accumulators for those keys start at zero. The bimodal familiarity distribution (old contexts familiar, new contexts unfamiliar) is a strong signal that is hard to introduce gradually. You would need to move the robot to a location that produces context keys that are already in its vocabulary — which is possible but requires detailed knowledge of the CCF quantisation scheme and the robot's accumulated state.