You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(architecture): refresh §11/§12 status for the read tier, DeleteBucket abort, and spool eviction
The local-table Locator read tier is wired and validated
(TestForgeReadAfterEviction; #44 for retention-retired catalog blocks),
so the "not wired" bullet inverts: the remaining gap is spool eviction
itself — unbounded today, DeleteObject releases network-side only —
tracked in #48 alongside §5's bounded-cache spec. Record DeleteBucket's
implicit abort of in-flight multipart sessions (and its hilt blob.Abort
gate), point §11's cache-eviction open question at #48, and note the
forge paths are now exercised by the in-repo smelt itest harness.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/architecture.md
+14-7Lines changed: 14 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -579,7 +579,7 @@ The first cut keeps digest-before-upload; `allocate-by-size` is a same-rack fast
579
579
- **`min`/`max` final values** — 8 MiB / 256 MiB are the starting proposals; confirm against the
580
580
base-fee and transaction-count budget.
581
581
- **Lifting the 256 MiB ceiling** (streaming commP) versus the simplicity of coarse splitting.
582
-
- **Local cache vs near-stateless** — cache sizing/eviction, or commit to near-stateless.
582
+
- **Local cache vs near-stateless** — cache sizing/eviction, or commit to near-stateless (#48).
583
583
- **Catalog GC** — `gc_candidates` is a write-only log this iteration; the catalog CARs on Piri grow
584
584
with mutation volume until a collector exists.
585
585
- **Monotonic `nextPieceId` ratchet** under heavy churn (pdp-sim) — possibly periodic dataset
@@ -809,17 +809,21 @@ reference index — and is out of scope for this iteration.
809
809
810
810
### Deferred as forge-mode glue (validated live in smelt, not the in-process harness)
811
811
812
-
The in-memory harness uses a no-op uploader and serves reads from the spool, so these forge-network
813
-
paths are stubbed in-tree and verified against a real sprue+piri+indexer later:
812
+
The in-memory harness uses a no-op uploader and serves reads from the spool; the forge-network
813
+
paths below are exercised against the real stack by the smelt-based `itest/` harness in CI:
814
814
815
815
- **`remove(digest)` and `abort(digest)` are live.** `RemoveBlob` invokes `/blob/remove` on
816
816
sprue, which forwards `/blob/release` to the storage nodes ([§9](#9-the-system-contract-piri--sprue--indexer)); delete finality means claim-release-now,
817
817
bytes-at-root-death. `AbortBlob` retires parked part-blobs via `/blob/abort` — sprue translates
818
818
it into `/blob/reject` on the node (provider recovered from the `cause` receipt chain);
819
819
allocation-expiry GC (FIL-625) remains the backstop when an abort never arrives.
820
-
- **The local-table `Locator` read tier is not wired.** Body-blob *locations* are recorded at accept,
821
-
but the read path that consumes them ([§7.4](#74-read-getobject), [§8](#8-retrieval-addressing-when-bodies-need-a-sharded-dag-index)) is deferred — it is only exercised after spool
822
-
eviction (also not built) and is best validated live.
820
+
- **The local-table `Locator` read tier is wired and validated.** Body blobs re-resolve after
821
+
spool loss from `blob_locations` + `/content/retrieve` (`TestForgeReadAfterEviction`), and
822
+
retention-retired catalog blocks resolve via `shard_inclusions` (#44) — the read paths of
0 commit comments