From 5495210f63cff53d05397061d24cfd381e9f76c0 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 10 Oct 2026 01:48:42 +0000 Subject: [PATCH 1/4] toolchain: Rust 1.98.1 -> 1.99.0 (+ lance 13 / lancedb 0.40 where pinned) Non-comment pins only (rust-toolchain.toml, rust-version, CI MSRV, Dockerfile images); historical comments untouched. lance/lancedb moved in lockstep with lance-graph (arrow 58 / datafusion 54 unchanged); lancedb 0.40.0 still needs `remote` to compile. Verification results follow in the PR. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017YPZhKpSxN7eSxk7VH2vzB --- Dockerfile | 2 +- crates/cockpit-server/Cargo.toml | 4 ++-- crates/stubs/q2-ndarray/Cargo.toml | 2 +- rust-toolchain.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9c9faacf09..03bd4f6c0b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,7 +38,7 @@ RUN apt-get update && apt-get install -y \ # Rust 1.98.1 RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \ - sh -s -- -y --default-toolchain 1.98.1 + sh -s -- -y --default-toolchain 1.99.0 ENV PATH="/root/.cargo/bin:${PATH}" WORKDIR /build diff --git a/crates/cockpit-server/Cargo.toml b/crates/cockpit-server/Cargo.toml index 19e0b535d3..dca31978b1 100644 --- a/crates/cockpit-server/Cargo.toml +++ b/crates/cockpit-server/Cargo.toml @@ -2,7 +2,7 @@ name = "cockpit-server" version = "0.1.0" edition = "2024" -rust-version = "1.98.1" +rust-version = "1.99.0" description = "Single-binary graph notebook — live .qmd rendering via lance-graph + deno_core" [[bin]] @@ -96,7 +96,7 @@ arc-swap = "1.9" # `lance-graph` -> `lance` -> `arrow` — declaring them directly here changes # no resolved version, it just makes the capability this crate USES a thing # this crate ASKS FOR. Same move lance-graph PR #931 made for `object_store`. -lance = "=12.0.0" +lance = "=13.0.0" arrow = { version = "58", features = ["prettyprint"] } diff --git a/crates/stubs/q2-ndarray/Cargo.toml b/crates/stubs/q2-ndarray/Cargo.toml index 7939ed7587..b0ce9258cb 100644 --- a/crates/stubs/q2-ndarray/Cargo.toml +++ b/crates/stubs/q2-ndarray/Cargo.toml @@ -2,7 +2,7 @@ name = "q2-ndarray" version = "0.1.0" edition = "2024" -rust-version = "1.98.1" +rust-version = "1.99.0" description = "SIMD-accelerated N-dimensional arrays for Quarto graph notebooks" [features] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index f509424889..b3d1d27cd5 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -8,6 +8,6 @@ # actually fixing the underlying overflow. Pinning is the durable fix # until the upstream regression is resolved; bump the date when nightly # stabilizes again. -channel = "1.98.1" +channel = "1.99.0" components = ["rust-src","rustfmt", "clippy"] targets = ["wasm32-unknown-unknown"] From f5075c6cff4066a6b6023a09d159f73cffe95c53 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 10 Oct 2026 11:23:51 +0000 Subject: [PATCH 2/4] Cargo.lock: resolve the lance 12 -> 13 bump The toolchain commit moved the lance pins to =13.0.0 but left the lock on 12.0.0. Re-resolved by cargo during the verify build: every lance-* crate 12.0.0 -> 13.0.0 (lance-namespace 0.12 -> 0.13) plus lance 13's new transitive deps (foyer-*, datasketches, lru, mixtrics). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017YPZhKpSxN7eSxk7VH2vzB --- Cargo.lock | 181 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 143 insertions(+), 38 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 48be37dfaa..210cb6f955 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3048,6 +3048,12 @@ dependencies = [ "sqlparser", ] +[[package]] +name = "datasketches" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c4cf71a36b46dcfc00e5014c0c20ccad2b1b6a008304d7d57d2749b2d41b3d" + [[package]] name = "deadpool" version = "0.9.5" @@ -3528,6 +3534,65 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "foyer-common" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643b47d510032a01e5af70dca288b0c5ec531646c1a8392e793fb5b0c13bef30" +dependencies = [ + "anyhow", + "bytes", + "cfg-if 1.0.4", + "foyer-tokio", + "mixtrics", + "parking_lot", + "pin-project", + "twox-hash", +] + +[[package]] +name = "foyer-intrusive-collections" +version = "0.10.0-dev" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4fee46bea69e0596130e3210e65d3424e0ac1e6df3bde6636304bdf1ca4a3b" +dependencies = [ + "memoffset", +] + +[[package]] +name = "foyer-memory" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae51f5089f3d9025ae77f17ea66d2489ac0f82fbb1d91462807bea174d486d82" +dependencies = [ + "anyhow", + "asyncband", + "bitflags 2.11.1", + "datasketches", + "equivalent", + "foyer-common", + "foyer-intrusive-collections", + "foyer-tokio", + "futures-util", + "hashbrown 0.17.1", + "itertools 0.15.0", + "mixtrics", + "parking_lot", + "paste", + "pin-project", + "serde", + "tracing", +] + +[[package]] +name = "foyer-tokio" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6741d1133dfaab64d3f8a9290bbfed3685084add28f8b6ee7a6264aa4dc26918" +dependencies = [ + "tokio", +] + [[package]] name = "fractal" version = "0.1.0" @@ -3568,9 +3633,9 @@ dependencies = [ [[package]] name = "fsst" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68d5636222ec95b9cf3dea6eaf7b6e126f493e8c778fde448b31023ac75f9f62" +checksum = "de52c5e8a41983a44223740e4322122b5a9111909215ebdb4abd9b3b4cf04a67" dependencies = [ "arrow-array", "rand 0.9.4", @@ -3978,9 +4043,14 @@ dependencies = [ "bytes", "dashmap 6.1.0", "fastrand", + "foyer-common", + "foyer-memory", "futures", "hostname", + "io-uring", "itoa", + "libc", + "lru", "prost", "rand 0.9.4", "serde", @@ -5131,9 +5201,9 @@ dependencies = [ [[package]] name = "lance" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc89ff0ce9a63c7c937831b9a917429d83f40b17119da728c5469ffcae7d735a" +checksum = "0e8dc0a0759fa0fcdbb970eec48ade5d02dbbd255147ff1f7b06d402d2f86b97" dependencies = [ "arc-swap", "arrow", @@ -5149,6 +5219,7 @@ dependencies = [ "async-recursion", "async-trait", "async_cell", + "blake3", "byteorder", "bytes", "chrono", @@ -5204,9 +5275,9 @@ dependencies = [ [[package]] name = "lance-arrow" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb5ac7fd453e7039269ac307554f503ea82729735559659a3e26ae64ce2556c" +checksum = "bab6e64549f9ad9a6380a35b56d7dca612555a6272c07b3abca84e59ded6f463" dependencies = [ "arrow-array", "arrow-buffer", @@ -5254,9 +5325,9 @@ dependencies = [ [[package]] name = "lance-bitpacking" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a320dad20dfa3a6cb70c2f88e24a8b53b6ed461bc69fd66354d30a3d29fee4" +checksum = "38984429670b348e62eda38315a6d01a930c5c5e8b85bbfd8b998e7d1fe6a257" dependencies = [ "arrayref", "crunchy", @@ -5266,9 +5337,9 @@ dependencies = [ [[package]] name = "lance-core" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31a96f90f1bd8d9c224f85c93dd856aaa0de405ce67325bf1f8ea58bc5cd3047" +checksum = "d3e377ee5bc5118efe5c321ecff0a07ac8f56db6bed16e31304e7d876ddcd96c" dependencies = [ "arrow-array", "arrow-buffer", @@ -5305,9 +5376,9 @@ dependencies = [ [[package]] name = "lance-datafusion" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "937780214df9ba669cd551acf32478ee566f024e6bd1e8f66042630151e74dce" +checksum = "7be43992965983ed8238a969b36239093102fdfe6c3dfcaa0007eeb17195ca34" dependencies = [ "arrow", "arrow-array", @@ -5338,9 +5409,9 @@ dependencies = [ [[package]] name = "lance-derive" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15aadaca1d2625b5cb48a895d7e522431e15c22152252c385e4e7d1df6333fa2" +checksum = "e847c0e4bf23d21967fe79473d8001309c7351895afb347e1a997d5fadca59fd" dependencies = [ "proc-macro2", "quote", @@ -5349,9 +5420,9 @@ dependencies = [ [[package]] name = "lance-encoding" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2c82ceed3511490555c211df37dd774c31e3bca0c0566aa0ae5be7b0701549" +checksum = "3c04a91e545b505b5e6ec98854c7eadc56689cbc072f138dd26805ef0095e81a" dependencies = [ "arrow-arith", "arrow-array", @@ -5384,9 +5455,9 @@ dependencies = [ [[package]] name = "lance-file" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21c704610da562be51e21ef71eb7f3c8efaf5975a3f7ec8f0631ee35d1989435" +checksum = "f0393605ef4f2bdd9894950de6c68fd2ca99a1de76d743e52e001177ccd9994f" dependencies = [ "arrow-arith", "arrow-array", @@ -5418,9 +5489,9 @@ dependencies = [ [[package]] name = "lance-geo" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c4395a94d28c83f18d824a17016717eaaf4565705e11ece87f1536350e2265" +checksum = "d18de60ec696890176fd63f696b8c453d0ee3ff820f63fc21f8fc018bd283492" dependencies = [ "datafusion", "geo-traits", @@ -5548,9 +5619,9 @@ dependencies = [ [[package]] name = "lance-index" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1169440f84972a1e66021718dbb46470579f94f7cec6559790bb22d7e0b2e3d3" +checksum = "21b5e0ccd1b4bffdccbb3b5c989e62eb545587d84b0785da50eda5a4d87d0a5d" dependencies = [ "arc-swap", "arrow", @@ -5577,6 +5648,8 @@ dependencies = [ "geoarrow-array", "geoarrow-schema", "half", + "hashbrown 0.16.1", + "hex", "itertools 0.14.0", "jsonb", "lance-arrow", @@ -5613,13 +5686,14 @@ dependencies = [ "tempfile", "tokio", "tracing", + "twox-hash", ] [[package]] name = "lance-index-core" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09961b73268e906cbe82d935d314e20d5143bd9b9d6efba75ceca83685e8054" +checksum = "f90986278ab82f1f1b1fe43eed060f547e0da0ad98a1038785f055e407fca3db" dependencies = [ "arrow-array", "arrow-schema", @@ -5637,13 +5711,14 @@ dependencies = [ "roaring", "serde", "serde_json", + "tokio", ] [[package]] name = "lance-io" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ead37ec60a2752a8cbf9c0ce0eb589b3e413665441debdfb64ba41e7fb3b593" +checksum = "224730479e781d24b81a0afecfe230b5b21a86a4f767ba7655b974402d0c67c5" dependencies = [ "arrow", "arrow-array", @@ -5655,6 +5730,7 @@ dependencies = [ "bytes", "chrono", "futures", + "goosefs-sdk", "http 1.4.0", "io-uring", "lance-core", @@ -5664,6 +5740,7 @@ dependencies = [ "object_store 0.14.2", "object_store_opendal", "opendal", + "opendal-service-goosefs", "path_abs", "pin-project", "prost", @@ -5682,9 +5759,9 @@ dependencies = [ [[package]] name = "lance-linalg" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0b7e56214caab7b640a419080a19c24a61a020f1de79bbd141175b20faac59b" +checksum = "84e97d99cab96a320119f2be2c1ccbc4b69e5190c152b9bac96ad902b4409efe" dependencies = [ "arrow-array", "arrow-schema", @@ -5698,9 +5775,9 @@ dependencies = [ [[package]] name = "lance-namespace" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d104407302278d44192f4e5965730f6e3cb668f8c5d2eb883d1fba7e5cd0ad4" +checksum = "eedb0930505992009d9a1b9aefc2e9fde6026fcc1b345211e2a609dace5be022" dependencies = [ "arrow", "async-trait", @@ -5714,9 +5791,9 @@ dependencies = [ [[package]] name = "lance-namespace-reqwest-client" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d23e54b1634d5bbb434f8dd33dc3c05f6e58d876a9a27b3b4aef58ddbe11af" +checksum = "828f291764feda98898452bea4ce3756b73e5d5c7c67b62edda27456b7cc72c1" dependencies = [ "reqwest 0.12.28", "serde", @@ -5728,9 +5805,9 @@ dependencies = [ [[package]] name = "lance-select" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f475444648a63cfa0065bac04ae9520f410951c9873069be3afa54585f6b14ab" +checksum = "6cd00ec21363c9449f10409bf5b56e914b807dd9110745f0d616f65c16188ddb" dependencies = [ "arrow-array", "arrow-buffer", @@ -5744,9 +5821,9 @@ dependencies = [ [[package]] name = "lance-table" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15423924ee8999c0be05d477bd3eb02d85ceca974af65586d452162ad20d47c8" +checksum = "0b770bac5033a6b3f11b3e3ffb05f8bce2cfc004ecb7992354af7627fd278747" dependencies = [ "arrow", "arrow-array", @@ -5784,9 +5861,9 @@ dependencies = [ [[package]] name = "lance-tokenizer" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0e597cdd637f7318b155b823d1a38d837877c191c7c656d9de272a4d704e0a1" +checksum = "3fec4342e22fa493efec9cc96584efe4cecbdc1ae218d6a40f47b16bd4f1ea13" dependencies = [ "frostem", "icu_segmenter", @@ -5986,6 +6063,15 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "lru" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" +dependencies = [ + "hashbrown 0.16.1", +] + [[package]] name = "lru-slab" version = "0.1.2" @@ -6147,6 +6233,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + [[package]] name = "mime" version = "0.3.17" @@ -6211,6 +6306,16 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "mixtrics" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c46b5adfb7a3ae4996d327a5bdc90e78fec025806dd312bdbe6f07a755e0ec9" +dependencies = [ + "itertools 0.15.0", + "parking_lot", +] + [[package]] name = "mlua" version = "0.11.6" From efa42863db932e19c3fc7c92f7a0d063bcee2451 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 10 Oct 2026 11:37:17 +0000 Subject: [PATCH 3/4] clippy 1.99 + lance-graph EdgeFacet: workspace clippy -D warnings clean - Cargo.toml [workspace.lints.clippy]: allow double_must_use; #[async_trait] adds #[must_use] to boxed futures, which clippy 1.99 now flags. - quarto-publish: same allow at crate level (it does not inherit [workspace.lints]). - pampa readers/qmd.rs: reborrow (&mut *output_stream) instead of &mut &mut (mut_mut); the binding no longer needs mut. - osint-bake, cockpit-server/osint_gotham: lance-graph main retired EdgeBlock's in_family/out_family fields (EdgeBlock = EdgeFacet, an opaque [u8; 16]; ISS-EDGE-BLOCK-WAS-A-SECOND-TYPE-FOR-THE-SAME-FACET). Both crates already treated the block as one flat array of 16 mixin bytes (in_family[0..12] then out_family[0..4]), so they now write as_bytes_mut()[k] and read as_bytes().iter(): byte-identical, and the 12/4 split is gone rather than restated. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017YPZhKpSxN7eSxk7VH2vzB --- Cargo.toml | 1 + crates/cockpit-server/src/osint_gotham.rs | 30 ++++++----------------- crates/osint-bake/src/lib.rs | 18 ++++---------- crates/pampa/src/readers/qmd.rs | 6 ++--- crates/quarto-publish/src/lib.rs | 5 ++++ 5 files changed, 21 insertions(+), 39 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index c77e415fcd..d18bd256bb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -328,6 +328,7 @@ manual_strip = "allow" # Sometimes clearer than strip_prefix needless_range_loop = "allow" # Sometimes index access is intentional const_is_empty = "allow" # False positive in tests needless_for_each = "allow" # Style preference +double_must_use = "allow" # #[async_trait] adds #[must_use] to boxed futures (clippy 1.99) # Keep these as warnings cfg_not_test = "warn" diff --git a/crates/cockpit-server/src/osint_gotham.rs b/crates/cockpit-server/src/osint_gotham.rs index 5019e94fb3..aa50cd7fdc 100644 --- a/crates/cockpit-server/src/osint_gotham.rs +++ b/crates/cockpit-server/src/osint_gotham.rs @@ -737,12 +737,10 @@ pub fn osint_node_rows(graph: &AiWarGraph, plan: &BasinPlan) -> Vec { mixins.sort_unstable(); // Fill the 16-byte EdgeBlock as one flat array of mixin adapters. let mut edges = EdgeBlock::default(); + // The 16 bytes are one content-blind facet (no in/out-family + // split); byte k carries mixin k exactly as before. for (k, &b) in mixins.iter().take(16).enumerate() { - if k < edges.in_family.len() { - edges.in_family[k] = b; - } else { - edges.out_family[k - edges.in_family.len()] = b; - } + edges.as_bytes_mut()[k] = b; } // value tenant: byte 0 carries the class-label ORDER (an instance @@ -891,9 +889,8 @@ pub fn build_osint_gotham(graph: &AiWarGraph, rounds: &[EncounterRound]) -> Grap // interface edges: member → each adapted basin hub (the 16×8-bit mask). let interfaces = r .edges - .in_family + .as_bytes() .iter() - .chain(r.edges.out_family.iter()) .copied() .filter(|&b| b != 0) .collect::>(); @@ -1132,9 +1129,8 @@ pub fn osint_soa_bytes(graph: &AiWarGraph, rounds: &[EncounterRound]) -> Vec } let ifaces: std::collections::BTreeSet = r .edges - .in_family + .as_bytes() .iter() - .chain(r.edges.out_family.iter()) .copied() .filter(|&b| b != 0 && b != basin) .collect(); @@ -1410,12 +1406,7 @@ mod tests { // Every adapter byte resolves to a real basin (an interface to a basin). let known: std::collections::HashSet = plan.node_basin.values().copied().collect(); for row in &rows { - for &b in row - .edges - .in_family - .iter() - .chain(row.edges.out_family.iter()) - { + for &b in row.edges.as_bytes().iter() { if b != 0 { assert!(known.contains(&b), "adapter {b:02x} must be a real basin"); } @@ -1662,14 +1653,7 @@ mod tests { } eprintln!(); - let nonzero = |r: &NodeRow| { - r.edges - .in_family - .iter() - .chain(r.edges.out_family.iter()) - .filter(|&&b| b != 0) - .count() - }; + let nonzero = |r: &NodeRow| r.edges.as_bytes().iter().filter(|&&b| b != 0).count(); let total_adapters: usize = rows.iter().map(nonzero).sum(); let saturated = rows.iter().filter(|r| nonzero(r) == 16).count(); eprintln!( diff --git a/crates/osint-bake/src/lib.rs b/crates/osint-bake/src/lib.rs index a5f9190eaf..7cea611e27 100644 --- a/crates/osint-bake/src/lib.rs +++ b/crates/osint-bake/src/lib.rs @@ -587,12 +587,10 @@ pub fn osint_node_rows(graph: &AiWarGraph, plan: &BasinPlan) -> Vec { mixins.sort_unstable(); // Fill the 16-byte EdgeBlock as one flat array of mixin adapters. let mut edges = EdgeBlock::default(); + // The 16 bytes are one content-blind facet (no in/out-family + // split); byte k carries mixin k exactly as before. for (k, &b) in mixins.iter().take(16).enumerate() { - if k < edges.in_family.len() { - edges.in_family[k] = b; - } else { - edges.out_family[k - edges.in_family.len()] = b; - } + edges.as_bytes_mut()[k] = b; } // value tenant: byte 0 carries the class-label ORDER (an instance @@ -782,9 +780,8 @@ pub fn osint_soa_bytes(graph: &AiWarGraph, rounds: &[EncounterRound]) -> Vec } let ifaces: std::collections::BTreeSet = r .edges - .in_family + .as_bytes() .iter() - .chain(r.edges.out_family.iter()) .copied() .filter(|&b| b != 0 && b != basin) .collect(); @@ -1010,12 +1007,7 @@ mod tests { // Every adapter byte resolves to a real basin (an interface to a basin). let known: std::collections::HashSet = plan.node_basin.values().copied().collect(); for row in &rows { - for &b in row - .edges - .in_family - .iter() - .chain(row.edges.out_family.iter()) - { + for &b in row.edges.as_bytes().iter() { if b != 0 { assert!(known.contains(&b), "adapter {b:02x} must be a real basin"); } diff --git a/crates/pampa/src/readers/qmd.rs b/crates/pampa/src/readers/qmd.rs index 08ebde1872..df4be08e28 100644 --- a/crates/pampa/src/readers/qmd.rs +++ b/crates/pampa/src/readers/qmd.rs @@ -51,7 +51,7 @@ pub fn read( input_bytes: &[u8], _loose: bool, filename: &str, - mut output_stream: &mut T, + output_stream: &mut T, prune_errors: bool, parent_source_info: Option, ) -> Result< @@ -163,12 +163,12 @@ pub fn read( // the log_observer.had_errors() check above already catches parse errors // and produces better formatted diagnostics via produce_diagnostic_messages. // The old parse_is_good check was causing duplicate error messages. - print_whole_tree(&mut tree.walk(), &mut output_stream); + print_whole_tree(&mut tree.walk(), &mut *output_stream); // Create diagnostic collector and convert to Pandoc AST let mut error_collector = DiagnosticCollector::new(); let mut result = match pandoc::treesitter_to_pandoc( - &mut output_stream, + &mut *output_stream, &tree, input_bytes, &context, diff --git a/crates/quarto-publish/src/lib.rs b/crates/quarto-publish/src/lib.rs index aeed0df350..5cbe107afd 100644 --- a/crates/quarto-publish/src/lib.rs +++ b/crates/quarto-publish/src/lib.rs @@ -7,6 +7,11 @@ //! See `claude-notes/plans/2026-05-03-publish-command-and-gh-pages.md` //! for the design. +// #[async_trait] adds #[must_use] to methods returning boxed futures, which +// are already must_use (clippy 1.99 `double_must_use`). This crate does not +// inherit [workspace.lints], so the workspace allow does not reach it. +#![allow(clippy::double_must_use)] + pub mod cli; pub mod common; pub mod config; From 1e422e0a81c29eff395fb0c12eb77ddbaaecd8e3 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 10 Oct 2026 13:40:02 +0000 Subject: [PATCH 4/4] quarto-publish: enable url's serde feature quarto-publish serializes url::Url but declared `url = "2.5"` without the serde feature. It only compiled inside the full workspace, where another crate turns url/serde on; `cargo test -p quarto-publish` failed with five E0277 (Url: Serialize/Deserialize). Now builds standalone; 101/101 tests pass. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017YPZhKpSxN7eSxk7VH2vzB --- crates/quarto-publish/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/quarto-publish/Cargo.toml b/crates/quarto-publish/Cargo.toml index e1382729f8..f0537874c1 100644 --- a/crates/quarto-publish/Cargo.toml +++ b/crates/quarto-publish/Cargo.toml @@ -20,7 +20,7 @@ serde_json.workspace = true serde_yaml.workspace = true thiserror.workspace = true tracing.workspace = true -url = "2.5" +url = { version = "2.5", features = ["serde"] } ureq = { version = "3", default-features = false, features = ["rustls"] } uuid.workspace = true