fmt:
    cargo fmt --all

fmt-check:
    cargo fmt --all --check

tooling-test:
    python3 -m unittest discover -s tests/unit

capability-inventory-check:
    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)
    python3 scripts/validate-capability-baseline.py --root . --manifest docs/capability-baseline/manifest.json --schema docs/schemas/capability-baseline.schema.json

community-scope-check:
    scripts/check-community-scope.sh

config-contract-check:
    cargo run -p crank-config --bin crank-config-contract -- --check
    python3 scripts/check-runtime-config.py --root .
    python3 scripts/check-config-boundaries.py --root .

migration-contract-check:
    cargo run -p admin-api --bin crank-migrate -- plan --check

rust-boundaries:
    scripts/check-rust-boundaries.sh

rust-code-health:
    scripts/check-rust-code-health.sh

dependencies:
    scripts/check-dependencies.sh

check:
    cargo check --workspace

clippy:
    cargo clippy --workspace --all-targets --all-features -- -D warnings

test:
    cargo test --workspace --all-targets -- --test-threads=1

sqlx-prepare database_url:
    DATABASE_URL={{database_url}} cargo sqlx prepare --workspace -- --all-targets

sqlx-check:
    SQLX_OFFLINE=true cargo check --workspace

verify:
    just tooling-test
    just capability-inventory-check
    just community-scope-check
    just config-contract-check
    just migration-contract-check
    just rust-boundaries
    just rust-code-health
    just dependencies
    just fmt-check
    just clippy
    just test

ui-build:
    docker build -f apps/ui/Dockerfile .

verify-ui:
    just ui-build

ui-e2e:
    cd apps/ui && npm run e2e

staging-smoke base_url:
    bash scripts/staging-smoke.sh {{base_url}}

authenticated-staging-smoke base_url:
    bash scripts/authenticated-staging-smoke.sh {{base_url}}

authenticated-product-smoke base_url:
    bash scripts/authenticated-product-smoke.sh {{base_url}}
