Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# cargo-nextest configuration.
#
# Without a terminate-after bound, a test that hangs rather than fails runs
# until the GitHub Actions job timeout — `ruvector-delta-index`'s
# test_insert_and_search burned 3h52m of a 240-minute budget this way (see
# issue #825). Report a test as SLOW after each 120s period and kill it after
# 5 periods (10 minutes), surfacing it as a normal test failure.
[profile.default]
slow-timeout = { period = "120s", terminate-after = 5 }
109 changes: 96 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -172,12 +172,25 @@ jobs:
-p mcp-brain
-p ruvector-decompiler
- name: core-and-rest-wasm
# Iter 232 — split out the 29 *-wasm crates from core-and-rest
# Iter 232 — split out the *-wasm crates from core-and-rest
# because the catch-all shard had grown to 115 crates and was
# consistently missing the 180min cap (iter-228 + iter-230 +
# iter-231 all cancelled at the timeout boundary). The wasm
# crates are a natural sub-group: thin bindings on top of host
# crates, easy to compile + test in isolation.
#
# Iter 233 — `ruvllm-wasm` is excluded from native nextest: 11 of
# its 195 tests (sona_instant + workers::feature_detect) fail or
# SIGABRT on native because they are wasm-target specific and need
# wasm-bindgen-test. Surfaced by the iter-232 split; previously
# masked by the iter-228..231 timeout cancellations of the mega
# shard. Fix is to gate the affected modules behind
# `#[cfg(target_arch = "wasm32")]` or migrate them to
# wasm-bindgen-test runners.
#
# NOTE: comments must stay above `packages:`. Inside the folded
# scalar they are content, not YAML comments, and the shell
# truncates the expanded command line at the first `#`.
packages: >-
-p neural-trader-wasm
-p ruvector-acorn-wasm
Expand All @@ -193,6 +206,7 @@ jobs:
-p ruvector-exotic-wasm
-p ruvector-fpga-transformer-wasm
-p ruvector-gnn-wasm
-p ruvector-graph-condense-wasm
-p ruvector-graph-transformer-wasm
-p ruvector-graph-wasm
-p ruvector-learning-wasm
Expand All @@ -207,15 +221,6 @@ jobs:
-p ruvector-tiny-dancer-wasm
-p ruvector-verified-wasm
-p ruvector-wasm
# Iter 233 — `ruvllm-wasm` excluded from native nextest:
# 11 of its 195 tests (sona_instant + workers::feature_detect)
# fail or SIGABRT on native because they're wasm-target
# specific (need wasm-bindgen-test). Surfaced by iter-232's
# split; previously masked by the iter-228..231 timeout
# cancellations of the megaShard. Tracking as workspace
# follow-up — fix is to gate the affected modules behind
# `#[cfg(target_arch = "wasm32")]` or migrate to
# wasm-bindgen-test runners.
- name: research-nightly
# Nightly research PoC crates (iter 240+). Kept in a separate shard
# so their compile + test time doesn't inflate core-and-rest.
Expand Down Expand Up @@ -277,13 +282,65 @@ jobs:
-p verified-applications
-p void-boundary-discovery
-p weather-boundary-discovery
- name: core-platform
# Services, distributed infrastructure, and native Node bindings
# form a coherent dependency cluster. Keep them out of the
# catch-all so its remaining core libraries compile within the
# job timeout even on a cold cache.
#
# `ruvector-delta-index` is deliberately absent: its
# `test_insert_and_search` hangs indefinitely in DeltaHnsw
# insert/search and burned 3h52m of this shard before the job
# timed out. Held out of CI entirely (also `--exclude`d from
# core-and-rest below) until fixed. See issue #825.
packages: >-
-p mcp-brain-server
-p mcp-gate
-p ruvector-cli
-p ruvector-cluster
-p ruvector-cluster-rag
-p ruvector-delta-consensus
-p ruvector-delta-core
-p ruvector-delta-graph
-p ruvector-namespace-merge
-p ruvector-raft
-p ruvector-replication
-p ruvector-router-cli
-p ruvector-router-core
-p ruvector-router-ffi
-p ruvector-server
-p ruvector-snapshot
-p ruvector-attention-node
-p ruvector-diskann-node
-p ruvector-gnn-node
-p ruvector-graph-node
-p ruvector-graph-transformer-node
-p ruvector-mincut-node
-p ruvector-node
-p ruvector-solver-node
-p ruvector-tiny-dancer-node
- name: core-and-rest
# Everything else: core, delta, server/cluster, etc.
# Uses --workspace + --exclude to subtract the groups above so we
# don't have to enumerate ~100 crates by hand.
#
# The exclude list below subtracts, in order: the nightly research
# crates (research-nightly shard, iter 240+), the example and
# application crates (core-and-rest-examples), the service,
# distributed and Node-binding crates (core-platform), the heavy
# long-tail crates (core-and-rest-heavy), the domain shards
# (vector-index, rvagent, ruvix, ml-research-*), and the wasm
# crates (core-and-rest-wasm). `ruvector-postgres`, `timesfm`,
# `ruvllm-wasm`, the hailo crates, and `ruvector-delta-index`
# (hangs — issue #825) are held out of native nextest entirely.
#
# NOTE: every comment must stay above `packages:`. A `#` inside
# the folded scalar is content, not a YAML comment — folding joins
# it onto one line and the shell then truncates the expanded
# command at the first `#`, silently dropping every --exclude that
# follows and running the whole 210-crate workspace instead.
packages: >-
--workspace
# Nightly research crates run in the research-nightly shard (iter 240+)
--exclude photonlayer-core
--exclude photonlayer-bench
--exclude photonlayer-cli
Expand All @@ -296,7 +353,6 @@ jobs:
--exclude ruvector-hnsw-repair
--exclude ruvector-coherence-hnsw
--exclude ruvector-maxsim
# Example/application crates run in core-and-rest-examples.
--exclude a2a-swarm
--exclude boundary-discovery
--exclude brain-boundary-discovery
Expand Down Expand Up @@ -333,6 +389,32 @@ jobs:
--exclude verified-applications
--exclude void-boundary-discovery
--exclude weather-boundary-discovery
--exclude mcp-brain-server
--exclude mcp-gate
--exclude ruvector-cli
--exclude ruvector-cluster
--exclude ruvector-cluster-rag
--exclude ruvector-delta-consensus
--exclude ruvector-delta-core
--exclude ruvector-delta-graph
--exclude ruvector-delta-index
--exclude ruvector-namespace-merge
--exclude ruvector-raft
--exclude ruvector-replication
--exclude ruvector-router-cli
--exclude ruvector-router-core
--exclude ruvector-router-ffi
--exclude ruvector-server
--exclude ruvector-snapshot
--exclude ruvector-attention-node
--exclude ruvector-diskann-node
--exclude ruvector-gnn-node
--exclude ruvector-graph-node
--exclude ruvector-graph-transformer-node
--exclude ruvector-mincut-node
--exclude ruvector-node
--exclude ruvector-solver-node
--exclude ruvector-tiny-dancer-node
--exclude ruvector-postgres
--exclude ruvector-decompiler
--exclude timesfm
Expand Down Expand Up @@ -397,14 +479,15 @@ jobs:
--exclude ruvector-cnn-wasm
--exclude ruvector-consciousness-wasm
--exclude ruvector-dag-wasm
--exclude ruvector-decompiler
--exclude ruvector-decompiler-wasm
--exclude timesfm-wasm
--exclude ruvector-delta-wasm
--exclude ruvector-domain-expansion-wasm
--exclude ruvector-economy-wasm
--exclude ruvector-exotic-wasm
--exclude ruvector-fpga-transformer-wasm
--exclude ruvector-gnn-wasm
--exclude ruvector-graph-condense-wasm
--exclude ruvector-graph-transformer-wasm
--exclude ruvector-graph-wasm
--exclude ruvector-learning-wasm
Expand Down
Loading