# Intermediate checkpoint: bulk slack smoke v13 This is an exploratory checkpoint, not the final benchmark set. ## Scope - MSVC baseline profile: Release `/O2`, `/MT`, compiler default ISA (no `/arch:AVX*`). - `compare` suite, `smoke` scale, three repeats. - Six value categories and 58 valid workload/size cells per complete candidate. - Raw timings, per-cell medians, aggregate scores, and environment metadata are stored beside this file. `std::deque` and `std::list` are external comparison baselines only. The adaptive candidate switches exclusively between vector and tiered storage; `std::list` uses O(N) traversal to provide the benchmark's index semantics. ## Change under test Bulk construction of tiered storage now fills each leaf to 7/8 capacity rather than 100%. The remaining 1/8 is deliberate insertion slack. Previously the first random insertion into almost every freshly built leaf forced a split and a directory rebuild, so the benchmark measured an avoidable bulk-layout pathology and the policy learned an artificially large leaf size. ## Current result The hierarchical aggregate score is normalized to the best fixed baseline in each cell; higher is better. | Candidate | Score | |---|---:| | forced tiered, leaf 64 | 0.39608 | | forced tiered, leaf 128 | 0.36662 | | adaptive, deferred reads | 0.34673 | | adaptive, eager non-const reads | 0.32499 | | forced tiered, leaf 256 | 0.31051 | | reserved `std::vector` | 0.29797 | The new layout makes 64--128-element leaves the strongest fixed candidates in this smoke matrix. The deferred adaptive candidate is already ahead of the vector baseline, but it is not final: stationary edit traces still show unnecessary vector/tiered reversals and occasional repeated shape rebuilds. ## Safe continuation point 1. Add explicit read/edit phase hysteresis. 2. Preserve the long-term EWMA across a transition while resetting only new residency evidence; do not relearn from a noisy empty history. 3. Give full leaf rebuilds a separate, longer residency and a larger minimum improvement than directory-only changes. 4. Add regression tests requiring at most one storage switch and at most one leaf rebuild on a stationary 30k-edit trace. 5. Re-run paired `adapt`, then the three-profile quick holdout (scalar, baseline, AVX2). ## Source snapshot hashes The repository had no initial commit at this checkpoint, so `git_head` is empty. These hashes identify the relevant source state: ```text tiered_storage.hpp EF6086BC3C5A348793BF70008092ABD680611478D577ED05187BE2D3391D2390 adaptive_sequence.hpp 060E7BCFC09B15EB2C20E076CE423EA3360B91915FBDB92A8D21303B1067B42F adaptation_policy.hpp 9D0A08AE34121C2AB76B62495E479B6C79C0A1C331DDE3269493DAB13E3E6FE9 benchmark.cpp AA7CA2D0EF5FEAA14BDCD8EAA44449462A8C981535A62F47588798B6D456B893 analyze_results.ps1 3BC214F7C869A99824E94F813FF380B00937DC4BE752FFB20D825F6A51B7866E ``` `adaptive_sequence.hpp` received a configuration-rollback safety fix after the timing run. It does not alter the measured fast path, but the benchmark should be repeated after the pending policy work.