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
181 changes: 143 additions & 38 deletions Cargo.lock

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions crates/cockpit-server/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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]]
Expand Down Expand Up @@ -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"] }


Expand Down
30 changes: 7 additions & 23 deletions crates/cockpit-server/src/osint_gotham.rs
Original file line number Diff line number Diff line change
Expand Up @@ -737,12 +737,10 @@ pub fn osint_node_rows(graph: &AiWarGraph, plan: &BasinPlan) -> Vec<NodeRow> {
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
Expand Down Expand Up @@ -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::<std::collections::BTreeSet<u8>>();
Expand Down Expand Up @@ -1132,9 +1129,8 @@ pub fn osint_soa_bytes(graph: &AiWarGraph, rounds: &[EncounterRound]) -> Vec<u8>
}
let ifaces: std::collections::BTreeSet<u8> = r
.edges
.in_family
.as_bytes()
.iter()
.chain(r.edges.out_family.iter())
.copied()
.filter(|&b| b != 0 && b != basin)
.collect();
Expand Down Expand Up @@ -1410,12 +1406,7 @@ mod tests {
// Every adapter byte resolves to a real basin (an interface to a basin).
let known: std::collections::HashSet<u8> = 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");
}
Expand Down Expand Up @@ -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!(
Expand Down
18 changes: 5 additions & 13 deletions crates/osint-bake/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -587,12 +587,10 @@ pub fn osint_node_rows(graph: &AiWarGraph, plan: &BasinPlan) -> Vec<NodeRow> {
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
Expand Down Expand Up @@ -782,9 +780,8 @@ pub fn osint_soa_bytes(graph: &AiWarGraph, rounds: &[EncounterRound]) -> Vec<u8>
}
let ifaces: std::collections::BTreeSet<u8> = r
.edges
.in_family
.as_bytes()
.iter()
.chain(r.edges.out_family.iter())
.copied()
.filter(|&b| b != 0 && b != basin)
.collect();
Expand Down Expand Up @@ -1010,12 +1007,7 @@ mod tests {
// Every adapter byte resolves to a real basin (an interface to a basin).
let known: std::collections::HashSet<u8> = 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");
}
Expand Down
6 changes: 3 additions & 3 deletions crates/pampa/src/readers/qmd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ pub fn read<T: Write>(
input_bytes: &[u8],
_loose: bool,
filename: &str,
mut output_stream: &mut T,
output_stream: &mut T,
prune_errors: bool,
parent_source_info: Option<quarto_source_map::SourceInfo>,
) -> Result<
Expand Down Expand Up @@ -163,12 +163,12 @@ pub fn read<T: Write>(
// 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,
Expand Down
2 changes: 1 addition & 1 deletion crates/quarto-publish/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
5 changes: 5 additions & 0 deletions crates/quarto-publish/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion crates/stubs/q2-ndarray/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
2 changes: 1 addition & 1 deletion rust-toolchain.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Loading