日志暂以英文提供 · the log is in English for now

传输日志/2026-08-29v1.0.0-beta.2

1.0.0-beta.2 — where you actually went

   ·  ✦   ·      ── ─── ●───●──●╌╌╌╌●──●─ ───       ·   ✦
 ✦    ·     ·        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.

在 github 上的发布 ↗下载构建 →