# Build 060.30 — Market Data Acquisition Final Documentation Architecture **Статус:** Accepted **Build:** 060.30 **Подсистема:** Market Data / Trades Feed (Time & Sales) **Дата начала:** 2026-08-02 **Дата завершения:** 2026-08-03 **Версия документа:** 1.1 --- ## Связанные документы - [Текущая архитектура Trades Feed](../architecture/trades_feed.md) - [Эксплуатация Trade Stream Runtime](../operations/trades_feed_runtime.md) - [Целевая архитектура Dzentra](../architecture/dzentra_target_architecture.md) - [Master Roadmap](../roadmap/master-roadmap.md) - [Итог Build 060.29](build_060_29.md) - [Итог Build 060.30](build_060_30.md) --- ## 1. Назначение Build 060.30 завершает ветку Trades Feed (Time & Sales) не новой функциональностью, а согласованной документацией фактически реализованной системы Builds 060.20–060.29. Build должен дать три уровня документации: 1. одну текущую архитектурную страницу Trades Feed; 2. одно эксплуатационное руководство Production Runtime; 3. исторические Build-документы, сохраняющие принятые решения и результаты проверок соответствующего этапа. По умолчанию Build 060.30 не меняет Production Runtime, SQL-схему, Storage, Access или Replay. Изменение поведения допускается только при воспроизведённом эксплуатационном дефекте, после отдельного анализа и явного согласования. --- ## 2. Статус подэтапов | Подэтап | Название | Статус | |---|---|---| | 060.30.0 | Documentation Baseline | Accepted | | 060.30.1 | As-Built Trades Feed Architecture | Accepted | | 060.30.2 | Production Operations Guide | Accepted | | 060.30.3 | Project Entry Documentation | Accepted | | 060.30.4 | Target Architecture Alignment | Accepted | | 060.30.5 | Navigation and Historical Normalization | Accepted | | 060.30.6 | Documentation Integrity Gate | Accepted | | 060.30.7 | Final Documentation Verification | Accepted | | 060.30.8 | Closure | Accepted | Все подэтапы 060.30.0–060.30.8 прошли формальный review и приняты. Архитектурный документ имеет статус `Accepted`, итоговый report — `Completed`; Build 060.30 закрыт 2026-08-03. Перед 060.30.3 обязателен отдельный corrective gate **Docker Production Safety Hardening**. ADR-060.30-008 реализован, прошёл формальный read-only review и принят 2026-08-03. --- ## 3. Исходное состояние и инварианты 1. Builds 060.20–060.29 завершены и имеют итоговые отчёты. 2. Фактическое поведение определяют текущие production-код, SQL migrations, settings и тесты. 3. Принятый Build architecture фиксирует решения своего этапа, но не обязан быть текущей обзорной страницей всей подсистемы. 4. Исторический список `out of scope` старого Build не является описанием текущих ограничений после выполнения следующих Builds. 5. Production vertical slice завершён для Trades. 6. Quotes и Candles имеют Canonical models, PostgreSQL repositories, Historical Access и Replay contracts, но не подключены как Production Runtime consumers. 7. Storage write-side, Persistent Checkpoint, Historical Access и Replay сохраняют разные границы ответственности и lifecycle. 8. История доступна только за фактически сохранённый период. Initial exchange backfill и completeness metadata не реализованы. 9. Retention запускается только явно; автоматического scheduler нет. 10. Replay является caller-owned Python API без Bootstrap wiring и automatic startup. 11. Пользовательское изменение `.gitignore` не относится к Build 060.30. 12. Перестановка локальных commits Build 045/046 выполняется отдельной операцией после завершения Build 060.30 и до будущего push. 13. ADR-060.30-008 ограничивает Docker context production allowlist, использует file-backed secrets и hardened containers. Images, собранные до этого исправления, остаются потенциально скомпрометированными и не должны публиковаться. --- ## 4. Иерархия источников истины Для текущего поведения используется следующий приоритет: ```text production code + SQL migrations + tests + settings ↓ accepted current architecture + operations guide ↓ overview + project structure + target architecture + roadmap ``` Для исторического вопроса источником являются architecture и report соответствующего Build. Старый report не имеет приоритета над текущей as-built страницей при ответе на вопрос, как система работает сейчас. Исторические evidence, test counts и первоначальный scope не переписываются задним числом. Устаревшая будущая нумерация получает краткое retrospective-уточнение. --- ## 5. Целевая структура документации ```text README.md ↓ docs/architecture/trades_feed.md ├── фактическая архитектура и ownership └── docs/operations/trades_feed_runtime.md └── настройка, запуск, recovery и проверка docs/migrations/build_060_20...build_060_30 └── исторические решения и verification evidence docs/roadmap/master-roadmap.md └── текущая последовательность и фактические статусы ``` Текущая архитектура не должна дублировать длинную историю исправлений. Operations Guide не должен подменять архитектуру или обещать неавтоматизированные функции. --- ## 6. Контракт текущей архитектуры Trades Feed [Текущая архитектура Trades Feed](../architecture/trades_feed.md) обязана фиксировать: - точный scope Production Trades vertical slice; - транспортную границу Dzengi и Canonical models; - Live processing path; - Startup Hydration и Startup Recovery; - reconnect → subscription restore → Recovery → Live; - единый Consistency state для Live и Recovery; - durable write до продвижения checkpoint; - Application, Runtime и task ownership; - Scheduler, Supervisor и transport liveness; - разделение Storage write-side, Historical Access и Replay; - направление зависимостей между пакетами; - доступный период истории; - фактические ограничения Quotes, Candles, Retention и Replay. На этой странице запрещено объявлять весь Market Data Acquisition завершённым: production-завершён только Trades Feed. --- ## 7. Контракт Production Operations Guide [Эксплуатационное руководство](../operations/trades_feed_runtime.md) обязано содержать: - проверенные требования Python и PostgreSQL; - local и Docker Compose способы запуска; - полный список Trade Stream и Market Data Storage settings; - обязательную зависимость `MARKET_DATA_STORAGE_ENABLED=true → TRADE_STREAM_ENABLED=true`; - `DB_HOST=localhost` для host-run и `DB_HOST=postgres` для Compose; - startup и graceful shutdown sequence; - фатальность ошибок включённого Runtime и persistent write; - автоматический запуск migrations 1–9; - предупреждение о блокирующей migration 9; - backup, benchmark и maintenance window для большой базы; - ручной характер Retention; - caller-owned характер Historical Access и Replay; - безопасные unit, integration, PostgreSQL, stress и live-команды; - troubleshooting и границу полноты истории; - запрет публикации credentials и production DSN. Runbook обязан описывать hardened Docker baseline без преувеличения его возможностей и отдельно предупреждать о старых images, собранных до появления проверенного `.dockerignore`. Версионная политика PostgreSQL закрыта следующей границей: 1. PostgreSQL 16.14 остаётся единственным поддерживаемым production deployment baseline и закреплён в текущем hardened Compose. 2. Совместимость приложения с PostgreSQL 17.10 проверена изолированной matrix 060.30.7 для migrations, repositories, checkpoint, Historical Access, Replay и Trade Runtime integration. 3. Этот результат не является приёмкой hardened PostgreSQL 17 image, Compose cutover или upgrade существующего volume. Такой production переход требует отдельного infrastructure gate. --- ## 8. Scope подэтапов ### 060.30.0 — Documentation Baseline - инвентаризация README, architecture, roadmap и Builds 060.20–060.29; - фиксация источников истины; - определение стабильных и исторических документов; - фиксация текущих расхождений и границ Build; - создание настоящего документа. ### 060.30.1 — As-Built Trades Feed Architecture - создание `docs/architecture/trades_feed.md`; - описание фактических Live, Recovery, Persistence, Checkpoint, Historical Access и Replay boundaries; - описание startup, reconnect и shutdown; - фиксация Production scope только для Trades. ### 060.30.2 — Production Operations Guide - создание `docs/operations/trades_feed_runtime.md`; - проверка settings и feature flags по коду; - описание host/Compose конфигурации PostgreSQL; - описание migrations, Retention, Replay и verification procedures; - фиксация временной PostgreSQL 16/17 policy до 060.30.7. - фиксация Docker secret-in-image blocker без скрытого расширения scope. ### 060.30.3 — Project Entry Documentation - обновление корневого `README.md` и `app/README.md`; - обновление `overview.md` и `project_structure.md`; - отделение общего/исторического `storage` foundation от `market_data/storage`; - замена устаревшего `app/src/storage/README.md`; - согласование `.env.example` с фактическими settings; - описание обычного developer workflow и обязательного Pyright gate; - добавление понятной навигации к архитектуре и runbook. ### 060.30.4 — Target Architecture Alignment - актуализация статусов 060.26–060.29; - добавление Persistent Storage, Checkpoint, Access и Replay; - исправление фактической схемы partitioning; - фиксация 060.30 как текущего Build до его закрытия; - актуализация Master Roadmap по фактическим статусам; - сокращение исторического дублирования в Master Roadmap до ссылок. ### 060.30.5 — Navigation and Historical Normalization - рабочие относительные Markdown-ссылки; - retrospective-уточнения ошибочной будущей нумерации; - единая семантика статусов architecture/report; - явная маркировка исторических Stage roadmaps как архивных; - сохранение исторических scope и evidence без широкого переписывания. ### 060.30.6 — Documentation Integrity Gate - локальная проверка обязательных документов и относительных ссылок; - запрет ссылок за пределы repository; - включение gate в обычную offline regression; - отсутствие сетевой зависимости и изменения Production Runtime. ### 060.30.7 — Final Documentation Verification - Pyright `0 errors, 0 warnings`; - full offline regression и `compileall`; - `pip check` и `git diff --check`; - проверка команд, env names и Compose configuration; - PostgreSQL 17 application compatibility verification с явным сохранением PostgreSQL 16.14 production baseline; - отдельные read-only review архитектуры, runbook и полного diff. ### 060.30.8 — Closure - создание `docs/migrations/build_060_30.md`; - перевод всех подэтапов в `Accepted`, Build в `Completed`; - перевод Master Roadmap на `060.30 Completed / 061.00 Planned`; - подготовка точного staging-списка без `.gitignore`. --- ## 9. Политика исторических документов Исторические Build-документы сохраняют: - принятый на тот момент scope; - архитектурные решения; - результаты тестов; - известные на тот момент ограничения. В них допускаются только ограниченные корректировки: - неверное имя или номер будущего Build; - неработающая локальная ссылка; - status metadata; - trailing whitespace и окончание файла; - краткое retrospective-пояснение, что downstream Build уже выполнен. Запрещено заменять историческое описание новым состоянием системы или пересчитывать старые verification results. --- ## 10. Политика языка, ссылок и секретов 1. Документация и комментарии проекта пишутся на русском языке. 2. Названия классов, методов, settings, протоколов и команд сохраняются в исходном английском написании. 3. Навигация использует настоящие относительные Markdown-ссылки. 4. Backticks используются для идентификаторов, а не вместо ссылок. 5. В примерах запрещены настоящие токены, пароли, API secrets и production DSN. 6. Команды с destructive test cleanup допускаются только для harness, который проверяет loopback endpoint и имя базы `dzentra_test_*`. --- ## 11. Критерии приёмки 060.30.0–060.30.2 ### 060.30.0 Подэтап может быть принят, если: 1. зафиксированы источники истины и границы Build; 2. перечислены все подэтапы 060.30; 3. определены три канонических документа; 4. Production-код, SQL и `.gitignore` не изменены; 5. исправление Git history явно оставлено отдельной операцией. ### 060.30.1 Подэтап может быть принят, если: 1. current architecture соответствует фактическому dependency graph; 2. Live и Recovery используют общий Consistency owner; 3. durable write и checkpoint описаны в правильном порядке; 4. startup, reconnect и shutdown соответствуют production-коду; 5. Access и Replay не представлены как часть automatic Runtime; 6. Quotes и Candles не названы production feeds; 7. все локальные ссылки разрешаются. ### 060.30.2 Подэтап может быть принят, если: 1. settings сверены с `config.py` и `.env.example`; 2. указано, что обычный Application startup требует PostgreSQL для базовой схемы даже при выключенном Market Data Storage; 3. host/Compose DB addressing описан однозначно; 4. PostgreSQL 16/17 status не преувеличен; 5. migration 9 имеет backup/benchmark/maintenance warning; 6. Retention и Replay не названы автоматическими; 7. команды соответствуют pytest markers и safety harness; 8. документ не содержит секретов; 9. текущий Compose build не представлен как production-safe до появления проверенного `.dockerignore` и согласованного hardening. --- ## 12. Критерии приёмки 060.30.3–060.30.8 ### 060.30.3 1. README описывает запуск существующего checkout, а не генерацию нового. 2. Overview и Project Structure перечисляют фактические пакеты. 3. Общий/исторический `storage` и Canonical `market_data/storage` разведены без ложного объявления всего `src.storage` устаревшим. 4. `.env.example` содержит все поддерживаемые settings без secrets. 5. Developer workflow включает requirements, Pyright и pytest markers. 6. Входные страницы ведут к current architecture и runbook. ### 060.30.4 1. Target Architecture содержит фактические результаты 060.26–060.29. 2. Физическое partitioning описано как отдельный parent/default table каждого типа и явно создаваемые UTC-month partitions. 3. Master Roadmap показывает 060.30 текущим до его завершения. 4. Подробная историческая спецификация не дублируется в roadmap. 5. После closure следующий этап указан как 061.00. ### 060.30.5 1. Исправлена явно неверная downstream-нумерация Builds. 2. Architecture имеет статус `Accepted`, итоговый report — `Completed`. 3. Historical scope и test evidence сохранены. 4. Stage roadmaps явно обозначены как архивные. 5. Внутренние переходы являются настоящими Markdown-ссылками. ### 060.30.6 1. Link gate работает локально без сети. 2. Проверяются обязательные документы, отсутствующие targets и выход за repository root. 3. Gate входит в default offline regression. 4. Production Runtime и SQL не меняются. ### 060.30.7 1. Pyright возвращает `0 errors, 0 warnings`. 2. Offline regression, `compileall` и `pip check` проходят. 3. Documentation link gate и `git diff --check` проходят. 4. Compose config проверен без раскрытия secrets. 5. PostgreSQL 17.10 application compatibility matrix проходит, а PostgreSQL 17 явно не включается в поддерживаемый deployment baseline. 6. Независимые read-only review не содержат открытых findings. ### 060.30.8 1. Создан итоговый `build_060_30.md` без преждевременных claims. 2. Все подэтапы переведены в `Accepted`, Build — в `Completed`. 3. Master Roadmap переведён на `060.30 Completed / 061.00 Planned`. 4. Подготовлен точный staging-список без `.gitignore`. 5. Commit и push выполняются только по отдельному поручению. --- ## 13. Общие критерии закрытия Build Build 060.30 может быть закрыт, если: 1. стабильные страницы согласованы между собой и с кодом; 2. README ведёт к текущей архитектуре и runbook; 3. Target Architecture и Master Roadmap имеют фактические статусы; 4. документационный static gate проходит без сети; 5. Pyright, offline regression, PostgreSQL verification и compileall проходят; 6. `git diff --check` не содержит ошибок; 7. полный read-only review не содержит открытых findings; 8. итоговый report создан только после фактической приёмки; 9. `.gitignore` не входит в staging; 10. Docker secret-in-image blocker устранён либо Compose явно исключён из поддерживаемых production deployment paths; 11. commit и push выполняются только по отдельному поручению. --- ## 14. Архитектурные решения ### ADR-060.30-001 — Current-state отделён от Build history **Статус:** Accepted Текущая архитектура описывается одной стабильной страницей, а Build reports остаются историческими evidence. ### ADR-060.30-002 — Trades Feed имеет одну каноническую страницу **Статус:** Accepted Обзорные документы и README ссылаются на `docs/architecture/trades_feed.md`, а не копируют подробности Runtime. ### ADR-060.30-003 — Operations имеют один канонический runbook **Статус:** Accepted Settings, startup, recovery, migrations и verification procedures поддерживаются в `docs/operations/trades_feed_runtime.md`. ### ADR-060.30-004 — Исторические документы не переписываются широко **Статус:** Accepted 060.30 исправляет навигацию и явно устаревшие метаданные, но сохраняет исторические решения и результаты. ### ADR-060.30-005 — Documentation links получают static gate **Статус:** Accepted 060.30.6 добавляет локальную проверку обязательных документов и внутренних Markdown-ссылок. ### ADR-060.30-006 — Production behavior не меняется без дефекта **Статус:** Accepted Финальная документация не является основанием для скрытого изменения Runtime или SQL. Реальный дефект анализируется и согласуется отдельно. ### ADR-060.30-007 — Git history repair отделён от Build 060.30 **Статус:** Accepted Перестановка Build 045/046 и повторная проверка локальных commits выполняются после фиксации 060.30, но до push, с backup ref и отдельным разрешением. ### ADR-060.30-008 — Docker hardening обязателен до 060.30.3 **Статус решения:** Accepted **Статус реализации:** Accepted (2026-08-03) Утверждён отдельный corrective gate со следующими границами: - корневой `.dockerignore` исключает secrets, `.venv`, caches, tests, logs, data и локальные artifacts; - Dockerfile копирует только production requirements и `app/src`, использует закреплённый image, полный hash-lock и non-root user; - Compose не содержит placeholder secrets, не публикует PostgreSQL наружу по умолчанию и не создаёт бесконечный fatal crash loop; - Compose требует явный project namespace; оператор обязан проверить его уникальность, потому что повторное имя подключит существующие named volumes этого namespace; - production secrets поддерживают явный file-backed contract `*_FILE` с fail-fast проверками конфликтов и пустых значений; - container получает `no-new-privileges`, минимальные capabilities, read-only filesystem, отдельный writable `/tmp` и явный shutdown budget; - PostgreSQL 16.14 остаётся единственным поддерживаемым production deployment baseline; совместимость приложения с PostgreSQL 17.10 проверена отдельно, но production cutover требует нового gate; - PostgreSQL bootstrap-admin отделён от непривилегированной application role; role setup атомарен, а healthcheck отклоняет legacy superuser, memberships и неверного owner; - image использует `SIGINT`: до запуска Aiogram polling его принимает `asyncio.run`, превращая остановку в cancellation с ожиданием уже начатой blocking lifecycle operation; - verification доказывает отсутствие `.env` и test secret во всех image layers, non-root execution и clean Compose configuration; - удаление старых images и rotation реальных credentials требуют отдельного разрешения. Corrective gate не меняет Trade Runtime, SQL или Market Data contracts. --- ## 15. План файлов Новые файлы 060.30.0–060.30.2: ```text docs/migrations/build_060_30_architecture.md docs/architecture/trades_feed.md docs/operations/trades_feed_runtime.md ``` Файлы corrective gate ADR-060.30-008: ```text .dockerignore app/.env.example app/requirements.lock app/src/core/config.py app/tests/unit/core/test_config.py app/tests/unit/infra/test_docker_hardening.py infra/compose/docker-compose.yml infra/compose/docker-compose.exchange-auth.yml infra/docker/Dockerfile infra/docker/postgres/Dockerfile infra/docker/postgres/init-application-role.sh infra/docker/postgres/healthcheck-application-role.sh docs/migrations/build_060_30_architecture.md docs/operations/trades_feed_runtime.md ``` Планируемые изменения следующих подэтапов: ```text README.md app/README.md app/src/storage/README.md docs/architecture/overview.md docs/architecture/project_structure.md docs/operations/trades_feed_runtime.md (точечная синхронизация) docs/architecture/dzentra_target_architecture.md docs/roadmap/master-roadmap.md historical Build documents с точечными retrospective fixes documentation integrity gate ``` Итоговый файл создаётся только в 060.30.8: ```text docs/migrations/build_060_30.md ``` --- ## 16. Вне scope - изменение Trade Runtime, Storage, Access или Replay behavior; - SQL migration 10; - online replacement для migration 9; - initial historical backfill; - automatic Retention Scheduler; - Production consumers Quotes и Candles; - Replay Bootstrap или automatic startup; - Backtesting, Analytics API и exchange simulator; - новая Market Data feed; - deployment, commit или push; - изменение пользовательского `.gitignore`; - переписывание Git history в составе документационного Build. Исправление Docker security finding не входит в принятые 060.30.0–060.30.2. Оно реализовано отдельным corrective gate перед 060.30.3 и принято 2026-08-03. Deployment, удаление старых images и rotation реальных credentials по-прежнему находятся вне scope. --- ## 17. Verification evidence Проверки реализации 060.30.0–060.30.2 на 2026-08-02: ```text Новые canonical documents: 3 Проверено относительных Markdown links: 41, clean Ссылки за пределы repository: 0 Settings из config отражены в guide: 36/36 Лишние core settings в guide: 0 Синтаксис сложных shell recipes: clean Whitespace новых файлов: clean Production/SQL files changed: 0 Git index: empty Постороннее изменение .gitignore: сохранено вне Build ``` Независимые read-only review архитектурного контракта, as-built страницы и исправленного operations guide завершены без открытых findings. Единственный P2 основной схемы исправлен и прошёл узкий повторный review. 060.30.0–060.30.2 приняты 2026-08-02. Docker secret-in-image blocker зарегистрирован; отдельный hardening contract реализован, прошёл отдельный приёмочный read-only review и принят 2026-08-03. Проверки реализации ADR-060.30-008: ```text Target config/Docker tests: 73 passed Pyright: 0 errors, 0 warnings Full offline regression: 2723 passed, 95 deselected Compose base + exchange override config: clean Fail-fast обязательных Compose controls: 8/8 clean Production dependency hash-lock: 25 packages, clean Pinned bot/PostgreSQL image builds: clean Image pip check: clean Image layers: 9 checked Project .env/.venv/tests/cache in layers: 0 Sentinel secret content in layers: 0 Container UID/GID: 10001:10001 Read-only root + dropped capabilities: clean PostgreSQL isolated network/public ports: clean / 0 PostgreSQL application dangerous flags: 5/5 disabled PostgreSQL owner + application DDL probe: clean Normalized admin/application equality: rejected Privileged-role healthcheck rejection: clean PostgreSQL role membership rejection: clean Atomic role-init rollback fault probe: clean Cross-UID file-secret read probe: clean Early-startup stop-signal probe: clean Existing PostgreSQL 17 volume: detected, untouched Controlled Docker cleanup: clean ``` Test-only Compose container, network, volumes, layer archives и secret-файлы после проверки удалены. Старые локальные/registry images и реальные credentials автоматически не удалялись и не менялись. Проверки реализации 060.30.3 на 2026-08-03: ```text Application settings в .env.example: 41/41 Относительные ссылки touched pages: 46, clean Documented command paths: clean LF / final newline / trailing whitespace: 8 files, clean Target config/Docker tests: 73 passed Pyright: 0 errors, 0 warnings Full offline regression: 2723 passed, 95 deselected Новые Production/SQL/Docker изменения: 0 Пользовательский .gitignore: сохранён вне scope ``` Первичный независимый architecture review обнаружил три P2 в описании Quote/Candle scope, Bootstrap I/O и legacy import graph. Формулировки исправлены; повторный review и два параллельных scope/settings review завершены без открытых findings. 060.30.3 принят 2026-08-03. Проверки реализации 060.30.4 на 2026-08-03: ```text Итоговые reports 060.26–060.29: 4/4 Completed Partitioned parent/default families: 3/3 Partition/Retention wiring в Bootstrap: отсутствует Относительные ссылки touched pages: 24, clean Stale-фразы предыдущей редакции: 0 Master Roadmap: 1751 -> 227 строк Изменения отдельных Stage-roadmaps: 0 LF / final newline / trailing whitespace: clean Git diff --check: clean Pyright: 0 errors, 0 warnings Full offline regression: 2723 passed, 95 deselected Новые Production/SQL/Docker изменения: 0 Пользовательский .gitignore: сохранён вне scope ``` Три независимых read-only review обнаружили три уникальные P2: преждевременное закрытие всего Market Data Acquisition в roadmap, неверную гарантию межстраничного Historical snapshot и слишком узкий UTC-only контракт Replay Clock. Формулировки исправлены; все три повторных review завершены без открытых findings. 060.30.4 принят 2026-08-03. Проверки реализации 060.30.5 на 2026-08-03: ```text Architecture statuses 060.20–060.29: 11/11 Accepted Final report statuses 060.20–060.29: 11/11 Completed Retrospective notes: 9/9 Архивные Stage roadmaps: 7/7 Ссылки Master -> Stage: 7/7, clean Ссылки Stage -> Master/Target: 14/14, clean Relative links во всех docs: 229, broken 0 Документы scope 060.30.5: 34 CRLF / missing final newline: 0 / 0 Stage 08/09 files: 0 Git diff --check: clean Новые Production/SQL/Docker изменения: 0 Пользовательский .gitignore: сохранён вне scope ``` Первичный acceptance review выявил два класса P2: неполную фактическую цепочку в части retrospective-примечаний и оставшиеся некликабельные переходы/списки связанных документов. Все девять примечаний приведены к единой цепочке до 060.30 и ограничению будущей нумерации только 061.00; навигация нормализована. Три повторных review завершены без открытых findings. 060.30.5 принят 2026-08-03. Проверки реализации 060.30.6 на 2026-08-03: ```text Целевой documentation static: 331 passed Полный static-набор: 332 passed Documentation integrity gate: 365 documents, 252 links, 0 issues Pyright: 0 errors, 0 warnings Полная offline-регрессия: 3054 passed, 95 deselected Git diff --check: clean Новые Production Runtime / SQL изменения: 0 / 0 Пользовательский .gitignore: сохранён вне scope ``` Приёмочные read-only review отдельно проверили Markdown/CommonMark precedence, безопасность URI и filesystem paths, переносимость Windows, линейность обработки больших документов и wiring команд в README, runbook, pytest и Pyright. Все воспроизведённые пограничные findings исправлены с regression-тестами; повторные review завершены без открытых замечаний. 060.30.6 и ADR-060.30-005 приняты 2026-08-03. Выполненная verification matrix 060.30.7: ```text Documentation integrity gate: 365 documents, 252 links, 0 issues Полный static-набор: 332 passed Pyright: 0 errors, 0 warnings Dependency integrity: pip check clean Compileall во временном cache: 618 files, clean Полная offline-регрессия: 3054 passed, 95 deselected Target config/Docker tests: 73 passed Compose base + exchange-auth config: clean Shell syntax затронутых scripts: clean PostgreSQL application compatibility: 17.10 / 170010 PostgreSQL official image digest: sha256:8189a1f6e40904781fc9e2612687877791d21679866db58b1de996b31fc312e4 Application-role dangerous flags: 5/5 disabled Полный PostgreSQL 17 integration: 90 passed Критические PG17 race/restart repeats: 10 x 6 = 60 passed Durable restart probe: preserved Test-only container/network/volume/image: removed Test-only secret files: removed PostgreSQL 16.14 deployment baseline: unchanged Существующие Docker resources: untouched Git index: empty Пользовательский .gitignore: сохранён вне scope ``` Предварительный review 060.30.7 обнаружил три P2: смешение application compatibility с deployment acceptance, ложную гарантию уникальности Compose namespace и backup-команду, привязанную к default database settings. Границы и runbook исправлены без изменения Runtime, SQL или Compose behavior. Три финальных read-only review дополнительно обнаружили четыре P2: устаревший current-status, небезопасный lifetime cleanup trap в `compileall` recipe, ослабленную offline regression-команду и неоднозначное расширение точного PostgreSQL 16.14 baseline до произвольного PostgreSQL 16. Все findings исправлены; повторные architecture, runbook/security и full-diff review завершены без открытых замечаний. 060.30.7 принят 2026-08-03. --- ## 18. Итог 060.30.0–060.30.8 и corrective gate ADR-060.30-008 формально приняты. Итоговый report создан; Build 060.30 имеет статус `Completed`. Во время подготовки runbook был обнаружен pre-production finding: прежний Docker context включал `app/.env`. ADR-060.30-008 исправил этот дефект allowlist-контекстом, явным `COPY`, file-backed secrets, non-root/read-only containers и закрытой database network. PostgreSQL 16.14 остаётся единственным production deployment baseline. PostgreSQL 17.10 проверен только как application compatibility target. Следующий запланированный Build — 061.00 Validation and Canonicalization Boundary Refactoring. Он не начат и требует отдельного read-only архитектурного анализа. Commit, аудит локальной Git history и push не входят в Closure и выполняются только по отдельным поручениям.