# Порядок действий при изменении кода

**Читать перед ЛЮБОЙ правкой.**

---

## ⛔ ЗАПРЕЩЕНО

1. Менять код без «делай»
2. Действовать по догадкам («я бы сделал так», «можно попробовать»)
3. Удалять файлы/папки без разрешения
4. «Улучшать» рабочий код без прямого разрешения
5. Использовать `sed`
6. Откладывать commit/push «на потом»
7. Игнорировать проверку синтаксиса перед push

---

## ✅ ПОРЯДОК ПРИ ЛЮБОМ ИЗМЕНЕНИИ

### Шаг 1 — План
```
Описать что меняем → получить «делай»
```

### Шаг 2 — Правка
Вносим изменения. Только то, что обговорено. Никакой самодеятельности.

### Шаг 3 — Проверка синтаксиса
```bash
python3 -c "import py_compile; py_compile.compile('путь/к/файлу.py', doraise=True)"
```
**КАЖДЫЙ изменённый .py файл.**

### Шаг 4 — Проверка импорта
```bash
cd /home/naeel/nubes/drhider && python3 -c "from drhider import obfuscate_files, LLMClient; print('OK')"
```

### Шаг 5 — Проверить соседей
После `replace_string_in_file` — прочитать соседние строки, убедиться что не затёр соседнюю функцию/класс.

### Шаг 6 — commit + push (СРАЗУ)
```bash
cd /home/naeel/nubes/drhider
git add -A
git commit -m "подробное описание что и зачем"
git push
```
**Без исключений. Никаких накоплений.**

### Шаг 7 — Документировать
Записать в `History/` что сделано:
- Отдельный `.md` файл
- Что планировалось → что сделано → в чём ошибся

### Шаг 8 — Redeploy
Зайти в UI Штурвала → Redeploy `drhider`.

---

## 🔧 Команды в терминале — всегда с таймаутами

```bash
curl --max-time 30 ...
ssh -o ConnectTimeout=10 ...
timeout 10 grep ... file.txt
```

---

## 📦 Проверка ВСЕХ файлов разом

```bash
cd /home/naeel/nubes/drhider
python3 -c "
import py_compile, os
for root, dirs, files in os.walk('.'):
    for f in files:
        if f.endswith('.py'):
            py_compile.compile(os.path.join(root, f), doraise=True)
            print(f'OK: {os.path.join(root, f)}')
"
```

---

## 🏷️ Версионирование

Версия в `site/app.py` (переменная `VERSION`).
Менять при любом изменении кода, влияющем на поведение.

---

## 📝 Пример хорошего коммита

```
git commit -m "generators: добавил generate_snils — генератор фиктивных СНИЛС

- Новый файл drhider/generators/snils.py
- Добавлен паттерн в config.py → ENTITY_PATTERNS
- Добавлен в generators/__init__.py → ENTITY_GENERATORS
- bump VERSION 2.0.0 → 2.0.1"
```
