Память · Метод · Разбор7 минсборщик, владелецКоманда АПОД ЛАБ

Гонка записи: память компании это не папка, а дисциплина

Ответ за 20 секундОбщая память, в которую несколько исполнителей пишут параллельно, ломается не от злого умысла и не от глупости. Правило «перечитай файл перед записью» защищает от устаревшего содержимого, но не от того, что кто-то пишет в тот же файл прямо сейчас. За десять дней августа наш журнал решений трижды терял записи, и каждый раз правило перечитывания было соблюдено. Модель, перенося текст руками, дважды воспроизвела одну и ту же опечатку в названии нашей компании, и поймали её не глаза, а побайтовая сверка. Файлы, объявленные утраченными, нашлись в копии, которую никто не считал резервной. Лечением стало не ещё одно правило, а четыре механизма: помесячные файлы вместо одного на 260 КБ, единственный писатель, контрольная сумма после каждой записи и файлы меньше потолка инструмента. Память компании оказалась не папкой с документами, а дисциплиной записи.

Сцена: 30 августа, две сессии в одном файле

30 августа, 10:08. Одна из наших сессий пишет запись в журнал решений. Около 11:00 пишет ещё одну. В 12:22 файл перезаписан параллельной сессией: другая ветка работы, своя версия журнала. Две записи первой сессии пропали. Пропали и четыре чужие: «Плагин сотрудника АПОД», «Структура контура сотрудника», «Агент РОП», «Обмен с контурами». Зато в перезаписавшей версии оказались десять записей, которых утром в файле не было. Размер файла 220 КБ. Правило «перечитай перед записью» обе стороны выполнили. Оно не помогло.

Восстанавливали объединением: сложили обе версии, ничего не выбросили, получили 24 заголовка. В летописи того дня осталась строка: Перечитывания перед записью недостаточно, когда файл большой и писателей несколько.

В тот же день паспорт нашего шлюза, через который агенты ходят к инфраструктуре, зафиксировал правило: две сессии не пишут в одно состояние одновременно. Для серверов записали, на памяти команды нарушили в тот же день.

Это была третья потеря за десять дней.

Три потери за десять дней

Первая случилась 20 августа. Вспомогательная сессия перезаписала журнал решений версией без свежей записи. В тот же день две параллельные сессии собрали плагин команды под одним номером версии 0.21.0 с разным содержимым; закрыли переизданием 0.21.2. И в тот же день файл на 182 КБ при попытке сослаться на локальный документ превратился в служебную строку в 48 байт. Отчёт архивариуса за тот день был написан до того, как потерю заметили: Сегодня обошлось (файлы перечитывались перед записью, расхождений не было), но это везение, а не механизм.

Вторую нашли 27 августа. Запись «Мозг и команда: три решения» физически отсутствовала в журнале. Причина: гонка записи с параллельной сессией 20 августа. Восстановили задним числом, с пометкой.

Третья, 30 августа, описана выше.

Между ними, 24-25 августа, случился эпизод другого рода. Файлы объявили утраченными «и на Диске, и в облаке». Нашлись они в проекте claude.ai, о котором никто в команде не думал как о резервной копии.

Реестр принципов команды после первой потери получил запись 11: Опора на память о прошлом чтении вместо актуального состояния на момент самой записи - это и есть гонка. Третьей потере оно не помешало, потому что правило говорит «перечитай», а гонка происходит после перечитывания.

Одна опечатка дважды

26 августа мы разносили четыре ночных пакета в память, и часть текста модель переносила руками. В переносе появилось «АПОД ЛАФ» вместо «АПОД ЛАБ» и «в летописи» вместо «в летопись». Обе ошибки воспроизвелись в двух независимых попытках переноса одного и того же файла. Не случайная описка: модель спотыкается на одном месте дважды. Поймала их не пара глаз при вычитке, а побайтовая сверка оригинала и копии.

В тот же день метод переноса развернули. Транскрипт сессии хранит прочитанный файл байт в байт. Оригинал извлекается из транскрипта механически, правка накладывается скриптом, контрольная сумма MD5 на сервере сверяется с локальной копией. Так записали учёт работ, карточку производственного проекта и оба файла расписаний: ноль ручного переноса, совпадение по контрольной сумме с первого раза.

Для владельца перевод такой: если ИИ переписывает регламент из одного места в другое, он может изменить букву в названии компании, и глаз это пропустит, потому что читает смысл, а не байты. Проверять надо сравнением.

Файл, который перестал помещаться в один ход

31 августа первый плановый утренний разнос упёрся в стену: журнал решений вырос до 260 КБ и не проходил перезапись одним вызовом шлюза. Секретарь команды предложил вариант, руководитель ответил коротко: Что ты рекомендуешь, то и сделай. Журнал разбили на помесячные файлы: июль, две части августа, сентябрь. Сам журнал стал указателем на 1,9 КБ.

Помесячные файлы сделали больше, чем починили запись. Они сузили окно гонки: закрытый месяц не трогает никто, в файле текущего месяца встречается меньше рук. У самого разноса с 31 августа есть один назначенный писатель и слот: секретарь команды, 07:00 по Москве. Две сессии перестают встречаться в одном файле не потому, что им запретили, а потому, что им негде.

6 сентября та же болезнь проявилась у файла фактов: 135 КБ. Генерация полного содержимого как аргумента одного вызова превысила лимит вывода модели, 64 000 токенов, ещё до добавления нового. Делегирование вспомогательной сессии не помогло: лимит действует на любой ход. Находки той ночи положили в отдельный файл-дополнение и оставили до утра.

7 сентября руководитель спросил команду: Что будет с целостностью контекста, если разрезать и факты? Ответ команды: разбивать факты по месяцам будет ошибкой. Решения устаревают по дате, факты нет, и помесячная нарезка разбросала бы одну тему по нескольким файлам. Разбили на 9 тематических файлов. Проверка объёма до и после дала расхождение в 252 байта, ровно снятый общий заголовок.

Цифры · Десять дней августа
3потери журнала решений20, 27 и 30 августа, каждый раз при соблюдённом правиле «перечитай перед записью».
6записей пропало 30 августаДве своих и четыре чужих. Слияние двух версий дало 24 заголовка.
260 КБ → 1,9 КБжурнал решений до и послеФайл перестал проходить перезапись одним вызовом и стал указателем на помесячные.
2переноса с одной опечаткой«АПОД ЛАФ» в двух независимых попытках переноса. Поймала побайтовая сверка.
252 байтарасхождение после разреза файла фактовРовно снятый общий заголовок: 221 КБ разошлись по 9 тематическим файлам.
Данные из летописи команды, 20 августа - 7 сентября 2026.

Было / Стало / Что изменилось для владельца

Цифры · Четыре механизма вместо одного правила
БылоСталоЧто изменилось для владельца
Один журнал на 260 КБ, пишут несколько сессийПомесячные файлы и указатель; один писатель и один слотРешение, принятое утром, не исчезает к обеду
Перенос текста руками модели, проверка глазамиОригинал извлекается механически, правка скриптом, сверка MD5Опечатка вроде «ЛАФ» не доживает до документа
«Перечитай перед записью» как единственная защитаПеречитывание плюс контрольная сумма после каждой записиПроверка вместо доверия: совпало или нет, видно по числу
Файл фактов растёт до потолка инструмента9 тематических файлов, расхождение объёма 252 байтаПамять делят до отказа, а не после

Что взять себе

  1. Перечитывайте актуальное состояние файла прямо перед записью и помните, что это защищает от старого содержимого, а не от параллельной записи. У нас правило соблюдалось во всех трёх потерях.
  2. Один писатель на файл памяти и один слот. Все остальные пишут предложения в свою папку, писатель разносит. Мы пришли к этому 31 августа, на следующий день после третьей потери.
  3. Контрольная сумма после каждой записи. Записали, сняли MD5 на сервере, сравнили с локальной копией. Разрезали файл, сравнили объём до и после.
  4. Делите файлы до того, как они перестанут помещаться в один ход инструмента. Журнал решений по месяцам, факты по темам: то, что устаревает по дате, режется по дате, то, что не устаревает, по смыслу.
  5. Не давайте модели переносить текст руками. Оригинал извлекать механически, правку накладывать скриптом. Опечатка «ЛАФ» воспроизвелась дважды, глазом её не поймали.

Карта ролей

Архивариусведёт реестр принципов; записи 11 (гонка), 13 (нечаянная резервная копия) и 15 появились после этих инцидентов. Его отчёт 20 августа назвал везение везением.
Секретарь командыс 31 августа назначенный писатель утреннего разноса; в его слот упёрся файл на 260 КБ, от него пришла помесячная нарезка.
Летописецзаписал 10:08, 11:00 и 12:22, названия четырёх пропавших записей и опечатку «ЛАФ». Без летописи три потери слиплись бы в одно «что-то пропало».
Руководитель31 августа принял рекомендацию секретаря, 7 сентября задал вопрос о целостности контекста, после которого факты разрезали по темам.

Вопросы и ответы

Почему правила «перечитай перед записью» недостаточно?

Оно защищает от старого содержимого в голове пишущего, а гонка происходит после перечитывания: между чтением и записью в файл успевает записать другая сессия. У нас 30 августа обе стороны перечитали файл, и всё равно пропали шесть записей.

Как понять, что файл памяти пора делить?

Когда он перестаёт проходить одну операцию инструмента: у нас журнал решений в 260 КБ не прошёл перезапись одним вызовом, файл фактов в 135 КБ не уместился в лимит вывода модели. Делить лучше раньше: решения по месяцам, факты по темам, с проверкой объёма до и после.

Можно ли доверить ИИ перенос текста между файлами?

Ручной перенос, когда модель переписывает абзац по памяти, дал у нас «АПОД ЛАФ» вместо «АПОД ЛАБ» дважды подряд. Механический перенос, скриптом из сохранённого байт в байт оригинала, с контрольной суммой после записи, сошёлся с первого раза.

Источники: летописи команды АПОД ЛАБ, 08.09.2026. Рубрика «Цифровой фундамент». Текст подготовлен с участием ИИ-команды, публикацию утвердил человек.