6.3 KiB
Scripts
staging-smoke.sh
Post-deploy smoke helper для staging/production-like окружений.
./scripts/staging-smoke.sh https://crank.example.com
authenticated-staging-smoke.sh
Browser-authenticated smoke helper.
Обязательные переменные:
CRANK_STAGING_ADMIN_EMAILCRANK_STAGING_ADMIN_PASSWORD
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_EMAILCRANK_STAGING_ADMIN_PASSWORD
CRANK_STAGING_ADMIN_EMAIL=owner@example.com \
CRANK_STAGING_ADMIN_PASSWORD=secret \
./scripts/authenticated-product-smoke.sh https://crank.example.com
По умолчанию временные сущности удаляются после успешной проверки. Для отладки можно оставить их в workspace:
CRANK_PRODUCT_SMOKE_KEEP_ASSETS=1 ./scripts/authenticated-product-smoke.sh https://crank.example.com
Smoke выполняет Admin test-run до publish и фиксирует точные Operation version
и Agent revision. Для split-port local stack можно передать --mcp-base-url и
пустой --mcp-path-prefix; --summary-output пишет bounded safe summary без
ключей, cookies и payloads.
check-rust-code-health.sh
Проверяет базовые правила сопровождаемости Rust-кода:
- новые
.rsфайлы не больше 1000 строк; - существующие крупные файлы не должны расти сверх текущего baseline;
- крупные inline test modules запрещены вне legacy allowlist.
./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.
./scripts/check-rust-boundaries.sh
Typed runtime configuration contract
Единый Rust registry генерирует machine contract, sections .env.example и
таблицу параметров. Проверка drift не изменяет файлы:
cargo run -p crank-config --bin crank-config-contract -- --check
python3 scripts/check-runtime-config.py --root .
python3 scripts/check-config-boundaries.py --root .
После намеренного изменения registry artifacts обновляются через
crank-config-contract --write, просматриваются в diff и проверяются командой
just config-contract-check. Explicit --files у boundary checker-а
позволяет проверять новые/untracked Rust-файлы.
Versioned migration contract
just migration-contract-check сравнивает canonical Rust migration sequence с
committed machine contract. PostgreSQL DDL вне crank-registry::migrations
блокируется Rust module boundary check.
Typed metrics contract
just metrics-contract-check сверяет Rust registry с versioned JSON snapshot и
проверяет, что production-код объявляет метрики только через crank-metrics.
Checker распознаёт прямые macro calls, imports, aliases и re-exports; новые
Rust-файлы можно передать явно через --files.
check-community-scope.sh
Проверяет, что в community-репозиторий не попали функции и тексты за пределами REST -> MCP сценария.
./scripts/check-community-scope.sh
Unit-тесты checker-а лежат в tests/unit:
python3 -m unittest discover -s tests/unit
Новые или ещё не tracked файлы по умолчанию не видны wrapper-у. Перед handoff передайте только файлы текущего изменения явно:
python3 scripts/check-community-scope.py --root . --files <paths...>
validate-capability-inventory.py
Проверяет canonical docs/capability-inventory.json по versioned schema,
обязательным FR, Community boundary и существующим evidence-ссылкам:
python3 scripts/validate-capability-inventory.py \
--root . \
--inventory docs/capability-inventory.json \
--schema docs/schemas/capability-inventory.schema.json \
$(for n in $(seq 1 54); do printf -- '--required-fr FR-%s ' "$n"; done)
Статусы planned, gap и blocked валидны, но не считаются pass.
Capability baseline tools
collect-capability-baseline.py принимает только allowlisted command reports
или bounded Playwright JSON, вычисляет verdict и удаляет raw output, paths и
attachments. Retry-pass становится flaky, а skipped/missing/non-zero result
не становится pass.
python3 scripts/collect-capability-baseline.py playwright \
--report <temporary-report.json> \
--output <candidate.json> \
--source-revision <git-sha> \
--environment-class community-test \
--flow-id ui-operation-lifecycle
После review candidate и обновления canonical artifacts пересчитайте exact-byte SHA-256 в manifest и запустите:
python3 scripts/validate-capability-baseline.py \
--root . \
--manifest docs/capability-baseline/manifest.json \
--schema docs/schemas/capability-baseline.schema.json