design(ap): AIA banner redesign + sync README ledger to measured counts #42
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
| name: CI | |
| # Runs on every push to main and every pull request. The Spike B' graph | |
| # accuracy gate lives in tests/graph_accuracy.rs and is part of the standard | |
| # `cargo test` invocation — if any structural EdgeKind F1 regresses below | |
| # the locked floor (nodes ≥ 0.96, Defines ≥ 0.96 as of iteration 5), this | |
| # job fails. As Bugs #11 and #13 land the floor tightens automatically. | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| # Cancel in-flight runs when a new commit lands on the same ref. | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| jobs: | |
| test: | |
| name: cargo test (graph accuracy gate) | |
| runs-on: ubuntu-latest | |
| # A cold build (no cargo cache) compiles tree-sitter + tantivy + lbug | |
| # from scratch — measured ~19 min just to reach the graph-accuracy gate | |
| # on run 26515840381, leaving too little of a 25 min budget to also | |
| # compile + run the full suite. Worse, a timeout is a *cancellation*, | |
| # and actions/cache skips its save step when cancelled — so every | |
| # timed-out run failed to warm the cache, guaranteeing the next run was | |
| # cold too (a self-perpetuating deadlock). 60 min lets one cold build | |
| # finish and populate the cache; warm-cache runs complete in ~6 min. | |
| timeout-minutes: 60 | |
| # zstd-sys (pulled transitively via tantivy → tantivy-columnar → | |
| # tantivy-sstable → zstd → zstd-safe → zstd-sys) and lbug both | |
| # statically link libzstd, producing duplicate symbols on Linux | |
| # (rust-lld is strict about this; macOS ld64 silently dedupes, | |
| # which is why release.yml only needed this on its ubuntu matrix | |
| # legs). ZSTD_SYS_USE_PKG_CONFIG=1 makes zstd-sys link the system | |
| # libzstd dynamically instead of compiling its own static copy, | |
| # eliminating the conflict. See the duplicate-symbol failure on | |
| # run 26411205432 for the unfixed signature. | |
| env: | |
| ZSTD_SYS_USE_PKG_CONFIG: "1" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Linux build deps | |
| run: | | |
| sudo apt-get update -qq | |
| sudo apt-get install -y --no-install-recommends \ | |
| libzstd-dev pkg-config cmake | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| # Cache the cargo target dir keyed on Cargo.lock. Saves ~minutes per | |
| # run because tree-sitter + tantivy + lbug are heavy to recompile. | |
| # | |
| # The "zstd-pkgconfig-v1" segment is part of the key on purpose: | |
| # the previous build environment baked a static libzstd.a into | |
| # target/ that collides with lbug's vendored zstd at link time | |
| # (see job-level env comment). When that env changes, the cache | |
| # must NOT be restored — otherwise the conflicting artifact comes | |
| # back and the link error reappears. Bump this segment whenever | |
| # the build env changes in a way that touches target/. | |
| - name: Cache cargo build | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-zstd-pkgconfig-v1-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-zstd-pkgconfig-v1- | |
| # The graph_accuracy test is the Spike B' gate. Its asserts ratchet | |
| # forward as fixes land — current floor is nodes/Defines ≥ 0.96 on | |
| # tests/fixtures/graph_accuracy/pure-shared/text.py. | |
| - name: Run graph accuracy gate | |
| run: cargo test --test graph_accuracy -- --nocapture | |
| # Full suite (stage3a-d integrations, etc.). Kept separate so a | |
| # graph-accuracy regression fails the build with a clear signal even | |
| # if other tests are broken for unrelated reasons. | |
| - name: Run full test suite | |
| run: cargo test |