clone

nostr relays on demand at <name>.bind.ws: claim one with your key, pay in zaps past the free allowance

docs: retained Git bookkeeping explains file usage and the measured storage total is not a per-repository floor

Dami committed 02be180
commit
02be180016c8f7ed4fd05abf9960e3b61a2282d2
parent
13cd5c22732a2c7c45791aee74586587ca489479
author
Dami <dami.etoile@gmail.com>
2 files changed, +45 -0
Mdocs/02-understanding-fuel.md5++++
Mdocs/15-costs-and-margins.md40++++++++++++++++++++++++++++++
M docs/02-understanding-fuel.md +5 -0
M docs/15-costs-and-margins.md +40 -0
@@ -158,6 +158,46 @@ lower CPU cost or a complete request-memory bound. Bulk initial checkpoint
158158 construction avoids writing intermediate receipt-index nodes; it removes159159 no stored data and does not start migration automatically.160160 161+The isolated checkpoint fixture separates physical storage from the objects162+referenced by the current format. Both workloads use one 214-byte Git pack,163+260 transactions and an explicit checkpoint after transaction 128. One keeps164+updating the same ref to the same commit; the other retains 259 new tags.165+These are local measurements with ntig 0.2.1, not production usage or a166+per-repository minimum.167+168+| Retained Git payload | One fixed ref | Growing tags |169+|---|---:|---:|170+| Pack | 214 bytes | 214 bytes |171+| Current root and manifest | 430 bytes | 16,888 bytes |172+| All 260 retry records and current receipt index | 136,165 bytes | 126,982 bytes |173+| Current-format total | 136,809 bytes | 144,084 bytes |174+| Superseded manifests | 42,900 bytes | 1,671,120 bytes |175+| Superseded receipt-index nodes | 332,722 bytes | 332,722 bytes |176+| Physical objects and reserved bytes | 512,431 bytes | 2,147,926 bytes |177+178+The ledger equals the paginated R2 inventory for every key and size in these179+quiet fixtures: there is no reservation slack. Each untouched fixture180+has no Git R2 keys; its first commit uses 631 bytes in three keys. SQLite181+allocation, provider operations and execution are separate quantities.182+The larger growing-tag total comes mainly from retained copies of earlier183+ref maps. Its current manifest is only 16,783 bytes. Fixed-ref transaction184+records are larger because their updates include an old object ID.185+186+All historical retry records remain required by the current retention187+contract. Current-format membership includes every pack in the manifest;188+it does not establish that every object inside those packs is reachable189+from today's refs. Superseded metadata is outside the latest root's190+dependency set, but older readers and in-flight publishers can still need191+it. This inventory supplies no online deletion authority. No collector or192+storage saving is deployed, and these bytes still count toward tenant file193+usage. Coordinated metadata collection is the larger target in this fixture;194+changing receipt retention would change retry semantics.195+196+`npm test -- test/object/grasp-checkpoint.test.ts --reporter=verbose --disableConsoleIntercept`197+reproduces the inventory, current-format traversal, all historical receipt198+lookups and unchanged root checks. The measurements apply to healthy,199+quiescent fixtures; ambiguous writes can still leave reservation slack.200+161201 `graspBusy`, `graspControls` and the job round's `working` flag fence work162202 within a live instance. Async handlers can interleave across awaits. Those163203 flags are admission controls, not persisted crash recovery or authority to