Skip to content

perf(graph): reuse persisted adjacency on boot instead of rebuilding (FIR-853) #82

perf(graph): reuse persisted adjacency on boot instead of rebuilding (FIR-853)

perf(graph): reuse persisted adjacency on boot instead of rebuilding (FIR-853) #82

Workflow file for this run

# 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