· ✦ · ── ─── ●───●──●╌╌╌╌●──●─ ─── · ✦
✦ · · no fix · 52 s ↑ · ·
The map already answered “where are you now?” — positions as signed, expiring claims that age honestly in front of you. This release answers the other question a search operation asks: “where did you actually go during this operation?” They are different questions, and they stay different mechanisms.
🥾 Field Sessions. On a sector or a place: Start sweep. The phone keeps recording with the screen off, in a pocket, for as long as the operation runs — and every clause of how that is allowed to happen is load-bearing. Background location exists only inside an explicitly started, visibly active, bounded session: it begins with your press on a button that says what it does, a persistent notification names the operation for its whole duration and carries the Stop that ends it, and the manifest still declares no background-location permission at all — recording with no session and no visible card is structurally impossible, not merely against policy. It is all in ADR-034.
A gap is a sample, not a silence. GPS was absent for 52 seconds; the phone slept; two fixes merely happened far apart — those are different claims about the world, and a bare polyline renders them identically. The track format makes every gap an item a reader must consume, with a cause the recorder can actually defend: no_fix only when the platform itself said so, suspended only when sleep was measured by the clock pair that keeps ticking through it, unknown otherwise — a recorder that does not know says so, it never invents. The map draws a gap as a gap; the GPX export breaks its segments in the same places. The system never draws a line through a forest because it wanted a continuous one.
Kill the app mid-sweep and the recording survives — it lives in the node, not the screen. The restarted service asks the node whether the session still runs and claims it back, wearing the seam as one honest suspended gap. A sweep nobody comes back for finalizes as interrupted with the walked track preserved — and its task stays open, because a ✓ on work that was not finished would be a lie.
When it ends, the fact travels first. sweep.completed.v1 is a radio-sized event — 348 bytes worst-case against the 500-byte LoRa frame, measured cold — so a receiver two ridges away learns “Sector B3 swept · 13:02–13:47 · 2.7 km · nothing found” the moment it happens. The detailed track is an asset and arrives when broadband does. LoRa: what happened. Broadband: the full how.
🖐 A place is born from a finger on the map. Arm it, tap where it is, name it. Typed coordinates were never offered on purpose — a number in a form is a different claim than a finger on the map — but until now the only door was the API. The flow lands you on the new place’s card, where the sweep button is.
📎 An observation can point at its evidence. “Нашёл ботинок, вот фото” — one photo per observation, deliberately: an observation is a sentence plus one piece of evidence, and three photos are three observations. The note stays radio-sized (the photo travels as media, the event carries a 32-byte reference), so the fact crosses the radio now and the picture follows when a fatter pipe appears.
Measured, not assumed: two live sessions on open water — 29 minutes and an hour and a half, screen off, no cable — recorded 472 points at the designed 15-second cadence with zero gaps and no wake lock held. That number is why v1 holds no wake lock: the decision stands on evidence, and on hardware where Doze does bite, the bite becomes honest suspended gaps rather than a corrupted track.
Two formats join the frozen .v1 families: field.track.v1 and sweep.completed.v1. Everything ADR-033 froze in beta.1 stays frozen; everything it left free stays free. The beta suffix still marks the reach of our evidence, nothing else.
🐛 Broken, or claiming more than it can prove? → Field notes.