## 1. Тесты (scan-gateway, `api/tests/`) - [x] 1.1 `unit/test_smb_hotfolder.py`: `put` пишет `open_file(\<имя>, "wb")` без `Tmp`/`rename`; существующий файл перезаписывается; ошибка записи — снятие файла только при `cleanup=True`; `cleanup` не трогает `.part` - [x] 1.2 `unit/test_local_hotfolder.py`: то же для `LocalHotFolder`; `Tmp` не создаётся `put` - [x] 1.3 `unit/test_config.py`, `unit/test_hotfolder_factory.py`: нет `SCAN_TMP_DIR` у шлюза, `SCAN_TIMEOUT_SECONDS` по умолчанию 1200; интеграционные `test_roundtrip.py` — без ожиданий про `Tmp/.part` ## 2. Реализация (scan-gateway, `api/src/`) - [x] 2.1 `gateway/smb.py`: `put` — прямая запись (D-1, D-2, D-5), убрать `tmp_dir`, `.part` из `cleanup` - [x] 2.2 `gateway/hotfolder.py`: `LocalHotFolder.put` — прямая запись; `tmp_dir` только для эмулятора (D-3) - [x] 2.3 `core/config.py`, `gateway/__init__.py`: убрать `SCAN_TMP_DIR` у шлюза; `SCAN_TIMEOUT_SECONDS = 1200` ## 3. Документация - [x] 3.1 `README.md`, `CLAUDE.md`, `api/.env.example` — прямая запись, `SCAN_TMP_DIR` только у эмулятора, таймаут 1200 - [x] 3.2 `make check-full`