git.lucas.co / cce-designer
graphic design tool
git clone https://git.lucas.co/cce-designer.git

commitfbe5589ad304a65dfe1d134bba1459463b406886
parent04e0029706
authorLucas Galante <lsgalante12@gmail.com>
date2026-10-07 10:29
perf(sim): raise the checkpoint budget to 4 GB a simnet

A 240-frame solve growing to 57k points holds 1.9 GB of checkpoints,
just under the old 2 GB; past the budget a replay begins re-solving.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

 CLAUDE.md       | 9 +++++----
 src/geometry.rs | 5 +++--
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/CLAUDE.md b/CLAUDE.md
index 5b40e6b..66205b2 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -2240,8 +2240,9 @@ need.
   the key and they go with the solve they were frames of; the frame in
   hand does not (the next section).
 - **Within a count and a budget** (`CHECKPOINTS_MAX` 1024,
-  `CHECKPOINT_BUDGET` 2 GB per simnet by an estimate of a state's size;
-  48 and 512 MB until every frame was kept). **The budget is the SUM of
+  `CHECKPOINT_BUDGET` 4 GB per simnet by an estimate of a state's size;
+  48 and 512 MB until every frame was kept, then 2 GB until later on
+  2026-10-07, when the user raised it). **The budget is the SUM of
   what the kept checkpoints hold, each at its own size** (since
   2026-10-07, `Checkpoints::bytes`); it was the budget over the size of
   the checkpoint just kept, which charged every frame of a growing
@@ -2252,8 +2253,8 @@ need.
   counted by size, all 240 are kept at 1.5 GB (1.37 GB resident in a
   shadow session) and the replay runs no step at 34 ms a frame. Each
   checkpoint carries its frame's topology since later the same day (see
-  "A copy of a mesh shares its topology"), which brings the 240 to 1.9 GB:
-  a simulation larger or longer than that one begins to thin.
+  "A copy of a mesh shares its topology"), which brings the 240 to 1.9 GB,
+  close enough to the 2 GB budget then that the user raised it to 4.
   `checkpoints_are_budgeted_by_what_each_holds`. With no
   room the SPACING doubles and stays doubled — what is off the wider
   interval goes, and what arrives after arrives that far apart. Not the
diff --git a/src/geometry.rs b/src/geometry.rs
index b534486..689beb6 100644
--- a/src/geometry.rs
+++ b/src/geometry.rs
@@ -1170,8 +1170,9 @@ pub const CHECKPOINTS_MAX: usize = 1024;
 /// What one simnet's checkpoints may hold, by [`checkpoint_bytes`]. A state
 /// is kept twice over (itself and what its last substep consumed), so a
 /// hundred-thousand-point surface is tens of megabytes a checkpoint; past
-/// the budget the spacing doubles.
-pub const CHECKPOINT_BUDGET: usize = 2048 * 1024 * 1024;
+/// the budget the spacing doubles. 4 GB since 2026-10-07 (2 GB before),
+/// the user's call: a 240-frame solve growing to 57k points holds 1.9 GB.
+pub const CHECKPOINT_BUDGET: usize = 4096 * 1024 * 1024;
 
 /// About what a checkpoint of `state` holds: positions, ids and a handful
 /// of attributes a point, the primitives' indices, twice. An estimate — the