Нагрузка сменила характер
Число принятых изменений выросло с примерно 2 500 в день в мае до более 30 000 в сентябре. Ограничением стали контроль версий, сборки и CI.
Как Anthropic построила Scion и перенесла монорепозиторий за пять месяцев.
Если почти все клиенты постоянно онлайн, контроль версий можно строить как сервис запросов и неизменяемых объектов. Тогда агентам не нужна локальная копия истории, а многим задачам — даже рабочая директория.
Число принятых изменений выросло с примерно 2 500 в день в мае до более 30 000 в сентябре. Ограничением стали контроль версий, сборки и CI.
Scion выполняет commit, merge, rebase, diff и blame на сервере. Клиент хранит ограниченный кэш и получает нужные файлы по запросу.
Объекты адресуются по содержимому. Кэши не согласуют их актуальность; каждый компонент масштабируется независимо.
Вместе со Scion команда создала Antique для ревью, поиск кода и сопутствующие сервисы. Переход затрагивает весь цикл разработки.
История main приблизилась к 100 ГБ, сжатая рабочая копия превысила 25 ГБ. При наивном получении 25 миллионов копий для CI трафик превысил бы 600 ПБ в день. Это оценка гипотетического трафика, а не объём фактической передачи.

Shallow clone, sparse checkout, promisor remotes, зеркала и снимки в blob-хранилище уже использовались. На пике работало несколько сотен зеркал. Но снимки всё сильнее отставали от main, а история и blame на частичных клонах требовали всё больше усилий.

Git даёт каждому клону автономность. Anthropic фактически использовала централизованный источник истины, а её агенты и задания всё равно работали онлайн. Scion построили вокруг этих условий.
Клиент рассчитывает на доступность сервера и запрашивает данные по мере необходимости. Автономность полноценного Git-клона не входит в эту модель.
Сервер создаёт изменения, вычисляет историю и выполняет merge и rebase. Клиент раскладывает файлы, отслеживает изменения файловой системы и управляет локальным кэшем.
Инструменты bisect и revert могут спрашивать о связях коммитов и строках напрямую. Для многих операций локальный репозиторий не нужен.
Данные распределены; полной материализованной копии репозитория нет даже на сервере. Packfile отсутствуют, обслуживать их не требуется.
Создание changeset не требует блокировок и общей координации серверов. Refs — указатели веток и тегов — используют ограниченно, чтобы не множить глобальное состояние.
Sparse checkout получает выбранные директории. Виртуализированный checkout создаёт файлы при обращении. Часть чтений и записей обходится одним API.
Changeset — запись в журнале предварительной записи, или WAL. Она содержит изменённые файлы относительно первого родителя и ссылки по хэшу на сжатое содержимое. В Git коммит ссылается на дерево; в Scion дерево выводится из изменений.

Метаданные находятся в Spanner, содержимое файлов — в облачном blob-хранилище. Создание changeset отделено от перемещения refs: указатель обновляется операцией compare-and-swap в одной строке Spanner.
Для быстрых запросов сервер строит производные структуры: blame, историю путей, skip list для графа коммитов, индексы поиска копий и файлов. Значение для changeset рекурсивно вычисляется из значений его родителей.
Для каждого вида производных данных выбирают eager или lazy вычисление. Это позволяет не строить то, что никто не читает.
Клиент не видит внутреннее устройство индексов. Сервер может добавлять и оптимизировать их по мере роста нагрузки.
Протокол scn не перечисляет серверу всё, что уже есть у клиента. Клиент начинает с корневого дерева, сам находит отсутствующие деревья и blobs, затем запрашивает их по идентификаторам.

Каждый запрос относится к конкретному неизменяемому объекту. Любой кэш может ответить; загрузка возобновляется без повторной передачи единого многогигабайтного packfile. Для sparse checkout достаточно не запрашивать ненужные деревья.
На узле задания делят кэш scion-daemon. Он стартует с периодического снимка и обращается к региональному scion-cache. При промахе тот запрашивает scion-server, который читает Spanner или Cloud Storage. Кэш отдаёт данные из памяти сразу в дисковом формате daemon, без вычисления разницы и delta compression.
Все уровни поддерживают один протокол, но порядок обращений строго ограничен. Иначе отказ регионального кэша перенаправит нагрузку на основные серверы и может обрушить всю систему.
У каждого уровня доля попаданий в кэш превышает 99%. Серверы также кэшируют неизменяемые данные и при необходимости вычисляют производные структуры, сохраняя результат в Spanner.
Так авторы оценивают инфраструктуру Scion относительно прежних Git-зеркал. Это сравнение инфраструктурных затрат, а не всех операций.
Текст сообщает об ускорении checkout в CI и исследовательских заданиях на два порядка. График ниже показывает отдельные медианы с ускорением ×8,0 и ×8,8; методика, связывающая эти показатели, не раскрыта.

Выборка из графика: медианное время на внутреннем монорепозитории. Коэффициенты приведены как в источнике; они могут отличаться от деления округлённых значений.
| Операция | Git | scn | Ускорение |
|---|---|---|---|
| Обновить код · разработчик | 87 с | 3,5 с | ×25 |
| Checkout · разработчик | 15 с | 1,1 с | ×14 |
| Rebase · разработчик | 13 с | 2,7 с | ×4,8 |
| Status · разработчик | 3,9 с | 19 мс | ×207 |
| Новый worktree · агент | 7,1 мин | 5,1 с | ×84 |
| Контроль версий на change request · агент | 34 мин | 3,7 мин | ×9,2 |
| Checkout · CI | 31 с | 3,5 с | ×8,8 |
Семь человек построили Scion, Antique и ещё около шести связанных систем, завершив миграцию за пять месяцев. Claude Mythos Preview и Claude Tag одновременно увеличивали поток кода и помогали построить инфраструктуру для него.

Агенты пытались найти момент слияния линейным чтением журнала коммитов, хотя ответ был в системе ревью. Инженеры останавливали подходы, нарушавшие архитектурные ограничения.
Adversarial review помогало находить проблемы, но иногда порождало лишнюю защиту от доверенного сервиса. Люди оценивали замысел каждого изменения и удерживали сложность под контролем.
Команда создала герметичные симуляции нетривиальных взаимодействий, fuzzing и ограничение нагрузки. Переписанный Claude прототип загрузки Git → Scion потреблял в 20 раз меньше памяти и работал в 4 раза быстрее.
Агенты «superfans» следят за телеметрией daemon, cache и очереди Antique в выделенных Slack-каналах. Они дополняют обычные оповещения поиском новых и малозаметных отклонений.
Права доступа задаются и на уровне репозитория, и на уровне директорий. Правила ревью различают, например, изменения комментариев и чувствительную логику, чтобы сосредоточить внимание людей на последствиях.
Пока идут тесты, в main могут попасть сотни или тысячи изменений. Вместо глобальной блокировки очереди команда вложилась в автоматические проверки после слияния и перед развёртыванием. Это допускает конфликты параллельных изменений; по словам авторов, Claude обычно быстро их исправляет.
Scion рассчитан на огромные монорепозитории с десятками тысяч разработчиков или множеством активно пишущих агентов. Для большинства репозиториев авторы считают распределённую модель Git подходящей.
Scion существенно расходится с Git. Нужны собственные ревью, поиск и CI; внутренние инструменты Anthropic слишком специализированы для простой передачи другим компаниям.
Компания может расходовать на внутренние задачи намного больше токенов, чем большинство организаций готовы оплачивать. Результат нельзя переносить без учёта этого условия.
Авторы предлагают переносить удачные идеи в Git: развивать серверные API, менять серверную архитектуру независимо от клиента, улучшать согласованную работу sparse и shallow режимов и пересматривать negotiation — протокол согласования передачи объектов. Прогноз о распространении подобных проблем за 6–12 месяцев остаётся прогнозом авторов.
Практические шаги по мотивам статьи. Это рекомендации конспекта, а не план миграции, предложенный авторами.
Redesigning source control at Anthropic ↗ · Nick G. и команда source control · 13 октября 2026.
Content addressing — обращение к объекту по хэшу содержимого. Blame — история авторства строк. Derived data — вычисляемые структуры для быстрых запросов. Refs — изменяемые указатели на коммиты.
Все шесть иллюстраций взяты из статьи. Данные и оценки принадлежат Anthropic; независимая проверка результатов в источнике не приведена.