architect/standards/4-policy/README.md

type: index
aspect: policy
title: "Политики — Правила и ограничения"
version: 1.0.0
date: 2026-02-19


Политики — Правила и ограничения

Обязательные правила работы с кодом, данными, инфраструктурой и безопасностью.


СОДЕРЖАНИЕ

Код и разработка

Документ Описание Статус
policy-code.md Политики кода (стиль, импорты, тесты, комментарии) ✅ Active
policy-code-data-separation.md Разделение код/данные/$WORKSPACE/$DATASPACE ✅ Active

Данные и ресурсы

Документ Описание Статус
policy-data.md Политики работы с данными (хранение, retention, архивация) ✅ Active
policy-resource-allocation.md Распределение ресурсов (CPU, память, диск) ✅ Active

Инфраструктура

Документ Описание Статус
policy-infra.md Политики инфраструктуры (серверы, сервисы, деплой) ✅ Active
policy-docker.md Политики Docker (образы, контейнеры, сети) ✅ Active
policy-rollback.md Политики откатов (когда и как откатывать) ✅ Active

Безопасность

Документ Описание Статус
policy-security.md Общие политики безопасности ✅ Active
policy-security-credentials.md Управление credentials (ключи, пароли, токены) ✅ Active

Агенты и лицензирование

Документ Описание Статус
policy-agents.md Правила работы AI-агентов ✅ Active
policy-licensing.md Стратегия лицензирования ПО ✅ Active

НАЗНАЧЕНИЕ

Политики отвечают на вопрос "ЧТО МОЖНО, А ЧТО НЕЛЬЗЯ?"

Этот аспект определяет:
- Что разрешено делать
- Что запрещено делать
- Какие ограничения существуют
- Как соблюдать правила


КЛЮЧЕВЫЕ ПРИНЦИПЫ

1. Безопасность прежде всего

SECURITY > PERFORMANCE > CONVENIENCE

Никогда:
- Hardcoded credentials
- SQL injection уязвимости
- Выполнение непроверенного кода
- Доступ без авторизации

2. Разделение ответственности

$WORKSPACE   ← Код (под git)
$DATASPACE   ← Данные (S3, вне git)
/mnt/beget-infra ← Бекапы, recovery

Подробнее: policy-code-data-separation.md

3. Минимальные привилегии

Каждый компонент получает только необходимые права:
- AI-агент → read-only к документации
- Пользователь → доступ только к своим проектам
- Сервис → доступ только к своей БД

4. Откат перед изменением

Для критических операций:
1. Создать бекап
2. Выполнить изменение
3. Проверить результат
4. Откатить если проблема

Подробнее: policy-rollback.md


КАТЕГОРИИ ПОЛИТИК

Политики кода

Что регулируют:
- Стиль кода (PEP 8, Airbnb Style Guide)
- Структура проекта
- Импорты и зависимости
- Комментарии и документация
- Тестирование (coverage >= 80%)

См.: policy-code.md

Политики данных

Что регулируют:
- Где хранить данные ($DATASPACE, не $WORKSPACE)
- Сколько хранить (retention policy)
- Как архивировать (старше 90 дней)
- Как удалять (через 1 год)

См.: policy-data.md

Политики инфраструктуры

Что регулируют:
- Деплой (только через CI/CD)
- Доступ к серверам (только SSH keys)
- Мониторинг (обязательно)
- Логирование (retention 30 дней)

См.: policy-infra.md

Политики безопасности

Что регулируют:
- Credentials (только в .credentials.md, не в git)
- API keys (переменные окружения)
- HTTPS (обязательно для prod)
- Аутентификация (обязательна)

См.: policy-security.md, policy-security-credentials.md


МАТРИЦА СОБЛЮДЕНИЯ

По уровню критичности

Уровень Политика Нарушение Последствия
🔴 Критично Security credentials Ключи в git НЕМЕДЛЕННАЯ блокировка
🔴 Критично SQL injection Уязвимость Code review rejection
🟡 Важно Code style Не отформатирован CI/CD блокировка
🟡 Важно Test coverage < 80% Review warning
🟢 Желательно Комментарии Нет docstrings Замечание при review

По стадиям lifecycle

Стадия Обязательные политики
DRAFT Структура проекта, именование
DEV Code style, типизация, импорты
TEST Test coverage >= 80%, security scan
PROD Все политики, обязательный review
ARCHIVE Data retention, backup перед удалением

АВТОМАТИЗАЦИЯ ПРОВЕРОК

Pre-commit hooks

#!/bin/bash
# .git/hooks/pre-commit

# Форматирование
black . || exit 1
prettier --write .

# Линтинг
ruff check . || exit 1
eslint .

# Безопасность
detect-secrets scan || exit 1

# Тесты
pytest --cov=. --cov-fail-under=80 || exit 1

CI/CD pipeline

# .github/workflows/policy-checks.yml
name: Policy Checks

on: [push, pull_request]

jobs:
  code-quality:
    steps:
      - name: Style check
        run: black --check .

      - name: Lint
        run: ruff check .

      - name: Type check
        run: mypy .

      - name: Security scan
        run: bandit -r .

      - name: Tests
        run: pytest --cov=. --cov-fail-under=80

Мониторинг соблюдения

# scripts/policy-monitor.py
def check_policy_compliance():
    """Проверка соблюдения политик."""
    violations = []

    # Проверка размера файлов
    for file in get_python_files():
        if len(file.readlines()) > 500:
            violations.append(f"{file}: exceeds 500 lines")

    # Проверка credentials в коде
    for file in get_all_files():
        if contains_hardcoded_credentials(file):
            violations.append(f"{file}: hardcoded credentials")

    return violations

СВЯЗАННЫЕ АСПЕКТЫ

Аспект Документ Связь
Формат format-code.md КАК ВЫГЛЯДИТ код (форматирование)
Именование naming-variables.md КАК НАЗЫВАТЬ (переменные, функции)
Процессы process-development.md КАК ДЕЛАТЬ (workflow)
Структура structure-project.md ГДЕ размещать (файлы, папки)
Lifecycle lifecycle-code.md КОГДА применять (стадии)

ПРИМЕНЕНИЕ

Начало работы над задачей

  1. Проверить политики:
    - policy-code.md — стиль кода
    - policy-security.md — безопасность
    - policy-code-data-separation.md — где размещать

  2. Настроить инструменты:
    ```bash
    # Pre-commit hooks
    pre-commit install

# Линтеры
pip install black ruff mypy
npm install -g prettier eslint
```

  1. Проверить перед коммитом:
    - Форматирование
    - Линтинг
    - Типы
    - Тесты
    - Безопасность

Деплой в продакшн

  1. Обязательные проверки:
    - ✅ Все тесты пройдены
    - ✅ Coverage >= 80%
    - ✅ Security scan чист
    - ✅ Code review одобрен
    - ✅ Бекап создан

  2. Следовать политикам:
    - policy-infra.md — деплой
    - policy-rollback.md — откат
    - policy-docker.md — контейнеры

Работа с credentials

  1. НИКОГДА:
    - ❌ Hardcode в коде
    - ❌ Коммит в git
    - ❌ Отправка в чат

  2. ВСЕГДА:
    - ✅ Переменные окружения
    - ✅ .credentials.md (в .gitignore)
    - ✅ Vault/Secrets Manager

Подробнее: policy-security-credentials.md


НАРУШЕНИЯ И ПОСЛЕДСТВИЯ

Критические нарушения (🔴)

Нарушение Действие
Credentials в git Немедленная ротация ключей
SQL injection Блокировка деплоя
Отсутствие тестов для prod Откат на предыдущую версию
Деплой без review Автоматический откат

Важные нарушения (🟡)

Нарушение Действие
Code style не соблюдён CI/CD блокировка
Coverage < 80% Review warning
Большой файл (> 500 строк) Требование рефакторинга

Желательные (🟢)

Нарушение Действие
Нет docstrings Комментарий при review
Сложная функция Рекомендация упрощения

СТАТИСТИКА

Файлов в 4-policy/: 12 (11 политик + 1 README)

Охват:
- ✅ Код (code, code-data-separation)
- ✅ Данные (data, resource-allocation)
- ✅ Инфраструктура (infra, docker, rollback)
- ✅ Безопасность (security, security-credentials)
- ✅ Агенты и лицензирование (agents, licensing)

Статус: ФАЗА 6 завершена ✅


CHANGELOG

2026-02-19 — v1.0.0


Версия: 1.0.0
Дата: 2026-02-19
Владелец: architect