vantadb 0.1.4

VantaDB: An embedded persistent memory and vector retrieval engine for local-first AI applications.
Documentation
name: VantaDB Heavy Certification

on:
  workflow_dispatch:
    inputs:
      include_sift:
        description: "Run SIFT-1M validation (requires dataset download)"
        type: boolean
        default: false
      include_competitive:
        description: "Run competitive benchmarks"
        type: boolean
        default: false
  schedule:
    # Weekly: Sundays at 03:00 UTC
    - cron: "0 3 * * 0"

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always
  CARGO_INCREMENTAL: 0

jobs:
  stress-protocol:
    name: "Certification: stress_protocol"
    runs-on: ubuntu-latest
    timeout-minutes: 180
    steps:
      - uses: ./.github/actions/rust-setup
        with:
          swap-mb: 8192
          free-disk: true
      - name: Run stress protocol
        timeout-minutes: 150
        run: cargo test --release --test stress_protocol -- --nocapture --test-threads=1

  hnsw-validation:
    name: "Certification: hnsw_validation"
    runs-on: ubuntu-latest
    timeout-minutes: 120
    steps:
      - uses: ./.github/actions/rust-setup
        with:
          swap-mb: 8192
          free-disk: true
      - name: Run HNSW validation
        run: cargo test --release --test hnsw_validation -- --nocapture --test-threads=1

  hnsw-recall:
    name: "Certification: hnsw_recall_certification"
    runs-on: ubuntu-latest
    timeout-minutes: 40
    steps:
      - uses: ./.github/actions/rust-setup
        with:
          free-disk: true
      - name: Run HNSW recall certification
        timeout-minutes: 25
        run: cargo test --release --test hnsw_recall_certification -- --nocapture --test-threads=1

  sift-validation:
    name: "Certification: sift_validation"
    if: ${{ github.event_name == 'workflow_dispatch' && inputs.include_sift == true }}
    runs-on: ubuntu-latest
    timeout-minutes: 45
    steps:
      - uses: ./.github/actions/rust-setup
      - name: Run SIFT validation
        timeout-minutes: 30
        run: cargo test --release --test sift_validation -- --nocapture --test-threads=1

  competitive-bench:
    name: "Certification: competitive_bench"
    if: ${{ github.event_name == 'workflow_dispatch' && inputs.include_competitive == true }}
    runs-on: ubuntu-latest
    timeout-minutes: 45
    steps:
      - uses: ./.github/actions/rust-setup
      - name: Run competitive benchmark
        timeout-minutes: 30
        run: cargo test --release --test competitive_bench -- --nocapture --test-threads=1

  failpoint-tests:
    name: "Certification: failpoint_injections"
    runs-on: ubuntu-latest
    concurrency:
      group: failpoints-${{ github.ref }}
      cancel-in-progress: true
    steps:
      - uses: ./.github/actions/rust-setup
      - name: Install nextest
        uses: taiki-e/install-action@v2
        with:
          tool: nextest
      - name: Run failpoint tests
        env:
          RUST_BACKTRACE: 1
        run: |
          cargo nextest run --test chaos_integrity --features failpoints --test-threads=1
          cargo nextest run --test wal_resilience --test-threads=1
          cargo nextest run --test crash_injection --test-threads=1

  storage-persistence:
    name: "Certification: storage_persistence"
    runs-on: ubuntu-latest
    timeout-minutes: 90
    steps:
      - uses: ./.github/actions/rust-setup
        with:
          swap-mb: 4096
          free-disk: true
      # Runs storage persistence and recovery tests.
      # Note: prefetch_benchmark and file_locking_stress explicitly require the "cli" feature in Cargo.toml.
      - name: Run storage persistence & recovery tests
        timeout-minutes: 75
        run: >
          cargo test --release --features cli
          --test backend_tests
          --test storage
          --test durability_recovery
          --test derived_index_recovery
          --test index_reconstruction
          --test fjall_cold_copy_restore
          --test property_durability
          --test file_locking_stress
          --test schema_evolution
          --test gc
          --test mmap_index
          --test mutations
          --test antilocality_layout
          --test tombstone_ann_vstore
          --test multi_process_lock
          --test operational_metrics
          --test prefetch_benchmark
          --
          --test-threads=1

  text-index:
    name: "Certification: text_index_recovery"
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - uses: ./.github/actions/rust-setup
        with:
          swap-mb: 4096
      - name: Run text index recovery tests
        timeout-minutes: 45
        run: cargo test --release --test text_index_recovery -- --test-threads=1 --nocapture

  memory-concurrency:
    name: "Certification: memory_concurrency"
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - uses: ./.github/actions/rust-setup
        with:
          swap-mb: 4096
      - name: Run memory & concurrency heavy tests
        timeout-minutes: 45
        run: >
          cargo test --release
          --test memory_brutality
          --test memory_export_import
          --test concurrency_parity
          --test memory_api
          --test memory_telemetry
          --test edge_cases
          --test fuzz_proptest
          --
          --test-threads=1

  other-heavy:
    name: "Certification: other_heavy"
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - uses: ./.github/actions/rust-setup
        with:
          swap-mb: 4096
          free-disk: true
      - name: Run remaining heavy tests
        timeout-minutes: 45
        run: |
          cargo test --release --features cli,arrow \
            --test benchmark_internal \
            --test benchmark_datasets \
            --test cli_tests \
            --test structured_api_v2 \
            --test python_sdk_boundary \
            --test hybrid_ranking_metrics \
            --test hybrid_retrieval_quality \
            --test basic_node \
            --test hardware_profiles \
            --test vector_scale_check \
            --test integration \
            --test multilingual_tokenizer_integration \
            --test columnar \
            -- \
            --test-threads=1
          cargo test --release \
            --package vantadb-server \
            --test mcp_integration \
            --test e2e \
            --test benchmarks \
            --test server \
            -- \
            --test-threads=1
          cargo test --release \
            --package vantadb-mcp \
            --test mcp_tests \
            -- \
            --test-threads=1
          cargo test --release \
            --package vantadb \
            --lib index::tests::concurrent_insert_preserves_hnsw_invariants \
            -- \
            --nocapture