Skip to content

release: v0.5.0 - Phase 4 Complete (Enterprise Analytics & Rule Marke… #10

release: v0.5.0 - Phase 4 Complete (Enterprise Analytics & Rule Marke…

release: v0.5.0 - Phase 4 Complete (Enterprise Analytics & Rule Marke… #10

name: Analytics Smoke
on:
pull_request:
paths:
- "crates/aishield-analytics/**"
- "crates/aishield-cli/**"
- "dashboard/**"
- "migrations/**"
- "scripts/start-analytics-stack.sh"
- "scripts/stop-analytics-stack.sh"
- "scripts/smoke-analytics-api.sh"
- "docker-compose.analytics.yml"
- ".github/workflows/analytics-smoke.yml"
push:
branches: [main]
paths:
- "crates/aishield-analytics/**"
- "crates/aishield-cli/**"
- "dashboard/**"
- "migrations/**"
- "scripts/start-analytics-stack.sh"
- "scripts/stop-analytics-stack.sh"
- "scripts/smoke-analytics-api.sh"
- "docker-compose.analytics.yml"
- ".github/workflows/analytics-smoke.yml"
permissions:
contents: read
jobs:
smoke:
runs-on: ubuntu-latest
timeout-minutes: 25
env:
AISHIELD_API_KEY: test_key_e2e_12345
DATABASE_URL: postgres://aishield:aishield_dev_password@localhost:5432/aishield_analytics
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Start analytics stack and run smoke test
run: ./scripts/start-analytics-stack.sh
- name: Enforce analytics signal thresholds
env:
AISHIELD_ANALYTICS_URL: http://localhost:8080
AISHIELD_ORG_ID: test_org_1
run: |
cargo run -p aishield-cli -- analytics summary \
--days 30 \
--probes 3 \
--probe-interval-ms 250 \
--max-error-rate-pct 1 \
--max-summary-p95-ms 2000 \
--max-compliance-p95-ms 2000 \
--min-coverage-pct 70 \
--fail-on-threshold
- name: Stop analytics stack
if: always()
run: ./scripts/stop-analytics-stack.sh
hardening:
runs-on: ubuntu-latest
timeout-minutes: 25
env:
AISHIELD_API_KEY: test_key_e2e_12345
DATABASE_URL: postgres://aishield:aishield_dev_password@localhost:5432/aishield_analytics
AISHIELD_ALLOWED_ORIGINS: http://localhost:3000
AISHIELD_RATE_LIMIT_REQUESTS: 12
AISHIELD_RATE_LIMIT_SECONDS: 60
AISHIELD_SMOKE_ASSERT_CORS: 1
AISHIELD_SMOKE_ALLOWED_ORIGIN: http://localhost:3000
AISHIELD_SMOKE_DISALLOWED_ORIGIN: https://not-allowed.example
AISHIELD_SMOKE_ASSERT_RATE_LIMIT: 1
AISHIELD_SMOKE_RATE_LIMIT_MAX: 12
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Start hardened analytics stack and run smoke test
run: ./scripts/start-analytics-stack.sh
- name: Enforce hardened analytics signal thresholds
env:
AISHIELD_ANALYTICS_URL: http://localhost:8080
AISHIELD_ORG_ID: test_org_1
run: |
cargo run -p aishield-cli -- analytics summary \
--days 30 \
--probes 3 \
--probe-interval-ms 250 \
--max-error-rate-pct 1 \
--max-summary-p95-ms 2000 \
--max-compliance-p95-ms 2000 \
--min-coverage-pct 70 \
--fail-on-threshold
- name: Stop analytics stack
if: always()
run: ./scripts/stop-analytics-stack.sh