docs(soak): close Phase 6 24-h re-run — 9/9 assertions PASS end-to-end#246
Merged
Merged
Conversation
…d (`phase6-20260514-122946/`)
Last remaining v0.6.0 24-h-soak gate closes against a live Windows-host capture. LOG/uffs_soak/phase6-20260514-122946/ ran 2026-05-14 12:29:46Z → 2026-05-15 12:29:46Z on the 7-drive reference box against the post-PR-218 harness fix (shard.ttl=debug → shard.ttl=trace, which makes the catch-all 'below-ttl' TRACE events carrying the bonused warm_ttl_sec field visible to the validator). Validator reported 9 of 9 assertions PASS.
Direct end-to-end evidence for all three Phase 6 contracts:
* Drive C 'min_tier=Warm' floor: 0 to=Parked events on letter=C across 24h; 2 870 'Demote target clamped by per-drive min_tier' debug events (floor was actively applied thousands of times, not coincidentally not-tripped).
* Peer-drive demotion: D/E/F/G/M/S each fired exactly 2 Warm→Parked transitions on the configured warm_ttl_base_secs.
* Adaptive TTL bonus: C.max_warm_ttl=3 786s vs max(peers.warm_ttl_sec)=300s — 12.6× bonus on the high-rate drive, matching the +600·log2(rate) formula in crate::cache::policy::warm_ttl. This was the criterion deferred in §4.5b's 2026-05-11 reference run.
Memory trajectory across the 24h window also validates the tiering machinery doing real work:
WS : 6 746 800 128 → 22 888 448 → 69 238 784 (308× WS trim, 3× post-load re-page)
PM : 8 293 457 920 → 1 791 188 992 → 1 669 558 272 (78 % real release as drives demoted)
VM : 28 172 120 064 → 28 168 974 336 → 28 168 974 336 (flat — no address-space leak)
NPM : 26 736 → 26 328 → 26 328 (flat)
The 78% PM release is materially different from §4.5d ws-trace (where pm_bytes stayed within 3% because the keep-warm worker held all 7 drives Warm). Here the controller actively demoted the 6 peer drives, unloading cold shards from memory — exactly the intended tiering behavior under sustained idle. The end-of-soak synthetic-load window on C re-paged recently-needed shards back into WS without re-allocating PM (PM actually continued to fall slightly), confirming the page-cache vs. private-bytes split is healthy.
No panic/OutOfMemoryError/FATAL log lines across the 24h window.
Docs updated:
* memory-tiering-windows-host-validation.md — new §4.5e closing capture sub-section (per-snapshot memory trajectory, contract assertion table, operational signals). §4.5b's closing paragraph now points forward to §4.5e. §2 criterion 3's cross-reference picks up §4.5e alongside §4.5b.
* memory-tiering-bake-criteria.md §3 — Phase-6 checkbox ticked [x] with status reflecting the 2026-05-15 closure. Body text cross-refs §4.5b (deferral root-cause) and §4.5e (closing capture).
* memory-tiering-readiness-validation-2026-05-05.md — 'remaining items' list restructured: Phase 6 removed (now closed); paper trail subsection added for Phase 6 / Phase 7 / ws-trace gate closures; §6 closure note updated to reflect that only the one-week main bake remains.
* CHANGELOG.md — new 'Verified — Phase 6 24-h Windows-host soak closes end-to-end (2026-05-14/15)' entry under Unreleased, with the gate-status table showing all three v0.6.0 24-h-soak gates green.
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.
Summary
The last remaining v0.6.0 24-h-soak gate now closes against a live Windows-host capture.
LOG/uffs_soak/phase6-20260514-122946/ran for 24 h on the 7-drive reference box (2026-05-14 12:29:46Z → 2026-05-15 12:29:46Z) against the post-PR-218 harness fix (`shard.ttl=debug` → `shard.ttl=trace`). Validator reported 9 of 9 assertions PASS end-to-end.Contract evidence
Memory trajectory
```
00h 23h post-load
Working Set (WS) : 6 746 800 128 → 22 888 448 → 69 238 784 (308× WS trim, 3× post-load re-page)
Private Memory : 8 293 457 920 → 1 791 188 992 → 1 669 558 272 (78 % real release as drives demoted)
Virtual Memory : 28 172 120 064 → 28 168 974 336 → 28 168 974 336 (flat — no address-space leak)
NPM (non-paged) : 26 736 → 26 328 → 26 328 (flat)
```
The 78 % PM release is materially different from §4.5d ws-trace (where pm_bytes stayed within 3 % because the keep-warm worker held all 7 drives Warm). Here the controller actively demoted the 6 peer drives, which unloaded cold shards from memory — exactly the intended tiering behavior. The end-of-soak synthetic-load window on C re-paged recently-needed shards back into WS without re-allocating PM (PM actually continued to fall slightly).
No `panic` / `OutOfMemoryError` / `FATAL` log lines across the 24-h window.
Why the re-run was needed (§4.5b deferral root-cause)
The pre-fix soak (`phase6-20260509-213122/`) was filtered by `RUST_LOG=shard.ttl=debug`, which dropped every `below-ttl` TRACE event — the only event class carrying the bonused `warm_ttl_sec` field during the synthetic-load window (because drive C sits in Warm/Hot with `idle_secs ≈ 0`, so the demote-eval ladder never reaches either DEBUG arm).
PR #218 raised the harness filter to `shard.ttl=trace`. This re-run is the first 24-h soak captured against that fix.
Docs updated
v0.6.0 gate slate
Only the one-week `main` bake remains.
Discipline notes