From 9d5291e3995fe9f845fa126bd3ba46b2a2018bac Mon Sep 17 00:00:00 2001 From: Eric Moore Date: Tue, 8 Sep 2026 17:28:39 -0500 Subject: [PATCH] =?UTF-8?q?0.3.70:=20adopt=20ciris-server=20v0.5.204=20?= =?UTF-8?q?=E2=80=94=20the=20substrate=20fix=20for=20the=20scans=20we=20me?= =?UTF-8?q?asured?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit persist v42.0.0 → v42.1.0, edge v21.0.0 → v21.1.0. Two of the changes in it are the upstream answers to what this repo has been measuring for a week: **#572 — dimension reads are index-served.** V137 indexes V106's generated `dimension` column, so a prefix filter compiles to a RANGE on it instead of `json_extract(attestation_envelope, '$.dimension') LIKE ?` evaluated per row. That is the full-table scan behind the roster rebuild (moved to `list_scores` in 0.3.61 to dodge it) and behind every config read. **#570 — the config snapshot cache is one slot per engine, invalidated per engine.** That is CIRISServer#557: `get_config` called `live_config_rows` per key with no cache, so `Config::resolve` cost ~50 scans of everything this node had ever authored, and got worse with every observation emitted. Our `Snapshot` batching (0.3.68) stays. It is no longer load-bearing against an uncached substrate, but one fetch per resolve is still one fetch, it is correct either way, and it keeps the consumer honest if the cache is ever invalidated more eagerly than expected. Belt and braces, not a workaround left behind. What this predicts, so it can be checked rather than assumed: steady-state `pread64` should fall well below the 6,700/s measured on 0.3.68 at 20 minutes uptime (down from 13,400/s on 0.3.66), and the twice-a-minute CPU bursts should shrink again. What it does NOT predict is any change to `fordblks` — 561MB of free list against 47.7MB live survived the config churn being removed, so whatever built it is not these scans. 116 tests, fmt, clippy -D warnings. Co-Authored-By: Claude Opus 5 --- Cargo.lock | 17 +++++++++-------- Cargo.toml | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5440f4f..48d1151 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -907,8 +907,8 @@ dependencies = [ [[package]] name = "ciris-edge" -version = "21.0.0" -source = "git+https://github.com/CIRISAI/CIRISEdge?tag=v21.0.0#6174b20533a19558d274df446494fea744d32f2c" +version = "21.1.0" +source = "git+https://github.com/CIRISAI/CIRISEdge?tag=v21.1.0#4dca38d77fdbb3ff15fb08735ab0457a3cba4cdc" dependencies = [ "async-trait", "axum", @@ -997,7 +997,7 @@ dependencies = [ [[package]] name = "ciris-lens-core" version = "1.4.4" -source = "git+https://github.com/CIRISAI/CIRISServer?tag=v0.5.203#80334ba4a22c5452666050ec0602e6c22a7ad35d" +source = "git+https://github.com/CIRISAI/CIRISServer?tag=v0.5.204#23a1466178d413d3a2111ffc8a2c399478959949" dependencies = [ "axum", "base64 0.22.1", @@ -1008,6 +1008,7 @@ dependencies = [ "ciris-persist", "ciris-verify-core", "hex", + "http-body", "serde", "serde_json", "serde_yaml", @@ -1022,8 +1023,8 @@ dependencies = [ [[package]] name = "ciris-persist" -version = "42.0.0" -source = "git+https://github.com/CIRISAI/CIRISPersist?tag=v42.0.0#13aa6347f15085cd8253a6265a3e873202650126" +version = "42.1.0" +source = "git+https://github.com/CIRISAI/CIRISPersist?tag=v42.1.0#00bc08e52a114c1099cb083af9d043ebfa73800f" dependencies = [ "anyhow", "async-trait", @@ -1067,8 +1068,8 @@ dependencies = [ [[package]] name = "ciris-server" -version = "0.5.203" -source = "git+https://github.com/CIRISAI/CIRISServer?tag=v0.5.203#80334ba4a22c5452666050ec0602e6c22a7ad35d" +version = "0.5.204" +source = "git+https://github.com/CIRISAI/CIRISServer?tag=v0.5.204#23a1466178d413d3a2111ffc8a2c399478959949" dependencies = [ "anyhow", "async-trait", @@ -1111,7 +1112,7 @@ dependencies = [ [[package]] name = "ciris-status" -version = "0.3.69" +version = "0.3.70" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index d5d2e64..0dfb153 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ciris-status" -version = "0.3.69" +version = "0.3.70" edition = "2021" description = "The ciris.ai public health/status surface — now a ciris-server fabric node + a StatusAdapter (mirrors CIRISAgent's adapter model). Serves /health, /v1/status, /api/v1/status, /api/v1/status/history + the public scoring roster (Flow A, own corpus) + live SSE/WS, by live outbound probes + a SQLite uptime history. The federation node (engine, edge, consent:replication, read API, ownership, safety, NAT-traversal) is ciris-server's serve; the status page is the adapter." license = "AGPL-3.0-or-later" @@ -233,7 +233,7 @@ libc = "0.2" # that path runs here — the pin moves so the two nodes on the canonical host # run one server build. Substrate unchanged: persist v42.0.0 / edge v21.0.0 / # verify v15.0.0 / leviculum v0.25.0+ciris.1. -ciris-server = { git = "https://github.com/CIRISAI/CIRISServer", tag = "v0.5.203" } +ciris-server = { git = "https://github.com/CIRISAI/CIRISServer", tag = "v0.5.204" } # NO ciris-persist PIN. persist arrives through ciris-server's `pub use # ciris_persist` re-export, so this crate cannot resolve a different persist