feat: harden community production foundation through story 1.5
This commit is contained in:
@@ -47,6 +47,11 @@ CRANK_STAGING_ADMIN_PASSWORD=secret \
|
||||
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-кода:
|
||||
@@ -73,6 +78,28 @@ CRANK_PRODUCT_SMOKE_KEEP_ASSETS=1 ./scripts/authenticated-product-smoke.sh https
|
||||
./scripts/check-rust-boundaries.sh
|
||||
```
|
||||
|
||||
## Typed runtime configuration contract
|
||||
|
||||
Единый Rust registry генерирует machine contract, sections `.env.example` и
|
||||
таблицу параметров. Проверка drift не изменяет файлы:
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
## `check-community-scope.sh`
|
||||
|
||||
Проверяет, что в community-репозиторий не попали функции и тексты за пределами
|
||||
@@ -87,3 +114,51 @@ Unit-тесты checker-а лежат в `tests/unit`:
|
||||
```bash
|
||||
python3 -m unittest discover -s tests/unit
|
||||
```
|
||||
|
||||
Новые или ещё не tracked файлы по умолчанию не видны wrapper-у. Перед handoff
|
||||
передайте только файлы текущего изменения явно:
|
||||
|
||||
```bash
|
||||
python3 scripts/check-community-scope.py --root . --files <paths...>
|
||||
```
|
||||
|
||||
## `validate-capability-inventory.py`
|
||||
|
||||
Проверяет canonical `docs/capability-inventory.json` по versioned schema,
|
||||
обязательным FR, Community boundary и существующим evidence-ссылкам:
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
```bash
|
||||
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 и запустите:
|
||||
|
||||
```bash
|
||||
python3 scripts/validate-capability-baseline.py \
|
||||
--root . \
|
||||
--manifest docs/capability-baseline/manifest.json \
|
||||
--schema docs/schemas/capability-baseline.schema.json
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user