ci(publish): longer npm propagation window; fix(filter): E0275 in Workspace CI - #1015
Merged
Merged
Conversation
npm now answers a publish with "being processed and may take a few minutes"; ruvector@0.3.3 took ~5.5 min to resolve and the ~3 min window failed a publish that had succeeded (run 35885519789). Raise every registry poll to 72 x 10s. Co-Authored-By: claude-flow <ruv@ruv.net>
…kspace CI)
The internally tagged derive on FilterExpression made its recursive newtype
variants And(Vec<Self>)/Or(Vec<Self>)/Not(Box<Self>) nest TaggedSerializer
without bound: rustc 1.98 fails the lib test with E0275 even at
recursion_limit 4096 (core-and-rest shard, run 35870473509; also on
feat/typesafe-package 2026-09-21), and at 8192 it does not finish. At runtime
And/Or could never serialize (serde cannot tag a sequence), which also broke
ruvector-wasm FilterBuilder.and/or().toJson().
Serde now goes through FilterExpressionWire (serde into/from) where logical
operators are struct variants: {"type":"and","filters":[...]},
{"type":"not","filter":{...}}. Leaf variants keep their JSON shape and the
Rust enum and constructors are unchanged.
Co-Authored-By: claude-flow <ruv@ruv.net>
Per-crate override like ruvector-graph 2.3.1: the workspace 2.3.0 is already on crates.io for ruvllm-cli. ruvector-filter ships as the unpublished workspace 2.3.0 (crates.io has 2.2.3). Co-Authored-By: claude-flow <ruv@ruv.net>
Co-Authored-By: claude-flow <ruv@ruv.net>
…compiles With the E0275 compile error gone the shard ran all 3099 tests; two failed (run 35900536715): - ruvector-metrics: gather_metrics() returned an empty page in a fresh process because the metrics are lazy statics registered on first use (nextest runs each test in its own process). It now initializes the unlabeled gauges and counters so they are exported at zero from startup. - mincut-gated-transformer: test_flash_attention_memory_efficiency asserted a 1s wall-clock bound on an unoptimized build on shared runners (1.27s). The bound now applies to optimized builds only; the test also checks the output is finite. Co-Authored-By: claude-flow <ruv@ruv.net>
Further failures reached once core-and-rest compiled (runs 35908988894, 35908988867): - neural-trader-strategies: two ASCII diagrams in indented doc blocks were compiled as Rust doctests (unknown token →). Mark them as text blocks. - ruvector-diskann search_allocations: the global counting allocator also saw allocations from other threads (idle rayon workers left over from build()), so the total budget was flaky (386 700 vs 300 000; the same code passed on the previous run). Search is single-threaded, so count only the searching thread. The visited-set-sized-block assertion is unchanged. - ruvllm attention benchmark: skip the 1ms wall-clock bound under cargo-llvm-cov instrumentation (LLVM_PROFILE_FILE set; measured 1099us). Co-Authored-By: claude-flow <ruv@ruv.net>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
1. Publish registry checks wait up to ~12 min
npm now replies to a publish with "Your package is being processed and may take a few minutes".
ruvector@0.3.3took about 5½ minutes to resolve, so the ~3-minute registry check added in #1014 failed a publish that had actually succeeded (run 35885519789). Every registry poll loop (router, kge, typesafe, graph-node, ruvector) goes from 18 to 72 attempts of 10 s.2.
ruvector-filter: fix E0275 that fails Workspace CIcore-and-restThis was already failing before #1014: the same error shows up on
feat/typesafe-packageon 2026-09-21, and main's runs were being cancelled at the 4 h timeout. The internally tagged serde derive onFilterExpression, combined with the recursive newtype variantsAnd(Vec<Self>),Or(Vec<Self>)andNot(Box<Self>), nestsTaggedSerializerwithout bound. rustc 1.98 reports E0275 atrecursion_limit = 4096and never finishes at 8192. At runtimeAnd/Orcould not serialize at all, which also brokeruvector-wasmFilterBuilder.and/or().toJson().Serde now goes through a private
FilterExpressionWireenum (#[serde(into, from)]) in which logical operators are struct variants:{"type":"and","filters":[…]}and{"type":"not","filter":{…}}. Leaf JSON is unchanged, and so are the Rust enum and its constructors.Validation:
cargo test -p ruvector-filtergives 17 unit + 2 doc tests passing, including new round-trip tests for and/or/not and a test that leaf JSON is unchanged.clippy --all-targetsis clean.cargo check -p ruvector-wasm -p ruvector-nodepasses.🤖 Generated with claude-flow