# Scripts

## `staging-smoke.sh`

Post-deploy smoke helper для staging/production-like окружений.

```bash
./scripts/staging-smoke.sh https://crank.example.com
```

## `authenticated-staging-smoke.sh`

Browser-authenticated smoke helper.

Обязательные переменные:

- `CRANK_STAGING_ADMIN_EMAIL`
- `CRANK_STAGING_ADMIN_PASSWORD`

```bash
CRANK_STAGING_ADMIN_EMAIL=owner@example.com \
CRANK_STAGING_ADMIN_PASSWORD=secret \
./scripts/authenticated-staging-smoke.sh https://crank.example.com
```

## `authenticated-product-smoke.sh`

Authenticated product smoke helper. Создает временную REST operation на
внутренний `admin-api` health endpoint, публикует агента, выпускает API-ключ и
проверяет MCP `tools/list` / `tools/call`. Внешние публичные API не используются.

Обязательные переменные:

- `CRANK_STAGING_ADMIN_EMAIL`
- `CRANK_STAGING_ADMIN_PASSWORD`

```bash
CRANK_STAGING_ADMIN_EMAIL=owner@example.com \
CRANK_STAGING_ADMIN_PASSWORD=secret \
./scripts/authenticated-product-smoke.sh https://crank.example.com
```

По умолчанию временные сущности удаляются после успешной проверки. Для отладки
можно оставить их в workspace:

```bash
CRANK_PRODUCT_SMOKE_KEEP_ASSETS=1 ./scripts/authenticated-product-smoke.sh https://crank.example.com
```

## `check-rust-code-health.sh`

Проверяет базовые правила сопровождаемости Rust-кода:

- новые `.rs` файлы не больше 1000 строк;
- существующие крупные файлы не должны расти сверх текущего baseline;
- крупные inline test modules запрещены вне legacy allowlist.

```bash
./scripts/check-rust-code-health.sh
```

## `check-rust-boundaries.sh`

Проверяет направление зависимостей между Rust workspace crates:

- приложения из `apps/*` могут зависеть от crates, но не от других приложений;
- crates не должны зависеть от приложений;
- `crank-core` не зависит от runtime, registry и adapters;
- `crank-registry` не зависит от runtime и adapters;
- `crank-runtime` не зависит от registry.

```bash
./scripts/check-rust-boundaries.sh
```

## `check-community-scope.sh`

Проверяет, что в community-репозиторий не попали функции и тексты за пределами
REST -> MCP сценария.

```bash
./scripts/check-community-scope.sh
```

Unit-тесты checker-а лежат в `tests/unit`:

```bash
python3 -m unittest discover -s tests/unit
```
