diff --git a/Directory.Packages.props b/Directory.Packages.props
index ad70ee41..94967e37 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -2,7 +2,7 @@
true
true
- 2.0.0.1
+ 2.0.0.2
diff --git a/Examples/CQRS/OrderManagement.CqrsDemo/OrderManagement.CqrsDemo.csproj b/Examples/CQRS/OrderManagement.CqrsDemo/OrderManagement.CqrsDemo.csproj
index 8256d89a..57bfb09d 100644
--- a/Examples/CQRS/OrderManagement.CqrsDemo/OrderManagement.CqrsDemo.csproj
+++ b/Examples/CQRS/OrderManagement.CqrsDemo/OrderManagement.CqrsDemo.csproj
@@ -6,7 +6,7 @@
14.0
enable
enable
- 2.0.0.1
+ 2.0.0.2
false
true
false
diff --git a/Examples/EventSourcing/OrderManagement.PersistentDemo/OrderManagement.PersistentDemo.csproj b/Examples/EventSourcing/OrderManagement.PersistentDemo/OrderManagement.PersistentDemo.csproj
index c8583dbf..4f8b001f 100644
--- a/Examples/EventSourcing/OrderManagement.PersistentDemo/OrderManagement.PersistentDemo.csproj
+++ b/Examples/EventSourcing/OrderManagement.PersistentDemo/OrderManagement.PersistentDemo.csproj
@@ -6,7 +6,7 @@
14.0
enable
enable
- 2.0.0.1
+ 2.0.0.2
false
true
false
diff --git a/Examples/EventSourcing/OrderManagement/OrderManagement.csproj b/Examples/EventSourcing/OrderManagement/OrderManagement.csproj
index b26c5416..56773732 100644
--- a/Examples/EventSourcing/OrderManagement/OrderManagement.csproj
+++ b/Examples/EventSourcing/OrderManagement/OrderManagement.csproj
@@ -6,7 +6,7 @@
14.0
enable
enable
- 2.0.0.1
+ 2.0.0.2
false
true
false
diff --git a/Examples/FluentMigrator/SharpCoreDB.FluentMigratorDemo/SharpCoreDB.FluentMigratorDemo.csproj b/Examples/FluentMigrator/SharpCoreDB.FluentMigratorDemo/SharpCoreDB.FluentMigratorDemo.csproj
index 876ef5eb..7550ca69 100644
--- a/Examples/FluentMigrator/SharpCoreDB.FluentMigratorDemo/SharpCoreDB.FluentMigratorDemo.csproj
+++ b/Examples/FluentMigrator/SharpCoreDB.FluentMigratorDemo/SharpCoreDB.FluentMigratorDemo.csproj
@@ -6,7 +6,7 @@
14.0
enable
enable
- 2.0.0.1
+ 2.0.0.2
false
true
diff --git a/docs/2.0.0.2_WHAT_CHANGED.md b/docs/2.0.0.2_WHAT_CHANGED.md
new file mode 100644
index 00000000..b9b9fdd3
--- /dev/null
+++ b/docs/2.0.0.2_WHAT_CHANGED.md
@@ -0,0 +1,72 @@
+# SharpCoreDB 2.0.0.2 — What changed & the 2.x engine vs the 1.9.x line
+
+- **Release:** `2.0.0.2` (2026-09-04) — 4-part patch release on the 2.0.0.x line.
+- **Quality gate:** full suite **1770 tests / 0 failed**, CI green on Windows/Ubuntu/macOS +
+ CodeQL + SonarCloud + Server Compatibility Smoke for every merged PR.
+- **Contents:** everything merged since 2.0.0.1 — the perf/hardening batch of PRs #376-#388 —
+ plus the consolidated 2.x-vs-1.9.x overview below.
+- See `docs/CHANGELOG.md` → `[2.0.0.2]` for the detailed change list and
+ `docs/2.0.0.0_WHAT_CHANGED.md` for the full 2.0.0.0 report (this document is the short,
+ forward-looking summary).
+
+## The major steps: 2.x engine vs the 1.9.x engine
+
+### 1. Storage & on-disk format (directory + single-file)
+| Step | 1.9.x | 2.x |
+|---|---|---|
+| Record layout | variable-length length-prefixed rows only | **Fixed-width record layout** (constant stride + out-of-line `.ovf` overflow arena) for columnar PK tables; **default for new PK tables** since B7; per-table flag **persisted in metadata** (authoritative on reopen) with **1.x → 2.0 auto-migration** (opt-in via `FixedWidthRecordLayout`) |
+| DELETE durability | logical delete + full-file rewrite at flush | **Commit-time tombstone markers** (in-place negative length-prefix) → durable in O(delete), no full-file rewrite |
+| In-place writes | only same-length patches, buffered later | **Buffered in-place overwrites flushed per storage page** (C6); markers also batched per page (C5) |
+| Single-file (`.scdb`) | fixed-layout registry, compression bugs | **Format v2** (block registry/FSM/table directory), crash-safe auto-migration, block-level Brotli/GZip/Zstd, envelope encryption, concurrent-write corruption fix (2.0.0.1) |
+
+### 2. Performance engine (the “performance-first” rewrite)
+- **Single-pass contiguous UPDATE/DELETE (B8/B9):** strictly ascending `pk = literal` batches on
+ plaintext fixed-width PK tables are resolved and applied as ONE contiguous range — and since M3
+ the probe verifies the span by decoding each record’s PK slot instead of doing ~10K B-tree
+ searches per batch; PK entries are removed with one descending `DeleteBulk`.
+- **Whole-file DML resolution & key-only decode (B1/W1):** batch UPDATE/DELETE resolve all targets
+ from a single in-memory snapshot decoding only PK/hash columns (no per-row preads).
+- **Legacy variable-length fast path (#380):** strictly-ascending INTEGER-PK batches resolve with a
+ sequential decode pass + early exit (unordered files fall back safely).
+- **Index maintenance:** PK deletes via `IIndex.DeleteBulk` (descending); duplicate-key hash removal
+ no longer quadratic (P5).
+- **Batch INSERT (WP14, 2.0.0.1):** column-ordered `object[]` inserts — no per-row dictionaries.
+- **Structured canonical batch parsing (B3/B9)** and, from 2.0.0.1, in-place field patches (WP11).
+
+### 3. Measurement discipline
+- Fair-PK harness reports **median of 3 per phase** (D1) and gained a **same-window interleaved
+ A/B mode** (`--pk-ab`) so config comparisons are attributable; a **pure-default-config arm**
+ (`--pk-default`) exists to guard the out-of-the-box story.
+
+### 4. Reliability, compatibility & hardening
+- **1.x reads, 2.x writes forward-compat guarantee documented**, including the **downgrade policy**
+ (files with commit-time tombstone markers are not readable by pre-marker binaries) and the
+ recommended read-only-first upgrade order — see `docs/manual/upgrade-and-downgrade.md`.
+- **Default engine selection hardened:** `StorageEngineType.Auto` never silently lands on
+ PageBased (not yet OLTP-ready: ~26K UPDATE ops/s vs ~245K on the fixed-width Columnar path);
+ PageBased remains explicit opt-in.
+- 4-part patch versioning (`n.n.n.n`) since 2.0.0.0.
+
+## Benchmark snapshot (fair-PK, tuned harness config, median-of-3, same machine)
+
+| | SharpCoreDB (Columnar fixed-width) | SQLite | gap |
+|---|---:|---:|---:|
+| UPDATE | ~163-245K ops/s | ~270-315K | ~0.8-1.7x of SQLite (layout/run dependent) |
+| DELETE | ~106-172K ops/s | ~353-420K | ~2.1-3.5x |
+| INSERT | ~125-152K ops/s | ~186-190K | competitive |
+| READ | ~72-110K ops/s | ~95-107K | competitive |
+
+**Honest caveats for this release:**
+- The **default config** (`NoEncryptMode=false`) runs ~1.3-1.6x slower than `NoEncryptMode=true`
+ on ALL phases: `Storage` keeps two encryption layers and the default still pays AES work in the
+ file-level read/page-cache wrappers even though per-record at-rest encryption
+ (`EnableAtRestRecordEncryption`) is off. Root cause quantified with same-window A/B (P3d) and
+ tracked as the next optimization; **FullSync was ruled out** as a cause.
+- These numbers are synthetic ascending-PK batches; other shapes fall back to correct but slower
+ generic paths.
+
+## Upgrade & downgrade
+
+Follow `docs/manual/upgrade-and-downgrade.md`: back up → read-only open → read-write open →
+verify. **Downgrading below the marker-introducing 2.x release is not supported** for databases
+that already contain commit-time tombstone markers.
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index bf607264..f275e223 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+
+## [2.0.0.2] - 2026-09-04
+
+> Full release notes incl. the 2.x-vs-1.9.x major steps: [`docs/2.0.0.2_WHAT_CHANGED.md`](2.0.0.2_WHAT_CHANGED.md).
+
### Hardening
- **NoEncryptMode root cause quantified + explained (P3d)** - definitive 3-rep same-window `--pk-ab`
diff --git a/docs/INDEX.md b/docs/INDEX.md
index eb914d3a..bcada197 100644
--- a/docs/INDEX.md
+++ b/docs/INDEX.md
@@ -145,6 +145,11 @@ guide explaining when SharpCoreDB is fastest.
## 10. Benchmarks & Performance
+- `2.0.0.2_WHAT_CHANGED.md` — ⭐ **release notes (2.0.0.2)**: the 2.x-vs-1.9.x major steps + the
+ 2.0.0.2 hardening/perf batch
+- `CHANGELOG.md` — full per-version change log (`[2.0.0.2]`, new `[Unreleased]` on top)
+- `manual/upgrade-and-downgrade.md` — compatibility matrix & downgrade policy
+- `benchmarks/default-config-pk.md` — default-config fair-PK benchmark + NoEncryptMode root cause
- `manual/performance.md` — ⭐ **Performance Guide**: when SharpCoreDB is fastest + v2.0 results
- `performance/V2_PERFORMANCE_PLAN.md` — v2.x performance roadmap, root-cause analysis, .NET 11 plan
- `benchmarks/SHARPCOREDB_COMPARATIVE_BENCHMARKS.md` — comparative report vs SQLite/LiteDB/BLite
diff --git a/docs/manual/upgrade-and-downgrade.md b/docs/manual/upgrade-and-downgrade.md
index f3568ea8..13daa28d 100644
--- a/docs/manual/upgrade-and-downgrade.md
+++ b/docs/manual/upgrade-and-downgrade.md
@@ -37,7 +37,10 @@ Recommended upgrade order:
- Planned (CI): a true **cross-version** job that writes a database with a pinned older commit and
reads it with `master` (requires an old-binary generator; tracked as follow-up).
-## Changelog
+## Changelog & release notes
-See `docs/CHANGELOG.md` → `[Unreleased]` → **Hardening** for the marker/downgrade notes that
-accompanied the tombstone work (PRs #367/#368) and this policy document.
+- `docs/CHANGELOG.md` → `[2.0.0.2]` → **Hardening** for the marker/downgrade notes that accompanied
+ the tombstone work (PRs #367/#368) and the 2.0.0.2 hardening batch.
+- `docs/2.0.0.2_WHAT_CHANGED.md` — full release notes incl. the consolidated
+ **2.x-vs-1.9.x major steps** table.
+- `docs/2.0.0.0_WHAT_CHANGED.md` — the original 2.0.0.0 report.
diff --git a/src/SharpCoreDB.Analytics/SharpCoreDB.Analytics.csproj b/src/SharpCoreDB.Analytics/SharpCoreDB.Analytics.csproj
index 409cb2c3..0e2bb65e 100644
--- a/src/SharpCoreDB.Analytics/SharpCoreDB.Analytics.csproj
+++ b/src/SharpCoreDB.Analytics/SharpCoreDB.Analytics.csproj
@@ -4,7 +4,7 @@
net10.0
enable
enable
- 2.0.0.1
+ 2.0.0.2
SharpCoreDB.Analytics
diff --git a/src/SharpCoreDB.CQRS/SharpCoreDB.CQRS.csproj b/src/SharpCoreDB.CQRS/SharpCoreDB.CQRS.csproj
index d16569e0..a922c92f 100644
--- a/src/SharpCoreDB.CQRS/SharpCoreDB.CQRS.csproj
+++ b/src/SharpCoreDB.CQRS/SharpCoreDB.CQRS.csproj
@@ -11,7 +11,7 @@
$(NoWarn);1591;SA1101;SA1633;SA1309
SharpCoreDB.CQRS
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.CQRS
diff --git a/src/SharpCoreDB.Client.Protocol/SharpCoreDB.Client.Protocol.csproj b/src/SharpCoreDB.Client.Protocol/SharpCoreDB.Client.Protocol.csproj
index f2ef99e0..e1deb1c2 100644
--- a/src/SharpCoreDB.Client.Protocol/SharpCoreDB.Client.Protocol.csproj
+++ b/src/SharpCoreDB.Client.Protocol/SharpCoreDB.Client.Protocol.csproj
@@ -9,7 +9,7 @@
SharpCoreDB.Client.Protocol
- 2.0.0.1
+ 2.0.0.2
Client-side protocol implementation for SharpCoreDB (gRPC, binary)
diff --git a/src/SharpCoreDB.Client/SharpCoreDB.Client.csproj b/src/SharpCoreDB.Client/SharpCoreDB.Client.csproj
index 03d52bdc..dfd72ffb 100644
--- a/src/SharpCoreDB.Client/SharpCoreDB.Client.csproj
+++ b/src/SharpCoreDB.Client/SharpCoreDB.Client.csproj
@@ -9,7 +9,7 @@
SharpCoreDB.Client
- 2.0.0.1
+ 2.0.0.2
.NET client library for SharpCoreDB network server (ADO.NET-like API)
diff --git a/src/SharpCoreDB.Data.Provider/SharpCoreDB.Data.Provider.csproj b/src/SharpCoreDB.Data.Provider/SharpCoreDB.Data.Provider.csproj
index 5e5814db..827e8482 100644
--- a/src/SharpCoreDB.Data.Provider/SharpCoreDB.Data.Provider.csproj
+++ b/src/SharpCoreDB.Data.Provider/SharpCoreDB.Data.Provider.csproj
@@ -16,7 +16,7 @@
https://github.com/MPCoreDeveloper/SharpCoreDB
https://github.com/MPCoreDeveloper/SharpCoreDB
ado.net;database;data-provider;sharpcoredb
- 2.0.0.1
+ 2.0.0.2
git
NuGet.README.md
SharpCoreDB.jpg
diff --git a/src/SharpCoreDB.Distributed/SharpCoreDB.Distributed.csproj b/src/SharpCoreDB.Distributed/SharpCoreDB.Distributed.csproj
index bc7d590d..b12a226e 100644
--- a/src/SharpCoreDB.Distributed/SharpCoreDB.Distributed.csproj
+++ b/src/SharpCoreDB.Distributed/SharpCoreDB.Distributed.csproj
@@ -15,7 +15,7 @@
SharpCoreDB.Distributed
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Distributed
diff --git a/src/SharpCoreDB.EntityFrameworkCore/SharpCoreDB.EntityFrameworkCore.csproj b/src/SharpCoreDB.EntityFrameworkCore/SharpCoreDB.EntityFrameworkCore.csproj
index eac2c915..e1be9bf5 100644
--- a/src/SharpCoreDB.EntityFrameworkCore/SharpCoreDB.EntityFrameworkCore.csproj
+++ b/src/SharpCoreDB.EntityFrameworkCore/SharpCoreDB.EntityFrameworkCore.csproj
@@ -8,7 +8,7 @@
SharpCoreDB.EntityFrameworkCore
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.EntityFrameworkCore
diff --git a/src/SharpCoreDB.EventSourcing/SharpCoreDB.EventSourcing.csproj b/src/SharpCoreDB.EventSourcing/SharpCoreDB.EventSourcing.csproj
index 7e528ea2..e5e12a66 100644
--- a/src/SharpCoreDB.EventSourcing/SharpCoreDB.EventSourcing.csproj
+++ b/src/SharpCoreDB.EventSourcing/SharpCoreDB.EventSourcing.csproj
@@ -11,7 +11,7 @@
$(NoWarn);1591;SA1101;SA1633;SA1309
SharpCoreDB.EventSourcing
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.EventSourcing
diff --git a/src/SharpCoreDB.Extensions/SharpCoreDB.Extensions.csproj b/src/SharpCoreDB.Extensions/SharpCoreDB.Extensions.csproj
index bf211749..9c274b9f 100644
--- a/src/SharpCoreDB.Extensions/SharpCoreDB.Extensions.csproj
+++ b/src/SharpCoreDB.Extensions/SharpCoreDB.Extensions.csproj
@@ -8,7 +8,7 @@
SharpCoreDB.Extensions
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Extensions
diff --git a/src/SharpCoreDB.Functional.Dapper/SharpCoreDB.Functional.Dapper.csproj b/src/SharpCoreDB.Functional.Dapper/SharpCoreDB.Functional.Dapper.csproj
index 9842d745..424efe5e 100644
--- a/src/SharpCoreDB.Functional.Dapper/SharpCoreDB.Functional.Dapper.csproj
+++ b/src/SharpCoreDB.Functional.Dapper/SharpCoreDB.Functional.Dapper.csproj
@@ -7,7 +7,7 @@
enable
SharpCoreDB.Functional.Dapper
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Functional.Dapper
diff --git a/src/SharpCoreDB.Functional.EntityFrameworkCore/SharpCoreDB.Functional.EntityFrameworkCore.csproj b/src/SharpCoreDB.Functional.EntityFrameworkCore/SharpCoreDB.Functional.EntityFrameworkCore.csproj
index a593b965..db4444c5 100644
--- a/src/SharpCoreDB.Functional.EntityFrameworkCore/SharpCoreDB.Functional.EntityFrameworkCore.csproj
+++ b/src/SharpCoreDB.Functional.EntityFrameworkCore/SharpCoreDB.Functional.EntityFrameworkCore.csproj
@@ -7,7 +7,7 @@
enable
SharpCoreDB.Functional.EntityFrameworkCore
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Functional.EntityFrameworkCore
diff --git a/src/SharpCoreDB.Functional.Linq2DB/SharpCoreDB.Functional.Linq2DB.csproj b/src/SharpCoreDB.Functional.Linq2DB/SharpCoreDB.Functional.Linq2DB.csproj
index 9e92a49a..893962f3 100644
--- a/src/SharpCoreDB.Functional.Linq2DB/SharpCoreDB.Functional.Linq2DB.csproj
+++ b/src/SharpCoreDB.Functional.Linq2DB/SharpCoreDB.Functional.Linq2DB.csproj
@@ -7,7 +7,7 @@
enable
SharpCoreDB.Functional.Linq2DB
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Functional.Linq2DB
diff --git a/src/SharpCoreDB.Functional/SharpCoreDB.Functional.csproj b/src/SharpCoreDB.Functional/SharpCoreDB.Functional.csproj
index 9196a1c2..2e4a369a 100644
--- a/src/SharpCoreDB.Functional/SharpCoreDB.Functional.csproj
+++ b/src/SharpCoreDB.Functional/SharpCoreDB.Functional.csproj
@@ -7,7 +7,7 @@
enable
SharpCoreDB.Functional
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Functional
diff --git a/src/SharpCoreDB.Graph.Advanced/SharpCoreDB.Graph.Advanced.csproj b/src/SharpCoreDB.Graph.Advanced/SharpCoreDB.Graph.Advanced.csproj
index 98eccf86..b2abfa0e 100644
--- a/src/SharpCoreDB.Graph.Advanced/SharpCoreDB.Graph.Advanced.csproj
+++ b/src/SharpCoreDB.Graph.Advanced/SharpCoreDB.Graph.Advanced.csproj
@@ -6,7 +6,7 @@
latest
SharpCoreDB.Graph.Advanced
SharpCoreDB.Graph.Advanced
- 2.0.0.1
+ 2.0.0.2
SharpCoreDB.Graph.Advanced
MPCoreDeveloper
MPCoreDeveloper
diff --git a/src/SharpCoreDB.Graph/SharpCoreDB.Graph.csproj b/src/SharpCoreDB.Graph/SharpCoreDB.Graph.csproj
index 54acd66c..52cb46fc 100644
--- a/src/SharpCoreDB.Graph/SharpCoreDB.Graph.csproj
+++ b/src/SharpCoreDB.Graph/SharpCoreDB.Graph.csproj
@@ -13,7 +13,7 @@
$(NoWarn);1591;SA1101;SA1633;SA1309
SharpCoreDB.Graph
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Graph
diff --git a/src/SharpCoreDB.Identity/SharpCoreDB.Identity.csproj b/src/SharpCoreDB.Identity/SharpCoreDB.Identity.csproj
index ea7b24fb..361ae368 100644
--- a/src/SharpCoreDB.Identity/SharpCoreDB.Identity.csproj
+++ b/src/SharpCoreDB.Identity/SharpCoreDB.Identity.csproj
@@ -8,7 +8,7 @@
true
SharpCoreDB.Identity
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Identity
diff --git a/src/SharpCoreDB.Projections/SharpCoreDB.Projections.csproj b/src/SharpCoreDB.Projections/SharpCoreDB.Projections.csproj
index 3f2ce05a..37448243 100644
--- a/src/SharpCoreDB.Projections/SharpCoreDB.Projections.csproj
+++ b/src/SharpCoreDB.Projections/SharpCoreDB.Projections.csproj
@@ -11,7 +11,7 @@
$(NoWarn);1591;SA1101;SA1633;SA1309
SharpCoreDB.Projections
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Projections
diff --git a/src/SharpCoreDB.Provider.Sync/SharpCoreDB.Provider.Sync.csproj b/src/SharpCoreDB.Provider.Sync/SharpCoreDB.Provider.Sync.csproj
index 405ed39d..20203160 100644
--- a/src/SharpCoreDB.Provider.Sync/SharpCoreDB.Provider.Sync.csproj
+++ b/src/SharpCoreDB.Provider.Sync/SharpCoreDB.Provider.Sync.csproj
@@ -9,7 +9,7 @@
SharpCoreDB.Provider.Sync
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Provider.Sync
diff --git a/src/SharpCoreDB.Provider.YesSql/SharpCoreDB.Provider.YesSql.csproj b/src/SharpCoreDB.Provider.YesSql/SharpCoreDB.Provider.YesSql.csproj
index 65ca0633..2e8059f5 100644
--- a/src/SharpCoreDB.Provider.YesSql/SharpCoreDB.Provider.YesSql.csproj
+++ b/src/SharpCoreDB.Provider.YesSql/SharpCoreDB.Provider.YesSql.csproj
@@ -8,7 +8,7 @@
SharpCoreDB.Provider.YesSql
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Provider.YesSql
diff --git a/src/SharpCoreDB.Serilog.Sinks/SharpCoreDB.Serilog.Sinks.csproj b/src/SharpCoreDB.Serilog.Sinks/SharpCoreDB.Serilog.Sinks.csproj
index b3f79bef..4b2d5aeb 100644
--- a/src/SharpCoreDB.Serilog.Sinks/SharpCoreDB.Serilog.Sinks.csproj
+++ b/src/SharpCoreDB.Serilog.Sinks/SharpCoreDB.Serilog.Sinks.csproj
@@ -7,7 +7,7 @@
SharpCoreDB.Serilog.Sinks
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.Serilog.Sinks
diff --git a/src/SharpCoreDB.Server.Core/SharpCoreDB.Server.Core.csproj b/src/SharpCoreDB.Server.Core/SharpCoreDB.Server.Core.csproj
index 01c268c5..c21d74fb 100644
--- a/src/SharpCoreDB.Server.Core/SharpCoreDB.Server.Core.csproj
+++ b/src/SharpCoreDB.Server.Core/SharpCoreDB.Server.Core.csproj
@@ -9,7 +9,7 @@
SharpCoreDB.Server.Core
- 2.0.0.1
+ 2.0.0.2
Core server infrastructure for SharpCoreDB network server
diff --git a/src/SharpCoreDB.Server.Protocol/SharpCoreDB.Server.Protocol.csproj b/src/SharpCoreDB.Server.Protocol/SharpCoreDB.Server.Protocol.csproj
index 31672cac..b75eb7b2 100644
--- a/src/SharpCoreDB.Server.Protocol/SharpCoreDB.Server.Protocol.csproj
+++ b/src/SharpCoreDB.Server.Protocol/SharpCoreDB.Server.Protocol.csproj
@@ -9,7 +9,7 @@
SharpCoreDB.Server.Protocol
- 2.0.0.1
+ 2.0.0.2
Network protocol definitions for SharpCoreDB server (gRPC, binary, HTTP)
diff --git a/src/SharpCoreDB.Server/SharpCoreDB.Server.csproj b/src/SharpCoreDB.Server/SharpCoreDB.Server.csproj
index 514f453f..6094f2f1 100644
--- a/src/SharpCoreDB.Server/SharpCoreDB.Server.csproj
+++ b/src/SharpCoreDB.Server/SharpCoreDB.Server.csproj
@@ -19,7 +19,7 @@
sharpcoredb-server
SharpCoreDB Network Server
SharpCoreDB network database server with gRPC and HTTP support
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
Copyright (c) 2026 MPCoreDeveloper
diff --git a/src/SharpCoreDB.VectorSearch/SharpCoreDB.VectorSearch.csproj b/src/SharpCoreDB.VectorSearch/SharpCoreDB.VectorSearch.csproj
index 224a57ce..f9bde1b1 100644
--- a/src/SharpCoreDB.VectorSearch/SharpCoreDB.VectorSearch.csproj
+++ b/src/SharpCoreDB.VectorSearch/SharpCoreDB.VectorSearch.csproj
@@ -15,7 +15,7 @@
SharpCoreDB.VectorSearch
- 2.0.0.1
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB.VectorSearch
diff --git a/src/SharpCoreDB/NuGet.README.md b/src/SharpCoreDB/NuGet.README.md
index 50eb9e08..ffa2ce86 100644
--- a/src/SharpCoreDB/NuGet.README.md
+++ b/src/SharpCoreDB/NuGet.README.md
@@ -1,4 +1,4 @@
-# SharpCoreDB v2.0.0.1 — Performance-First Database Engine
+# SharpCoreDB v2.0.0.2 — Performance-First Database Engine
**High-Performance Embedded AND Networked Database for .NET 10**
@@ -10,6 +10,20 @@ SharpCoreDB is a modern, encrypted, file-based database engine with SQL support,
[](https://opensource.org/licenses/MIT)
[](https://sonarcloud.io/dashboard?id=MPCoreDeveloper_SharpCoreDB)
+## What's New in 2.0.0.2
+
+- **Commit & overwrite writes are batched per storage page** — tombstone markers (C5) and buffered
+ in-place UPDATE overwrites (C6) are flushed with one write per touched page instead of one/two
+ pwrites per row; the fixed-width contiguous path (B8/B9) no longer does a B-tree search per key
+ (decode verification instead) and removes PK entries with one `DeleteBulk`.
+- **Legacy (variable-length) ascending-PK batches** resolve with one sequential decode pass +
+ early exit; duplicate-key hash removal is no longer quadratic.
+- **Production hardening** — `StorageEngineType.Auto` never silently selects PageBased (not yet
+ OLTP-ready); upgrade/downgrade policy documented with format-compat regression tests; a
+ pure-default-config benchmark arm (`--pk-default`) and a same-window interleaved A/B mode
+ (`--pk-ab`) now guard the numbers.
+- Full report (incl. the 2.x-vs-1.9.x major steps): `docs/2.0.0.2_WHAT_CHANGED.md`.
+
## What's New in 2.0.0.1
### 🚀 Performance-first engine
@@ -175,16 +189,16 @@ db.Flush(); // Persist to disk
## 📦 Installation
```bash
-dotnet add package SharpCoreDB --version 2.0.0.1
+dotnet add package SharpCoreDB --version 2.0.0.2
```
**Optional companion packages:**
```bash
-dotnet add package SharpCoreDB.Functional --version 2.0.0.1
-dotnet add package SharpCoreDB.Functional.Dapper --version 2.0.0.1
-dotnet add package SharpCoreDB.Functional.EntityFrameworkCore --version 2.0.0.1
-dotnet add package SharpCoreDB.Graph.Advanced --version 2.0.0.1
+dotnet add package SharpCoreDB.Functional --version 2.0.0.2
+dotnet add package SharpCoreDB.Functional.Dapper --version 2.0.0.2
+dotnet add package SharpCoreDB.Functional.EntityFrameworkCore --version 2.0.0.2
+dotnet add package SharpCoreDB.Graph.Advanced --version 2.0.0.2
```
## 🔄 Upgrading from v1.9
@@ -212,7 +226,7 @@ We welcome contributions! Check the repository for contribution guidelines.
---
-**Latest Version:** 2.0.0.1 (September 2026)
+**Latest Version:** 2.0.0.2 (September 2026)
**Target:** .NET 10 / C# 14
**Tests:** 1,700+ (100% passing)
**Status:** ✅ Stable — performance-first v2.0.0 release
diff --git a/src/SharpCoreDB/SharpCoreDB.csproj b/src/SharpCoreDB/SharpCoreDB.csproj
index aaa2d21e..8c801da0 100644
--- a/src/SharpCoreDB/SharpCoreDB.csproj
+++ b/src/SharpCoreDB/SharpCoreDB.csproj
@@ -31,9 +31,9 @@
SharpCoreDB
- 2.0.0.1
- 2.0.0.1
- 2.0.0.1
+ 2.0.0.2
+ 2.0.0.2
+ 2.0.0.2
MPCoreDeveloper
SharpCoreDB
SharpCoreDB
diff --git a/src/SharpCoreDB/build/SharpCoreDB.props b/src/SharpCoreDB/build/SharpCoreDB.props
index f542dc33..0d0cf69b 100644
--- a/src/SharpCoreDB/build/SharpCoreDB.props
+++ b/src/SharpCoreDB/build/SharpCoreDB.props
@@ -2,6 +2,6 @@
- 2.0.0.1
+ 2.0.0.2
diff --git a/tests/SharpCoreDB.Benchmarks/SharpCoreDB.Benchmarks.csproj b/tests/SharpCoreDB.Benchmarks/SharpCoreDB.Benchmarks.csproj
index 9fad0dbb..b525f57f 100644
--- a/tests/SharpCoreDB.Benchmarks/SharpCoreDB.Benchmarks.csproj
+++ b/tests/SharpCoreDB.Benchmarks/SharpCoreDB.Benchmarks.csproj
@@ -33,7 +33,7 @@
Exe
net10.0
- 2.0.0.1
+ 2.0.0.2
14.0
enable
enable
diff --git a/tests/SharpCoreDB.CQRS.Tests/SharpCoreDB.CQRS.Tests.csproj b/tests/SharpCoreDB.CQRS.Tests/SharpCoreDB.CQRS.Tests.csproj
index 416daa99..e57df706 100644
--- a/tests/SharpCoreDB.CQRS.Tests/SharpCoreDB.CQRS.Tests.csproj
+++ b/tests/SharpCoreDB.CQRS.Tests/SharpCoreDB.CQRS.Tests.csproj
@@ -8,7 +8,7 @@
Exe
false
true
- 2.0.0.1
+ 2.0.0.2
diff --git a/tests/SharpCoreDB.EntityFrameworkCore.Tests/SharpCoreDB.EntityFrameworkCore.Tests.csproj b/tests/SharpCoreDB.EntityFrameworkCore.Tests/SharpCoreDB.EntityFrameworkCore.Tests.csproj
index d2d46dd8..f0f488cf 100644
--- a/tests/SharpCoreDB.EntityFrameworkCore.Tests/SharpCoreDB.EntityFrameworkCore.Tests.csproj
+++ b/tests/SharpCoreDB.EntityFrameworkCore.Tests/SharpCoreDB.EntityFrameworkCore.Tests.csproj
@@ -2,7 +2,7 @@
net10.0
- 2.0.0.1
+ 2.0.0.2
14.0
enable
enable
diff --git a/tests/SharpCoreDB.EventSourcing.Tests/SharpCoreDB.EventSourcing.Tests.csproj b/tests/SharpCoreDB.EventSourcing.Tests/SharpCoreDB.EventSourcing.Tests.csproj
index f84fecc6..0123011d 100644
--- a/tests/SharpCoreDB.EventSourcing.Tests/SharpCoreDB.EventSourcing.Tests.csproj
+++ b/tests/SharpCoreDB.EventSourcing.Tests/SharpCoreDB.EventSourcing.Tests.csproj
@@ -8,7 +8,7 @@
Exe
false
true
- 2.0.0.1
+ 2.0.0.2
diff --git a/tests/SharpCoreDB.Identity.Tests/SharpCoreDB.Identity.Tests.csproj b/tests/SharpCoreDB.Identity.Tests/SharpCoreDB.Identity.Tests.csproj
index 7e359490..368e188d 100644
--- a/tests/SharpCoreDB.Identity.Tests/SharpCoreDB.Identity.Tests.csproj
+++ b/tests/SharpCoreDB.Identity.Tests/SharpCoreDB.Identity.Tests.csproj
@@ -2,7 +2,7 @@
net10.0
- 2.0.0.1
+ 2.0.0.2
14.0
enable
enable
diff --git a/tests/SharpCoreDB.Profiling/SharpCoreDB.Profiling.csproj b/tests/SharpCoreDB.Profiling/SharpCoreDB.Profiling.csproj
index 08237264..89c0fadd 100644
--- a/tests/SharpCoreDB.Profiling/SharpCoreDB.Profiling.csproj
+++ b/tests/SharpCoreDB.Profiling/SharpCoreDB.Profiling.csproj
@@ -8,7 +8,7 @@
true
true
true
- 2.0.0.1
+ 2.0.0.2
SharpCoreDB.Profiling
MPCoreDeveloper
SharpCoreDB
diff --git a/tests/SharpCoreDB.Projections.Tests/SharpCoreDB.Projections.Tests.csproj b/tests/SharpCoreDB.Projections.Tests/SharpCoreDB.Projections.Tests.csproj
index 84dd6119..7afda2ef 100644
--- a/tests/SharpCoreDB.Projections.Tests/SharpCoreDB.Projections.Tests.csproj
+++ b/tests/SharpCoreDB.Projections.Tests/SharpCoreDB.Projections.Tests.csproj
@@ -8,7 +8,7 @@
Exe
false
true
- 2.0.0.1
+ 2.0.0.2
diff --git a/tests/SharpCoreDB.Tests/SharpCoreDB.Tests.csproj b/tests/SharpCoreDB.Tests/SharpCoreDB.Tests.csproj
index b9109712..6e375db1 100644
--- a/tests/SharpCoreDB.Tests/SharpCoreDB.Tests.csproj
+++ b/tests/SharpCoreDB.Tests/SharpCoreDB.Tests.csproj
@@ -2,7 +2,7 @@
net10.0
- 2.0.0.1
+ 2.0.0.2
14.0
enable
enable
diff --git a/tests/benchmarks/QuickZvecTest/QuickZvecTest.csproj b/tests/benchmarks/QuickZvecTest/QuickZvecTest.csproj
index d28bdf12..2ed3415e 100644
--- a/tests/benchmarks/QuickZvecTest/QuickZvecTest.csproj
+++ b/tests/benchmarks/QuickZvecTest/QuickZvecTest.csproj
@@ -6,13 +6,13 @@
14.0
enable
enable
- 2.0.0.1
+ 2.0.0.2
false
QuickZvecTest
MPCoreDeveloper
Copyright (c) 2026 MPCoreDeveloper and GitHub Copilot. All rights reserved.
- 2.0.0.1
- 2.0.0.1
+ 2.0.0.2
+ 2.0.0.2
diff --git a/tests/benchmarks/SharpCoreDB.Benchmarks.Comparative/SharpCoreDB.Benchmarks.Comparative.csproj b/tests/benchmarks/SharpCoreDB.Benchmarks.Comparative/SharpCoreDB.Benchmarks.Comparative.csproj
index 7a71b602..ad15f85e 100644
--- a/tests/benchmarks/SharpCoreDB.Benchmarks.Comparative/SharpCoreDB.Benchmarks.Comparative.csproj
+++ b/tests/benchmarks/SharpCoreDB.Benchmarks.Comparative/SharpCoreDB.Benchmarks.Comparative.csproj
@@ -6,7 +6,7 @@
14.0
enable
enable
- 2.0.0.1
+ 2.0.0.2
false
SharpCoreDB.Benchmarks.Comparative
MPCoreDeveloper
diff --git a/tests/benchmarks/SharpCoreDB.Benchmarks/SharpCoreDB.Benchmarks.csproj b/tests/benchmarks/SharpCoreDB.Benchmarks/SharpCoreDB.Benchmarks.csproj
index a65c1233..c7bf3983 100644
--- a/tests/benchmarks/SharpCoreDB.Benchmarks/SharpCoreDB.Benchmarks.csproj
+++ b/tests/benchmarks/SharpCoreDB.Benchmarks/SharpCoreDB.Benchmarks.csproj
@@ -6,14 +6,14 @@
14.0
enable
enable
- 2.0.0.1
+ 2.0.0.2
false
false
SharpCoreDB.Benchmarks
MPCoreDeveloper
Copyright (c) 2026 MPCoreDeveloper and GitHub Copilot. All rights reserved.
- 2.0.0.1
- 2.0.0.1
+ 2.0.0.2
+ 2.0.0.2
diff --git a/tests/benchmarks/SharpCoreDB.CQRS.Benchmarks/SharpCoreDB.CQRS.Benchmarks.csproj b/tests/benchmarks/SharpCoreDB.CQRS.Benchmarks/SharpCoreDB.CQRS.Benchmarks.csproj
index 52fde030..481e4788 100644
--- a/tests/benchmarks/SharpCoreDB.CQRS.Benchmarks/SharpCoreDB.CQRS.Benchmarks.csproj
+++ b/tests/benchmarks/SharpCoreDB.CQRS.Benchmarks/SharpCoreDB.CQRS.Benchmarks.csproj
@@ -9,7 +9,7 @@
false
true
true
- 2.0.0.1
+ 2.0.0.2
SharpCoreDB.CQRS.Benchmarks
MPCoreDeveloper
Copyright (c) 2026 MPCoreDeveloper and GitHub Copilot. All rights reserved.
diff --git a/tools/SharpCoreDB.DebugBenchmark/SharpCoreDB.DebugBenchmark.csproj b/tools/SharpCoreDB.DebugBenchmark/SharpCoreDB.DebugBenchmark.csproj
index d821a4ce..79974e87 100644
--- a/tools/SharpCoreDB.DebugBenchmark/SharpCoreDB.DebugBenchmark.csproj
+++ b/tools/SharpCoreDB.DebugBenchmark/SharpCoreDB.DebugBenchmark.csproj
@@ -7,7 +7,7 @@
enable
14.0
false
- 2.0.0.1
+ 2.0.0.2
SharpCoreDB.DebugBenchmark
MPCoreDeveloper
SharpCoreDB
diff --git a/tools/SharpCoreDB.Demo/SharpCoreDB.Demo.csproj b/tools/SharpCoreDB.Demo/SharpCoreDB.Demo.csproj
index 7aeb8a25..4e84b835 100644
--- a/tools/SharpCoreDB.Demo/SharpCoreDB.Demo.csproj
+++ b/tools/SharpCoreDB.Demo/SharpCoreDB.Demo.csproj
@@ -11,7 +11,7 @@
false
- 2.0.0.1
+ 2.0.0.2
SharpCoreDB.Demo
MPCoreDeveloper
SharpCoreDB