perf(graph): reuse persisted adjacency on boot instead of rebuilding (FIR-853) #82
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # SPDX-License-Identifier: Apache-2.0 | |
| # Copyright 2026 Firelock, LLC | |
| # Linux build + test for the kin-db graph engine. | |
| # | |
| # kin-db is the pure-Rust semantic engine (graph storage, snapshots, indexing, | |
| # text + vector search). Its default feature set (`vector` + `embeddings`) runs | |
| # transformer inference on CPU via kin-infer, so the whole workspace builds and | |
| # tests on Linux. The macOS-only `metal` feature is deliberately NOT enabled | |
| # here: it pulls the `metal`/`objc2`/`block` crates, which only exist on | |
| # cfg(target_os = "macos") and fail to compile on Linux (unresolved crate). | |
| # | |
| # This is a dedicated, additive workflow (it does not modify ci.yml). It exists | |
| # because agents and CI runners live on Linux, so the engine must have a green | |
| # Linux signal of its own. | |
| name: CI (Linux) | |
| on: | |
| push: | |
| branches: ["**"] | |
| pull_request: | |
| branches: [main] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| linux-build-test: | |
| name: Linux Build & Test (no Metal) | |
| runs-on: ubuntu-latest | |
| steps: | |
| # kin-db's committed .cargo/config.toml resolves the kin-registry crates | |
| # (kin-model / kin-infer / kin-vector / kin-search) via pinned PUBLIC-git | |
| # [patch.kin] revs — no sibling checkouts and no registry auth needed. The | |
| # Check & Test workflow (ci.yml) proves these git patches resolve cleanly | |
| # from a single kin-db checkout; this Linux workflow now mirrors that. | |
| # (It previously laid out ../kin-* siblings for an older PATH-patch scheme | |
| # that "make public dependency resolution reproducible" replaced with git | |
| # revs, leaving the siblings stale and the git clone the actual resolver.) | |
| - name: Checkout kin-db | |
| uses: actions/checkout@v6 | |
| with: | |
| path: kin-db | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@1.96.0 | |
| - name: Cache cargo registry and build | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| kin-db/target | |
| key: ${{ runner.os }}-cargo-linux-${{ hashFiles('kin-db/**/Cargo.toml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-linux- | |
| # Default features only (vector + embeddings, CPU inference). No `metal`. | |
| - name: Build | |
| working-directory: kin-db | |
| run: cargo build --workspace --all-targets | |
| # HF_HUB_OFFLINE keeps the run deterministic and offline. The three tests | |
| # that construct a real embedder and need HF weights are skipped (CI-config, | |
| # no test code touched) until an offline stub-weights fixture exists | |
| # (post-freeze item) — same skip as ci.yml so both workflows match. Metal- | |
| # only tests are already #[ignore]. Everything else (graph/storage/search/ | |
| # vector/text) is pure-Rust and runs. | |
| - name: Test | |
| working-directory: kin-db | |
| env: | |
| HF_HUB_OFFLINE: "1" | |
| # many_vectors_search_quality: duplicate-vector fixture whose exact-top-1 | |
| # identity assertion flipped at kin-vector efe77db (bisected) — key-hash | |
| # tie-break returns a different zero-distance duplicate, not a recall | |
| # regression. Skipped here too (same as ci.yml); POST-M1 fixture fix. | |
| run: >- | |
| cargo test --workspace -- | |
| --skip process_embedding_queue_without_embeddings_is_noop | |
| --skip default_dimensions_match_default_model | |
| --skip test_vector_index_dimension_mismatch_auto_recovery | |
| --skip many_vectors_search_quality |