Exercise long-running clients, reconnects, event subscriptions, downloads, inventory/appearance operations, voice sessions, and shutdown under concurrency.
Deliverables
Add deterministic stress tests plus bounded soak scenarios for task/socket/file/handle/memory leaks.
Audit locks across await/callbacks, channel backpressure, cancellation races, idempotent teardown, and panic isolation.
Capture sanitized resource baselines and regression thresholds.
Validation
Stress/soak runs complete without deadlock or unbounded growth.
Task/socket/subscription counts return to baseline after shutdown.
Race regressions have focused tests.
Prerequisite
All implementation and program milestones are complete with their fixed parity suites green.
Project constraints
The released implementation is entirely native Rust and must pass the explicit no-CLR/no-bridge artifact audit.
Do not weaken API coverage or semantic parity to satisfy hardening, performance, or packaging goals.
Preserve reproducible evidence, update release documentation, and keep all default/live destructive boundaries explicit.
## Objective
Exercise long-running clients, reconnects, event subscriptions, downloads, inventory/appearance operations, voice sessions, and shutdown under concurrency.
## Deliverables
- Add deterministic stress tests plus bounded soak scenarios for task/socket/file/handle/memory leaks.
- Audit locks across await/callbacks, channel backpressure, cancellation races, idempotent teardown, and panic isolation.
- Capture sanitized resource baselines and regression thresholds.
## Validation
- Stress/soak runs complete without deadlock or unbounded growth.
- Task/socket/subscription counts return to baseline after shutdown.
- Race regressions have focused tests.
## Prerequisite
All implementation and program milestones are complete with their fixed parity suites green.
## Project constraints
- The released implementation is entirely native Rust and must pass the explicit no-CLR/no-bridge artifact audit.
- Do not weaken API coverage or semantic parity to satisfy hardening, performance, or packaging goals.
- Preserve reproducible evidence, update release documentation, and keep all default/live destructive boundaries explicit.
hugo
added this to the 12 - Hardening and release milestone 2026-08-08 08:26:26 +00:00
Added the native Rust metacrate-concurrency-audit runner, reviewed thresholds, sanitized 16-cycle evidence, documentation, and an ubuntu-latest Gitea soak workflow.
Every cycle executes concurrent client shutdown, deduplicated and cancelled HTTP downloads, deterministic queue saturation, inventory and appearance work, subscription release, temporary file teardown, repeated UDP reconnects, and real encrypted WebRTC/Opus loopback setup and shutdown.
Fixed the download dispatcher so it acquires its concurrency permit before spawning work; its 256-entry queue now provides real backpressure instead of draining into an unbounded waiting task set.
Removed the client service-registry lock from around shutdown callbacks, isolated appearance and asset subscriber panics, and removed the WebRTC signaling lock from across awaited socket setup with a cancellation-safe single-provision guard.
Added public inventory worker, pending-operation, and disposed diagnostics used by exact teardown assertions.
Verification:
16 cycles x 32 operations completed in 1.099 seconds. Peak resources included 258 queued/active download records, 96 subscriptions, one client task, one inventory worker, one voice task, one signaling task, one file, and two sockets. Every recorded count returned exactly to zero; retained bytes and allocations not freed were both zero.
Related compatibility suites passed: download semantics 3/3, inventory semantics 15/15, appearance semantics 34/34, and the two WebRTC teardown cases. No related test was skipped or ignored.
Strict Rust 1.97 clippy, rustdoc, formatting, dependency-policy audit, and scoped compilation passed. Rust 1.96 MSRV compilation also passed separately as a compatibility claim.
This issue is intentionally deterministic-offline: it does not read .env or contact Second Life/OpenSim. Local injected HTTP, filesystem, UDP, and real WebRTC resources are always exercised; this is not a silent credential-dependent skip. The live OpenSim credential gate remains separate and explicit.
Implemented in commit 3db144d and pushed to main.
Implementation:
- Added the native Rust metacrate-concurrency-audit runner, reviewed thresholds, sanitized 16-cycle evidence, documentation, and an ubuntu-latest Gitea soak workflow.
- Every cycle executes concurrent client shutdown, deduplicated and cancelled HTTP downloads, deterministic queue saturation, inventory and appearance work, subscription release, temporary file teardown, repeated UDP reconnects, and real encrypted WebRTC/Opus loopback setup and shutdown.
- Fixed the download dispatcher so it acquires its concurrency permit before spawning work; its 256-entry queue now provides real backpressure instead of draining into an unbounded waiting task set.
- Removed the client service-registry lock from around shutdown callbacks, isolated appearance and asset subscriber panics, and removed the WebRTC signaling lock from across awaited socket setup with a cancellation-safe single-provision guard.
- Added public inventory worker, pending-operation, and disposed diagnostics used by exact teardown assertions.
Verification:
- 16 cycles x 32 operations completed in 1.099 seconds. Peak resources included 258 queued/active download records, 96 subscriptions, one client task, one inventory worker, one voice task, one signaling task, one file, and two sockets. Every recorded count returned exactly to zero; retained bytes and allocations not freed were both zero.
- Focused race tests passed for re-entrant shutdown, panic isolation, queue backpressure/cancellation drain, concurrent WebRTC provisioning, explicit WebRTC shutdown, and drop-driven shutdown.
- Related compatibility suites passed: download semantics 3/3, inventory semantics 15/15, appearance semantics 34/34, and the two WebRTC teardown cases. No related test was skipped or ignored.
- Strict Rust 1.97 clippy, rustdoc, formatting, dependency-policy audit, and scoped compilation passed. Rust 1.96 MSRV compilation also passed separately as a compatibility claim.
This issue is intentionally deterministic-offline: it does not read .env or contact Second Life/OpenSim. Local injected HTTP, filesystem, UDP, and real WebRTC resources are always exercised; this is not a silent credential-dependent skip. The live OpenSim credential gate remains separate and explicit.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Objective
Exercise long-running clients, reconnects, event subscriptions, downloads, inventory/appearance operations, voice sessions, and shutdown under concurrency.
Deliverables
Validation
Prerequisite
All implementation and program milestones are complete with their fixed parity suites green.
Project constraints
Implemented in commit
3db144dand pushed to main.Implementation:
Verification:
This issue is intentionally deterministic-offline: it does not read .env or contact Second Life/OpenSim. Local injected HTTP, filesystem, UDP, and real WebRTC resources are always exercised; this is not a silent credential-dependent skip. The live OpenSim credential gate remains separate and explicit.