Build 060.30: finalize Market Data Acquisition documentation

This commit is contained in:
2026-08-03 23:30:41 +03:00
parent 8c98de9acc
commit 64a5bdd04c
61 changed files with 13980 additions and 1873 deletions

View File

@@ -0,0 +1,820 @@
# 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.20060.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.0060.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.20060.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 19;
- предупреждение о блокирующей 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.20060.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.26060.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.0060.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.3060.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.26060.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.0060.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.0060.30.2. Оно реализовано отдельным corrective gate перед
060.30.3 и принято 2026-08-03. Deployment, удаление старых images и
rotation реальных credentials по-прежнему находятся вне scope.
---
## 17. Verification evidence
Проверки реализации 060.30.0060.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.0060.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.26060.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.20060.29: 11/11 Accepted
Final report statuses 060.20060.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.0060.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 и
выполняются только по отдельным поручениям.