release: v0.8.2 — concurrent id lookups reach production - #201
Merged
Merged
Conversation
VERSION 0.8.1 -> 0.8.2 (plus the two files the toolchains require a literal in), and the Unreleased section becomes the 0.8.2 notes. The content is #200: the id-keyed reads split into 64-id chunks and run them concurrently, so opening a large agent turn goes 14.6 s -> 2.6 s and the services topology graph 7.5 s -> 1.7 s on production data. Production is the only place that change matters and the only place it is not yet running. One number in the notes was tightened on the way in. The draft quoted a 376-call turn at 15.7 s and a 418-call turn at 14.6 s — both true, from different experiments a day apart, but together they read as though one contradicted the other. Replaced with the per-call cost the two agree on. Claude-Session: https://claude.ai/code/session_01GxGWpo3L4BRMkwtoa9X54W
There was a problem hiding this comment.
Summary
Pure release PR: VERSION 0.8.1 → 0.8.2 plus the two toolchain-required literals (server/Cargo.toml, console/package.json), the regenerated Cargo.lock, and the Unreleased section promoted to [0.8.2]. The version mechanics are clean and complete, and the changelog accurately describes what #200 shipped — except for one bodies-lookup figure that cannot be true and contradicts the end-to-end number three lines below it. Recommendation: REQUEST_CHANGES (one-line changelog fix; everything else is correct).
Blocking
- CHANGELOG.md:29 — "the bodies lookup goes 14.1 s → 4.1 s at the default limit of 8" is arithmetically impossible against the sentence that follows it: the same paragraph (line 30) says the end-to-end 418-call turn "opens in 2.6 s instead of 14.6 s", and the preceding paragraph attributes "almost all" of the original 14.6 s to that same bodies lookup. A 4.1 s sub-step cannot sit inside a 2.586 s request. The post-change bodies hop is bounded by ~2.6 s total, so the real figure is nearer 2.1 s; 4.1 s appears to be carried over from PR #200's earlier
ID_CHUNK=64 microbenchmark ("64 measured 4137 ms … on the real bodies hop"), a different experiment than the A/B the same sentence cites. Why it must be fixed before merge:release.yml:324extracts exactly this section into the public GitHub Release notes, and the tag is cut from this commit — the wrong number ships as the release's headline claim, and the internal contradiction is visible to any reader in the same paragraph.
Suggestions
- CHANGELOG.md:40 — "(prompted by this investigation)" plus the raw upstream ticket key
sglog-ystdputs a third-party tracker ID and a note about Heron's own debugging process onto the public Release page. The key already exists onmaininserver/h-storage-aglake/src/spl.rs:271, so this is not a new leak, but the changelog is a new surface for it; consider "upstream has since fixed this" without the parenthetical.
Questions
- CHANGELOG.md:19 states the per-call cost as "about 35 ms per call it contained" and the commit message says this replaced the draft's two conflicting numbers because "the two agree on" it — but they don't quite: 15.7 s / 376 ≈ 41.8 ms while 14.6 s / 418 ≈ 34.9 ms. 35 ms reproduces the 418-call turn (
418 × 35 ms ≈ 14.6 s) but under-predicts the 376-call one by ~2.5 s. Is the 376-call figure from a differently-composed turn, or should the text say "roughly 35–40 ms" / cite only the 418-call turn? - CHANGELOG.md:22 quotes
/api/services/topologyas "6.0–7.5 s" while line 31 gives the after-number as "1.7 s instead of 7.5 s" — is the 1.7 s meant to pair with the 7.5 s end only, or should both ranges match?
Verified
- Version SSOT agreement:
VERSION(odconfirms0.8.2\n, no stray whitespace),server/Cargo.toml:11workspace.package.version,console/package.json:4all read 0.8.2;bump.shcheck_driftwould pass.heron --versionreadsCARGO_PKG_VERSION(server/app/heron/src/main.rs:257), so it will report 0.8.2 and agree with av0.8.2tag atdeploy-prod.sh's version check. Cargo.lockcompleteness: every workspace member (h-api,h-capture,h-common,h-ebpf-common,h-export,h-llm,h-metrics,h-pcap-extract,h-protocol,h-storage,h-storage-aglake,h-storage-clickhouse,h-storage-duckdb,h-turn,heron) is at 0.8.2; remaining0.8.xhits are third-party versions (ahash 0.8.12,axum 0.8.8, …), not workspace drift.- No stale version literals: repo-wide grep for
0.8.1/0.8.0outside.git,Cargo.lockand historicalCHANGELOG.mdentries returns nothing —install.sh,project.yaml,site/,launch/,_agentops/, docs and CI scripts carry no hardcoded version. - Changelog→release wiring: the new
## [0.8.2]section is self-contained (Performance + Fixed) and## [Unreleased]is now empty, sorelease.yml:324's awk (start at^## \[0.8.2\], stop at next^## \[) yields non-empty, correctly-bounded notes. - Leakage: no private IPs, PEM blocks, credential material, internal hostnames or machine paths in the diff.
sglog-ystdis an upstream ticket key, not infra identity (see Suggestions). - Technical claims spot-checked against the code the notes describe:
ID_CHUNK = 64(spl.rs:297, was 512 at979f7a2c^),FANOUT_ID_CHUNK = 512retained for the session fan-out (spl.rs:308), defaultmax_concurrent_searches = 8(config.rs:983), clamp.max(1)on the shared semaphore (client.rs:793),config validatereports the zero case (config.rs:1507), andconcurrency_testsis wired into CI (ci.yml:156). - Console build surface: the
package.jsonbump is version-only andvite.config.ts:7derives__APP_VERSION__from theVERSIONfile, so no cross-platform build behavior changes.
🤖 Reviewed by the review bot • workflow run
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.
Cuts 0.8.2 so the concurrent id lookups from #200 reach production — the only
place that change matters, and the only place it is not yet running.
VERSION0.8.1 → 0.8.2, withserver/Cargo.tomlandconsole/package.jsonre-derived by
just bump patch.Unreleasedsection becomes the 0.8.2 notes, sorelease.yml's extractorfinds a section for the tag (it fails the build when it does not).
No code changes.
What ships
Opening a large agent turn goes 14.6 s → 2.6 s and
/api/services/topology7.5 s → 1.7 s, measured on production data with both binaries against the same
daemon and indexes. The response is byte-identical before and after.
Why this needs its own merge before the tag
release.yml's gate requiresstaging-soakedandebpf-soakedon thetagged commit. This bump is a new commit, so it has to go through
ci → deploy-staging → {staging-soak, ebpf-soak}itself; tagging #200's mergecommit would ship a binary whose
--versionsays 0.8.1, anddeploy-prod.shrefuses to install a binary whose version disagrees with the tag.
One edit beyond the mechanical bump
The draft notes quoted a 376-call turn at 15.7 s and a 418-call turn at 14.6 s.
Both are true — different turns, different experiments a day apart — but side by
side in published release notes they read as though one contradicted the other.
Replaced with the per-call cost the two measurements agree on.
https://claude.ai/code/session_01GxGWpo3L4BRMkwtoa9X54W