CI-GATE.0-2: establish repository CI canary

This commit is contained in:
2026-08-04 19:01:59 +03:00
parent 64a5bdd04c
commit 49cc0e2fb8
9 changed files with 1637 additions and 15 deletions

View File

@@ -1,6 +1,6 @@
# Trade Stream Production Runtime — эксплуатационное руководство
**Статус:** Current; accepted in Build 060.30.2
**Статус:** Current; accepted in Build 060.30.2, CI-GATE.1 update
**Область:** Trades Feed, persistent Market Data Storage и связанные проверки
@@ -83,15 +83,18 @@ bootstrap, healthcheck, image и Compose path.
```bash
python3.12 -m venv app/.venv
app/.venv/bin/python -m pip install --upgrade pip
app/.venv/bin/python -m pip install -r app/requirements-dev.txt
app/.venv/bin/python -m pip install \
--require-hashes \
-r app/requirements-dev.lock
app/.venv/bin/python -m pip check
```
`app/requirements.txt` остаётся читаемым списком прямых production
dependencies. Production image устанавливает полный транзитивный
`app/requirements.lock` только с `pip --require-hashes`.
`requirements-dev.txt` включает прямые production requirements и
инструменты pytest/Pyright для developer environment.
инструменты pytest/Pyright для developer environment, а установка
выполняется из полного `requirements-dev.lock` с обязательными hashes.
Lock регенерируется намеренно и review-ится как dependency update:
@@ -103,10 +106,21 @@ uv pip compile app/requirements.txt \
--no-header \
--no-annotate \
--output-file app/requirements.lock
uv pip compile app/requirements-dev.txt \
--constraints app/requirements.lock \
--generate-hashes \
--universal \
--python-version 3.12 \
--no-header \
--no-annotate \
--output-file app/requirements-dev.lock
```
После генерации сохраняются только три русскоязычные служебные строки в
начале файла; dependency records и hashes остаются машинными данными.
После генерации каждого lock сохраняются только три русскоязычные
служебные строки в начале файла; dependency records и hashes остаются
машинными данными. Полный CI/canary contract приведён в
[отдельном runbook](ci_gate.md).
Нельзя вручную убирать hash или обновлять только транзитивную version без
повторных build, smoke, `pip check` и regression.