test(hotpath): slice coverage tests + CI for sessions/lcm/capture/temporal - #790
Conversation
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
|
…sor/hotpath-slice-coverage-7e30
Performance Comparison
|
…sor/hotpath-slice-coverage-7e30
…sor/hotpath-slice-coverage-7e30
|
Review of record (integration lane, base The feature-on guard-report tests are the valuable part and are accepted as written (subject to every asserted label still existing after
Red checks here are from a stale-base merge commit; re-judged on the merged |
|
Integrated into
Evidence on the integrated head (
Closing: the content is on the target branch under the commits above. |
Squash PR ScriptedAlchemy#790's coverage suites and slice workflow onto the current integration tip. Merges ScriptedAlchemy#790
What this PR is
Hotpath coverage only for the sessions/LCM/capture/temporal-query slice: tests and CI that prove the slice's hotpath instrumentation is real, feature-gated, and off by default. Benches are deliberately deferred to a later PR (they will be daemon-free when they come). No production code is touched.
Crates touched (tests only, one new
tests/hotpath_coverage.rseach)crates/tracedecay-sessionscrates/tracedecay-session-memorycrates/tracedecay-session-runtimecrates/tracedecay-session-temporal-storecrates/tracedecay-lcmcrates/tracedecay-capturecrates/tracedecay-temporal-queryPlus one new workflow:
.github/workflows/hotpath-slice-tests.yml. The existing index-bench workflows (hotpath-profile.yml,hotpath-comment.yml) are untouched.What each crate's
hotpath_coverage.rsprovesdefault/productionfeature arrays never contain hotpath.cfg(not(feature = "hotpath"))): a real workload runs withHOTPATH_OUTPUT_FORMAT/HOTPATH_OUTPUT_PATHset — no report file is written, and no listener answers on 6770/6771.cfg(feature = "hotpath")): aHotpathGuardBuilderguard (JSON report, metrics server off) wraps the same workload, and the report must contain the crate's real measured-site labels — e.g.capture.parse.record,sessions.lcm.scan_base64,sessions.shared.content_storage,usecases.context.session_grant,session_temporal.hydrate.render,temporal.rank, and the asyncdaemon.lcm.execute/daemon.lcm.statusfutures spans through the mounted LCM authority.All workloads are deterministic, daemon-free, and socket-free (session-runtime uses the registered global-db test harness on a tempdir). No new fixtures or dependencies were added; no test-only spans were introduced, so no new labels either.
CI
hotpath-slice-tests.ymlruns on every PR:cargo test -p <7 slice crates> --locked(feature off)cargo test -p <7 slice crates> --features hotpath --locked(feature on)with
HOTPATH_METRICS_SERVER_OFF=1at the job boundary. It is additive and does not replace or modify the index-bench profile lane.Run locally
Explicit confirmations
hotpath/hotpath-alloc/hotpath-cpu/hotpath-mcpremain out ofdefaultand every production feature set — and the new tests now enforce that permanently.#[hotpath::measure](or any other hotpath macro) was added, restamped, rewritten, renamed, or moved. The in-flight measure PRs (HP-sessions, HP-temporal, HP-lcm) are untouched.default-features = false, features = ["threads"]); no version bump, noCargo.toml/Cargo.lockchanges.