Skip to content

feat(rallocator)!: replace v1 with native v4 and Seismograph state - #797

Open
Ralf Biedert (ralfbiedert) wants to merge 63 commits into
microsoft:mainfrom
ralfbiedert:users/ralfbiedert/rallocator-v4-seismograph-20261003
Open

Ralf Biedert (ralfbiedert) wants to merge 63 commits into
microsoft:mainfrom
ralfbiedert:users/ralfbiedert/rallocator-v4-seismograph-20261003

Conversation

@ralfbiedert

@ralfbiedert Ralf Biedert (ralfbiedert) commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Replace the original rallocator implementation with the snmalloc-derived native v4 allocator, preserving Seismograph allocation/free recording and adding a cooperative view of allocator internals.

The migration is based on the canonical v4 experiment (snmalloc revision 511e91a) and rebased on main after #764. The performables, recorder, and runtime fixes already landed there are retained; this PR does not replay that earlier work.

Allocator and recording

  • Keep the public allocator entry points to Rallocator / rallocator!(). Replace v1 domains, heap APIs, tuning state, and snapshot internals rather than providing compatibility shims.
  • Support Windows and Linux on x64 and ARM64 through the native platform backends.
  • Preserve allocation/free/reallocation events, caller layouts, actor attribution, and stacks through the existing Seismograph event system. Addresses are correlation keys, not globally unique allocation-lifetime IDs. Caller projection pairs retained records chronologically before restoring their original recorder order. A moved recorded realloc emits its free before releasing the old span.
  • Bypass publication entirely when allocation recording is disabled. There is no allocation registry, always-on per-operation observation check, sampler worker, or background clock polling. Persistent owner inventory has lifecycle cost.
OS reservations -> shared global backend -> owner-local ranges
                                             -> small slabs / large ranges
Cross-owner frees -> batched returns -> owning endpoint

Cooperative native state

The replacement seismograph_rallocator source uses schema 3. Every persistent owner endpoint is inventoried, including quiet owners created before recording started. Active owners publish copied summaries after accepted recorded operations and after the native core borrow has ended. Returned owners can be inspected under the existing pool lock.

Summaries cover small-class slabs, large ranges, local range and metadata caches, remote-return state, global cached ranges, and virtual reservations. Collection is bounded to 1,024 owners. Publication walks at most 4,096 nodes per owner; returned-owner inspection shares one 4,096-node walk budget across the capture. Missing, older, busy, unavailable, and partial evidence is explicit; an old contributor is not attributed to a new lease holder.

Publication slots and capture buffers use System, not the installed allocator. Borrowed-owner sizing/encoding does not allocate or deallocate.

Monitor

Replace the former Heap internals view with Native v4, immediately left of Allocations:

  • High-level allocator flow, virtual reservation totals, inventory completeness, and observation coverage.
  • Compact owner rows without ages or explanatory prose.
  • Enter-driven subsystem and small-class drilldowns; Escape/Backspace returns one level.
  • Contextual F1 help for metric meanings and limitations, keyboard/mouse navigation, and wrap-aware scrolling.
  • A selectable memory view distinguishes allocator reservations from the sparse page-map VA reservation. Committed, resident, and swapped totals are Unknown, not inferred zeroes.

The Allocations view remains available for who allocated/freed what, including individual events and stacks. Source/capture errors remain visible rather than being collapsed into missing data.

Native monitor example

The preview below is a monochrome rendering of the actual TestBackend output from a real installed-v4 recording, not synthetic telemetry. It includes a quiet, unobserved owner alongside current and older observations.

Performance evidence

Earlier pre-rebase measurements compared canonical v4 without telemetry to the same telemetry-compiled candidate with recording off/on. These are not measurements of the final rebased PR binary. Windows x86-64, release/fat LTO, 12 balanced fresh-process samples; recording-on samples omitted stacks.

Workload Original v4, ns/item Recording off Recording on Off vs. original
Local 16 B 8.67 8.75 155.45 +0.9%
Local 48 B 8.77 8.70 155.78 -0.8%
Local 96 B 8.70 8.83 154.70 +1.5%
Mixed 33.65 37.18 307.56 +10.5%
Resize 61.42 70.44 1160.46 +14.7%
Remote 7.86 8.27 69.59 +5.2%

The disabled path is not claimed to have zero overhead against an allocator that never contained telemetry. Mixed/reallocation workloads retain event-bridge/code-placement overhead. Measurements used a shared laptop, not an isolated host. Warmup initializes publications; repeated-round traversal and snapshot serialization are outside those timings.

Validation

  • Windows: workspace formatting coverage, strict all-target Clippy, workspace tests/build, and scoped release build.
  • Ubuntu 24.04 WSL: allocator, native source, performables, and runtime suites.
  • Allocator regressions cover payloads, alignment, realloc/OOM, cross-owner returns, owner exit/reuse, quiet owners, and bounded collection.
  • Native source tests cover allocation-free borrowed encoding and explicit missing/partial state.
  • Monitor regressions cover every drilldown, mouse selection, narrow-terminal wrapping, End/PgUp/resize scrolling, capture errors, and stable endpoint selection across refresh.
  • The separately maintained SDK integration passes its observability/runtime/example checks against the rebased allocator revision; SDK changes are not included in this PR.

An initial workspace run hit an allocated-bytes assertion in the existing Seismograph clear-buffer test, followed by mutex-poison cascades. The recorder source is unchanged from main; the isolated test, full Seismograph unit suite, and final default-parallel workspace run subsequently passed.

Boundaries

This is a breaking allocator-internals/API and native-source schema migration. Owner capacities are independent observations, not an atomic heap census or application-live memory. Virtual reservations are not physical residency; incoming queue endpoints do not establish queue depth. New tuning controls and OS residency sampling are out of scope.

…ph state

Add Windows/Linux HALs, allocation event recording, bounded owner observations, and a native allocator structure explorer.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add compact allocator flow and OS reservation views, owner/subsystem/class drilldowns, contextual F1 help, stable owner selection, and wrap-aware keyboard/mouse scrolling while preserving recording behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 6, 2026 08:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The broad unsafe allocator rewrite and platform-specific memory/concurrency implementation require final human review despite substantial regression coverage.

Review effort: Balanced
Findings: None

What changed in this PR

Replaces rallocator v1 with the native v4 owner-return allocator, schema-3 Seismograph state capture, and a Native v4 CLI explorer.

Changes:

  • Reworks allocator internals, platform HALs, recording, and regression coverage.
  • Introduces bounded native-state encoding and event-lifetime projection.
  • Replaces the legacy heap monitor with native owner/backend views.
File Description
README.md Updates rallocator links and description.
docs/​runtime-analysis.md Documents v4 runtime-analysis support.
crates/​seismograph_rallocator/​tests/​events.rs Tests event correlation and address reuse.
crates/​seismograph_rallocator/​tests/​borrowed_allocator.rs Verifies allocation-free borrowed encoding.
crates/​seismograph_rallocator/​src/​wire/​mod.rs Removes the legacy container wire layer.
crates/​seismograph_rallocator/​src/​wire/​io.rs Removes legacy wire I/O.
crates/​seismograph_rallocator/​src/​wire/​format.rs Removes legacy framing definitions.
crates/​seismograph_rallocator/​src/​wire/​container_tests.rs Removes obsolete wire tests.
crates/​seismograph_rallocator/​src/​topology.rs Removes the v1 topology model.
crates/​seismograph_rallocator/​src/​events.rs Adds allocation-event projection.
crates/​seismograph_rallocator/​src/​callers.rs Adds view-local lifetime metadata.
crates/​seismograph_rallocator/​README.md Regenerates schema-3 crate documentation.
crates/​seismograph_rallocator/​examples/​native_snapshot.rs Adds a native-state sample capture.
crates/​seismograph_cli/​tests/​support/​mod.rs Migrates test snapshots to native state.
crates/​seismograph_cli/​tests/​cli.rs Updates schema and rejection tests.
crates/​seismograph_cli/​src/​native_view/​fixture.rs Adds shared native-view fixtures.
crates/​seismograph_cli/​src/​main.rs Registers and documents native views.
crates/​seismograph_cli/​src/​commands/​monitor/​panels.rs Replaces the Heaps tab interaction.
crates/​seismograph_cli/​src/​commands/​monitor/​offline.rs Updates offline schema expectations.
crates/​seismograph_cli/​src/​commands/​monitor/​native_ui/​acceptance.rs Adds native UI acceptance coverage.
crates/​seismograph_cli/​src/​commands/​monitor/​mouse.rs Adds native-view mouse targets.
crates/​seismograph_cli/​src/​commands/​monitor/​mod.rs Registers native monitor components.
crates/​seismograph_cli/​src/​commands/​monitor/​help.rs Adds contextual native help.
crates/​seismograph_cli/​src/​commands/​monitor/​filter_index.rs Preserves native state during filtering.
crates/​seismograph_cli/​src/​allocator_view.rs Adds a private compatibility presentation model.
crates/​seismograph_cli/​src/​allocator_topology.rs Adds private topology fixtures.
crates/​seismograph_cli/​README.md Regenerates CLI documentation.
crates/​seismograph_cli/​Cargo.toml Enables rendered-line metadata.
crates/​rallocator/​tests/​tls_teardown.rs Removes the v1 teardown test.
crates/​rallocator/​tests/​support/​mod.rs Removes v1 statistics helpers.
crates/​rallocator/​tests/​state.rs Adds cooperative-state integration tests.
crates/​rallocator/​tests/​snapshot_source_soundness.rs Removes v1 snapshot-storage coverage.
crates/​rallocator/​tests/​snapshot_mappings.rs Removes v1 mapping-counter coverage.
crates/​rallocator/​tests/​seismograph.rs Removes the v1 source test.
crates/​rallocator/​tests/​runtime_snapshot.rs Removes unrelated v1 integration coverage.
crates/​rallocator/​tests/​performables_telemetry.rs Removes the v1 dependency-graph test.
crates/​rallocator/​tests/​no_global_allocator.rs Removes allocation-hints coverage.
crates/​rallocator/​tests/​multithreaded.rs Retires v1 concurrency tests.
crates/​rallocator/​tests/​medium_transfers.rs Retires v1 medium-transfer tests.
crates/​rallocator/​tests/​medium_fanout_harness.rs Removes the v1 benchmark harness.
crates/​rallocator/​tests/​medium_accounting.rs Removes v1 accounting coverage.
crates/​rallocator/​tests/​macro_configuration.rs Removes configurable-v1 macro tests.
crates/​rallocator/​tests/​loom.rs Removes v1 Loom targets.
crates/​rallocator/​tests/​initialization.rs Removes allocation-hints initialization coverage.
crates/​rallocator/​tests/​global_allocator.rs Retires v1 allocator integration tests.
crates/​rallocator/​src/​telemetry/​remote_counts/​batch_tests.rs Removes v1 remote-counter tests.
crates/​rallocator/​src/​telemetry/​remote_counts.rs Removes v1 remote telemetry.
crates/​rallocator/​src/​telemetry/​mod.rs Removes the v1 telemetry module.
crates/​rallocator/​src/​telemetry/​core/​remote_accounting_tests.rs Removes v1 accounting tests.
crates/​rallocator/​src/​telemetry/​core/​availability_tests.rs Removes v1 availability tests.
crates/​rallocator/​src/​recording.rs Adds the v4 event and snapshot bridge.
crates/​rallocator/​src/​heap/​mod.rs Removes v1 configurable heaps.
crates/​rallocator/​src/​heap/​general.rs Removes v1 general-heap options.
crates/​rallocator/​src/​heap/​bump/​mod.rs Removes the v1 bump module.
crates/​rallocator/​src/​heap/​bump/​api.rs Removes v1 bump options.
crates/​rallocator/​src/​hal/​x86_64/​mod.rs Adds architecture-specific hints.
crates/​rallocator/​src/​hal/​win64/​mod.rs Adds the native Windows HAL.
crates/​rallocator/​src/​hal/​win64.rs Removes the v1 Windows HAL.
crates/​rallocator/​src/​hal/​native.rs Removes the v1 native HAL helpers.
crates/​rallocator/​src/​hal/​miri.rs Removes the unsupported Miri backend.
crates/​rallocator/​src/​hal/​linux/​mod.rs Adds the native Linux HAL.
crates/​rallocator/​src/​hal/​linux/​memory.rs Removes v1 pressure sampling.
crates/​rallocator/​src/​hal/​linux.rs Removes the v1 Linux HAL.
crates/​rallocator/​src/​domain/​mod.rs Removes v1 allocation domains.
crates/​rallocator/​src/​config/​mod.rs Removes compile-time v1 configuration.
crates/​rallocator/​src/​classes.rs Adds native v4 size classes.
crates/​rallocator/​src/​cache_line.rs Removes v1 cache-line wrappers.
crates/​rallocator/​src/​allocator/​realloc.rs Removes v1 reallocation logic.
crates/​rallocator/​examples/​scoped_bump_heap.rs Removes the obsolete bump example.
crates/​rallocator/​examples/​allocation_tracking.rs Migrates the recording example.
crates/​rallocator/​Cargo.toml Replaces v1 features and dependencies.
Cargo.lock Updates the rallocator dependency graph.
.spelling Adds native-v4 terminology.

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

@martintmk martintmk added the human-review-required Human review required before automated approval. label Oct 6, 2026
@martintmk

Copy link
Copy Markdown
Member

Posted by an AI agent

Human review is required for ff638590: the diff removes the public rallocator::config and GlobalRallocator APIs, configured rallocator! forms and supported Cargo features; it also retires the configured-macro/global-allocator integration cases and replaces Seismograph schema 1 with incompatible schema 3. See the allocator API and changed files. A maintainer should explicitly review the breaking contract and test migration; this is not eligible for automated fast-path approval. CI is not fully green, but check state alone is not the reason for this handoff.

Merge current upstream main without rewriting published history. Add baseline AArch64 CPU hints while reusing the 64-bit platform VM and wait backends. Reject unsupported Linux kernel page sizes before reserving memory, sort the manifest, refresh generated READMEs, and explicitly document the native-only Miri boundary. Coverage thresholds and CodeQL alerts remain unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: e40ca22b-ef96-48a4-917b-ac308c1b7844
Copilot AI balanced review requested due to automatic review settings October 6, 2026 10:10
@martintmk

martintmk commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

Review preparation has started for #797 at head 2cdcbab31386ba2636afd134ead04635c197be2d. The submitted review will contain the result.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Cross-thread allocation/free records are projected in recorder-list order, which misclassifies valid pairs as orphaned or live.

Review effort: Balanced
Findings: 1 High severity

Open (1)

Comment thread crates/seismograph_rallocator/src/events.rs Outdated

@martintmk martintmk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Posted by an AI agent

Warning: Incomplete review

I reviewed allocator and native-state public contracts, correctness, tests, performance, naming, telemetry, resilience, and code/documentation consistency. I could not check:

  • Output-only exported API for rallocator and seismograph_rallocator: matching all-features x86_64 Windows cargo-public-api outputs were unavailable under the read-only restriction.

Tests, Miri, and benchmarks were not run; the correctness and performance observations are source-only. No overall verdict is given. The comments below come from the reviewed areas.

Comment thread crates/rallocator/tests/allocator_v4.rs
Comment thread crates/seismograph_cli/tests/render_html.rs
Comment thread crates/rallocator/tests/state.rs
Comment thread crates/seismograph_rallocator/src/events.rs
Comment thread crates/rallocator/src/thread.rs
Comment thread crates/rallocator/src/core.rs
Comment thread crates/seismograph_cli/src/commands/monitor/native_ui.rs Outdated
Comment thread crates/seismograph_cli/src/allocator_view.rs Outdated
Comment thread crates/rallocator/src/lib.rs Outdated
Comment thread README.md Outdated
Regenerate allocator docs after the ARM platform spelling update. Exercise runtime size tables, heap event projections, native defaults, freshness labels, legacy topology reports and allocation/free flows. Keep zero-byte flows finite instead of emitting NaN stroke widths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: e40ca22b-ef96-48a4-917b-ac308c1b7844
Copilot AI balanced review requested due to automatic review settings October 6, 2026 10:35
@ralfbiedert

Copy link
Copy Markdown
Collaborator Author

🤖 Updated without rewriting history: upstream merge/ARM64 support is in c02b70b; follow-up 61c6935 repairs generated README drift, adds regressions, and fixes zero-byte report flows producing NaN SVG widths.

Prior Linux/ARM Linux CI passed all 7,175/7,171 tests; their failures were unchanged 100% coverage gates. Local measured coverage improved to allocator 97.3%, schema 98.2%, CLI 98.8%. Strict workspace lint, targeted all-feature tests, workspace/release builds, formatting, spelling, and README checks passed locally.

Still blocked: coverage deficits and 69 CodeQL invalid-pointer findings requiring complete per-flow triage. No checks were weakened or findings dismissed. Fresh checks are running.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

Cross-thread allocation/free events can be correlated incorrectly because projection assumes thread-blocked container events are globally ordered.

Review effort: Balanced
Findings: 1 High severity

Open (1)
Previously missed (1)

In code that hasn't changed since last review

Low severity Document ARM64 and AArch64 target support

README.md:58

This description omits the newly supported ARM64/AArch64 targets. The crate documents Windows x86-64/ARM64 and Linux x86-64/AArch64 support in crates/rallocator/src/lib.rs:6-7, and the package metadata lists all four docs.rs targets.

@martintmk martintmk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Posted by an AI agent

Warning: Incomplete review

I reviewed public contracts, source correctness, tests, performance, naming, telemetry, resilience, and code/documentation consistency at this head. I could not check:

  • Output-only exported public API of rallocator and seismograph_rallocator: matching base/head cargo-public-api --all-features outputs for Windows x86_64 were unavailable under the read-only constraint.

No overall verdict is given. These are new findings from the reviewed areas; earlier comments are not repeated. Tests, benchmarks, and Miri were not run.

Comment thread crates/seismograph_rallocator/src/codec.rs Outdated
Comment thread crates/seismograph_cli/src/report.rs Outdated
Comment thread crates/seismograph_cli/src/report.rs
@codecov

codecov Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.0%. Comparing base (cb3ef36) to head (09d19bf).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #797      +/-   ##
==========================================
  Coverage   100.0%   100.0%              
==========================================
  Files         798      764      -34     
  Lines      119402    90300   -29102     
==========================================
- Hits       119402    90300   -29102     
Flag Coverage Δ
linux 100.0% <100.0%> (ø)
linux-arm 100.0% <100.0%> (ø)
scheduled ?
windows 99.9% <100.0%> (-0.1%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Add deterministic metadata commit/refill, invalid request, pagemap bounds, remote observation, lease-free lookup, codec inventory and compact UI regressions. Coverage improves without changing production behavior or the 100 percent gates; remaining gaps are still reported by the exact two-configuration check.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: e40ca22b-ef96-48a4-917b-ac308c1b7844
Copilot AI balanced review requested due to automatic review settings October 6, 2026 11:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The root README incorrectly omits the allocator’s supported ARM64/AArch64 targets.

Review effort: Balanced
Findings: 1 High severity

Open (1)
Previously missed (1)

In code that hasn't changed since last review

Low severity Workspace README omits supported ARM targets

README.md:58

This summary omits the supported ARM targets. The crate documents Linux AArch64 and Windows ARM64 support in crates/rallocator/src/lib.rs:6-7, so the workspace README currently understates the allocator's platform support.

@martintmk martintmk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Posted by an AI agent

Warning: Incomplete review

I reviewed public contracts, source correctness, tests, performance, naming, telemetry, resilience, and code/documentation consistency. I could not check:

  • Output-only exported public API of rallocator and seismograph_rallocator: matching exact base/head all-features Windows x86_64 cargo-public-api outputs were unavailable under the read-only restriction.

No overall verdict is given. These are new findings from the reviewed areas; previous findings are not duplicated. Runtime tests, Miri, and benchmarks were not run; the review is source-only.

Comment thread crates/rallocator/src/core.rs Outdated
Comment thread crates/seismograph_cli/src/commands/monitor/native_ui.rs Outdated
Comment thread docs/runtime-analysis.md Outdated
…verage

Add deterministic startup and telemetry storage OOM/retry regressions, independent size-class and real native capture fixtures, and CLI navigation, evidence, serialization, and export failure tests. Preserve unchanged coverage thresholds; remaining allocator and schema invariant paths still fail their gates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: e40ca22b-ef96-48a4-917b-ac308c1b7844
Copilot AI balanced review requested due to automatic review settings October 6, 2026 15:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The extensive unsafe allocator, concurrency, wire-format, and platform migration requires final human review.

Review effort: Balanced
Findings: 1 High severity · 1 Low severity

Open (2)

Comment thread README.md Outdated
Copilot AI balanced review requested due to automatic review settings October 9, 2026 21:58
@ralfbiedert

Copy link
Copy Markdown
Collaborator Author

Published fixes in eab634e: (1) deterministic local/foreign usable-size coverage test for the four Linux ARM uncovered lines; (2) regenerated hosted-Linux mutation harness routing core dumps away from the piped Ubuntu crash handler, restoring the original routing afterward; (3) mutation-only --skip filters for the twelve allocator tests that deliberately launch aborting subprocesses, in all three native cargo-mutants configurations. Ordinary tests, coverage, and runtime-analysis selection are unchanged. Other mutated code may still crash, so the runner-level core-dump protection remains relevant. Validation confirmed exactly 12 tests removed from mutation selection (91 ordinary unit tests versus 79 mutation-selected), all 79 selected tests passing, and an actual cargo-mutants run with a passing baseline, two caught mutations and one unviable mutation. No new production allocator behavior or blanket crate exclusion. Fresh hosted checks are starting; the old Linux x64 runtime job remains running. The ARM mutation runner-loss cause remains unproven until usable logs are available.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

CLI coverage is disabled wholesale, and monitor decoding can misreport incompatible source schemas.

0 open findings

🧠 Review effort: Balanced

Comment thread crates/rallocator/src/core.rs Fixed
Comment thread crates/rallocator/src/core.rs Fixed
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ce582c45-e365-45a2-bc88-6da302a059fd
Copilot AI balanced review requested due to automatic review settings October 9, 2026 22:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The cross-platform unsafe allocator and concurrency rewrite requires final human validation, and stale v1 mutation exclusions also remain.

0 open findings

Previously missed (3)

In code that hasn't changed since last review

Low severity Remove stale mutation exclusions for deleted tuning telemetry

.cargo/​mutants.linux.toml:149

This mutation exclusion targets tuning_telemetry.rs, which this PR removes with the v1 implementation, so it can no longer match a mutant. Remove this stale rule; the adjacent exclusions for the deleted tuning telemetry and medium allocator should be cleaned up at the same time.

Low severity Remove stale mutation exclusions for deleted tuning telemetry

.cargo/​mutants.toml:137

This mutation exclusion targets tuning_telemetry.rs, which this PR removes with the v1 implementation, so it can no longer match a mutant. Remove this stale rule; the adjacent exclusions for the deleted tuning telemetry and medium allocator should be cleaned up at the same time.

Low severity Remove stale mutation exclusions for deleted tuning telemetry

.cargo/​mutants.windows.toml:144

This mutation exclusion targets tuning_telemetry.rs, which this PR removes with the v1 implementation, so it can no longer match a mutant. Remove this stale rule; the adjacent exclusions for the deleted tuning telemetry and medium allocator should be cleaned up at the same time.

🧠 Review effort: Balanced

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ce582c45-e365-45a2-bc88-6da302a059fd
Copilot AI balanced review requested due to automatic review settings October 10, 2026 07:58
@ralfbiedert

Copy link
Copy Markdown
Collaborator Author

Published d080ea4 restoring the four fatal-path tests needed by the mutation gate, while retaining the other eight intentional-abort test skips. The prior Linux x64 and ARM64 jobs each missed the same seven fatal-guard mutations; Windows missed the two shared termination guards. The corrected native mutation configuration now catches all nine selected candidates, including the seven previously missed candidates, with its unmutated baseline passing. No production change, mutant exclusion, or gate reduction. All other checks on the previous head passed, including all four platforms coverage/runtime/MSRV/fast checks and CodeQL. Fresh CI is now queued on this correction; auto-merge remains enabled.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The new CLI functionality is broadly excluded from all coverage measurement despite having substantial testable non-interactive logic.

0 open findings

🧠 Review effort: Balanced

The constant-one global reservation mutant fails existing assertions but stalls other Windows allocator tests. Preserve Linux mutation coverage and exclude only this exact Windows candidate, verified caught in an isolated native run.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ce582c45-e365-45a2-bc88-6da302a059fd
Copilot AI balanced review requested due to automatic review settings October 10, 2026 09:13
@ralfbiedert

Copy link
Copy Markdown
Collaborator Author

Published 18c1805 to address the sole remaining Windows x64 mutation failure on d080ea4: 703 candidates, 628 caught, 74 unviable, zero missed, one timeout.

The exact timed-out candidate replaces global_alloc_reserved with address 1. The uploaded diagnostics show nine existing backend tests fail before other parallel allocator tests stall. A targeted native Windows run of that exact candidate against reserved_refill_failures_do_not_publish_ranges_or_accounting passes baseline and catches the mutant in six seconds.

The change excludes only this exact candidate from .cargo/mutants.windows.toml, with evidence documented in the design overview. Candidate discovery verifies that the zero-return mutation stays enabled on Windows and the constant-one mutation stays enabled in the default and Linux configurations. No production code, assertions, ordinary tests, coverage selection, runtime-analysis selection, or required approval gates changed.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The extensive unsafe allocator, platform VM, concurrency, schema, and monitoring changes require final human review despite strong regression coverage.

0 open findings

🧠 Review effort: Balanced

Inverting the Linux wait predicate spins on immediate EAGAIN replies, bypassing the per-syscall timeout. The exact candidate times out in hosted CI and an isolated native Linux run; retain all other wait candidates and ordinary tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ce582c45-e365-45a2-bc88-6da302a059fd
Copilot AI balanced review requested due to automatic review settings October 10, 2026 10:02
@ralfbiedert

Copy link
Copy Markdown
Collaborator Author

Published 4e5b385 for the newly completed Linux x64 mutation failure on 18c1805: 724 candidates, 649 caught, 74 unviable, zero missed, one timeout.

The exact candidate changes == to != in the Linux futex wait predicate. The changed-word regression then spins on immediate EAGAIN replies; because each syscall returns immediately, the existing per-syscall test timeout cannot bound that loop. Hosted diagnostics show the changed-word and wake-notification tests hang. An isolated native Linux run confirms baseline passes and this exact candidate times out after 15 seconds.

Added only this exact candidate to the existing known-hanging mutation exclusions and documented the evidence. Native candidate discovery retains removal of wait and its other mutations. No production code, ordinary tests, assertions, coverage/runtime-analysis selection, or required approval gates changed.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The crate-wide CLI coverage opt-out also excludes substantial non-interactive behavior from measurement.

0 open findings

🧠 Review effort: Balanced

Exclude both complete crates from mutation testing in default, Linux, and Windows configurations as requested. Preserve ordinary correctness tests, coverage, runtime analysis, and existing mutation safeguards.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ce582c45-e365-45a2-bc88-6da302a059fd
@ralfbiedert

Copy link
Copy Markdown
Collaborator Author

Published 624c811 with the requested complete mutation-testing exclusions: both crates/rallocator/** and crates/seismograph_rallocator/** are excluded in all three configurations (default, Linux, Windows), covering every architecture and every source module in those crates.

Verified actual cargo-mutants discovery on native Windows and Linux: both packages produce ZERO candidates under each of the three configurations. This supersedes the earlier narrow timeout-only exclusions. Existing intentional-abort test filters and known-hanging candidate safeguards remain in place. Ordinary tests, coverage, and runtime-analysis selection are unchanged.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The broad unsafe allocator and platform-backend replacement needs final human review, with coverage and documentation findings still unresolved.

1 open finding

🧠 Review effort: Balanced

Comment thread crates/rallocator/Cargo.toml Outdated
Align the Miri metadata comment with the complete allocator mutation exclusions. No manifest settings or executable code changed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ce582c45-e365-45a2-bc88-6da302a059fd

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

CLI coverage is disabled too broadly, and monitor decoding checks the payload before rejecting unsupported source schemas.

0 open findings

1 resolved since last review

🧠 Review effort: Balanced

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agency-rocket Touched by a rocket skill human-review-required Human review required before automated approval.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants