Skip to content

0.3.70: adopt ciris-server v0.5.204 — the substrate fix for the scans we measured - #80

Merged
emooreatx merged 1 commit into
mainfrom
repin/ciris-server-0.5.204
Sep 8, 2026
Merged

0.3.70: adopt ciris-server v0.5.204 — the substrate fix for the scans we measured#80
emooreatx merged 1 commit into
mainfrom
repin/ciris-server-0.5.204

Conversation

@emooreatx

Copy link
Copy Markdown
Contributor

persist v42.0.0 → v42.1.0, edge v21.0.0 → v21.1.0. Two changes in it are the upstream answers to what this repo has spent a week measuring.

#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's the full-table scan behind the roster rebuild (which 0.3.61 dodged by moving to list_scores) and behind every config read.

#570 — per-engine config snapshot cache. That's 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 degraded with every observation emitted, since those rows share the attester key the scan seeks on.

Our batching stays

Snapshot (0.3.68) is no longer load-bearing against an uncached substrate, but one fetch per resolve is still one fetch, it's correct either way, and it keeps this consumer honest if the cache is ever invalidated more eagerly than expected. Belt and braces rather than a workaround left lying around.

What this predicts

Stated 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 (itself down from 13,400/s on 0.3.66)
  • the twice-a-minute CPU bursts (~10s at ~30% of a core) should shrink again

And what it does not predict: any change to fordblks. 561 MB of free list against 47.7 MB live survived the config churn being removed, so whatever built it is not these scans.

116 tests, fmt, clippy -D warnings.

🤖 Generated with Claude Code

… we measured

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 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@emooreatx
emooreatx merged commit 76cc3bf into main Sep 8, 2026
3 checks passed
@emooreatx
emooreatx deleted the repin/ciris-server-0.5.204 branch September 8, 2026 23:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant