· ✦ · ── ─── ●───●──●╌╌╌╌●──●─ ─── · ✦
✦ · · no fix · 52 s ↑ · ·
Карта уже отвечала на «где ты сейчас?» — позиции как подписанные, истекающие заявления, честно стареющие у вас на глазах. Этот релиз отвечает на второй вопрос поисковой операции: «где ты реально прошёл во время этой операции?» Это разные вопросы, и они остаются разными механизмами.
🥾 Field Sessions. На секторе или месте: Начать свип. Телефон продолжает запись с погашенным экраном, в кармане, сколько идёт операция — и каждое слово о том, как это позволено, несущее. Фоновая геолокация существует только внутри явно запущенной, видимо активной, ограниченной сессии: она начинается с вашего нажатия на кнопку, которая говорит, что делает; несмываемое уведомление называет операцию всё её время и несёт Stop, который её заканчивает; а манифест по-прежнему не декларирует background-location вовсе — запись без сессии и без видимой карточки структурно невозможна, а не просто запрещена политикой. Всё это в ADR-034.
Разрыв — это сэмпл, а не тишина. GPS отсутствовал 52 секунды; телефон спал; два фикса просто оказались далеко друг от друга — это разные заявления о мире, а голая полилиния рисует их одинаково. Формат трека делает каждый разрыв элементом, который читатель обязан потребить, с причиной, которую записывающий может реально защитить: no_fix — только когда так сказала сама платформа, suspended — только когда сон измерен парой часов, продолжающей тикать сквозь него, unknown — иначе: кто не знает, тот так и говорит и никогда не выдумывает. Карта рисует разрыв разрывом; GPX-экспорт рвёт сегменты в тех же местах. Система никогда не проводит линию через лес потому, что ей хотелось непрерывной.
Убей приложение посреди свипа — запись выживет: она живёт в узле, а не в экране. Перезапущенный сервис спрашивает узел, идёт ли ещё сессия, и забирает её обратно, нося шов как один честный suspended-разрыв. Свип, за которым никто не вернулся, финализируется как interrupted с сохранённым пройденным треком — и его задача остаётся открытой, потому что ✓ на незаконченной работе было бы ложью.
Когда он заканчивается, факт едет первым. sweep.completed.v1 — событие радиоразмера: 348 байт в худшем случае против 500-байтового кадра LoRa, измерено холодным стартом, — так что приёмник за двумя хребтами узнаёт «Сектор B3 прочёсан · 13:02–13:47 · 2.7 км · ничего не найдено» в момент, когда это произошло. Детальный трек — asset, и он приезжает вместе с broadband. LoRa: что произошло. Broadband: как именно.
🖐 Место рождается от пальца на карте. Взведи, тапни где оно, назови. Ввод координат цифрами не предлагался намеренно — число в форме и палец на карте суть разные заявления, — но до сих пор единственной дверью был API. Флоу приводит на карточку нового места, где и живёт кнопка свипа.
📎 Наблюдение может указывать на своё доказательство. «Нашёл ботинок, вот фото» — одно фото на наблюдение, сознательно: наблюдение — это фраза плюс одно доказательство, а три фотографии — это три наблюдения. Заметка остаётся радиоразмера (фото едет как медиа, событие несёт 32-байтовую ссылку), так что факт пересекает радио сейчас, а картинка догоняет, когда появится труба пошире.
Измерено, а не предположено: две живые сессии на открытой воде — 29 минут и полтора часа, экран погашен, без кабеля — записали 472 точки с проектной каденцией в 15 секунд, ноль разрывов, без wake lock. Это число и есть причина, почему v1 не держит wake lock: решение стоит на доказательствах, а на железе, где Doze всё-таки кусает, укус становится честными suspended-разрывами, а не испорченным треком.
К замороженным семьям .v1 присоединяются два формата: field.track.v1 и sweep.completed.v1. Всё, что ADR-033 заморозил в beta.1, остаётся замороженным; всё, что он оставил свободным, остаётся свободным. Суффикс beta по-прежнему отмечает дальность наших доказательств — и ничего больше.
🐛 Сломалось или обещает больше, чем может доказать? → Полевые заметки.