docs(research): Phase 0 convergence — settle OQs, add decision table + ADR backlog
- phase-0.md: fold chronological accretion into a settled posture; status -> converged; OQ-BL-01..06 restated as settled-base + named residuals; new Convergence section (recommended approach, decision table, Phase 1 ADR backlog); plan section marked complete - iroh-blobs-eval.md: fix crossover numbers (64-128 -> 128-256 KiB, matching POC #3 finding A4) and B-finding -> finding-A4 reference - poc-largeblob-findings.md: summary-table label fix (B-finding -> finding A4); align small-blob multiplier with measured 9-10x Verification: cargo test / clippy -D warnings / fmt --check clean
This commit is contained in:
1 parent
6b278fb490
commit
1f905003d0
3 files changed
+458
-536
No files matched your search
@@ -69,8 +69,8 @@ temp/<uuid>.temp staging (must be same-device as data/)
|
||||
all (`fs/import.rs:160-221`, `DESIGN.md:71`). iroh couples "hash
|
||||
overhead" and "storage tier" at the same boundary; under our git-oid
|
||||
derivation there is no outboard to elide (whole-blob digest only) and
|
||||
the tier boundary is a pure dispatch choice — POC #3's benchmark says
|
||||
~64-128 KiB, not 16 KiB (see `poc-largeblob-findings.md`, B-finding).
|
||||
the tier boundary is a pure dispatch choice — POC #3's benchmark says
|
||||
~128-256 KiB, not 16 KiB (see `poc-largeblob-findings.md`, finding A4).
|
||||
- **Crash-consistency story, borrowed as a conclusion** (`DESIGN.md:
|
||||
126-142`, "files are hard"): persist data+outboard+sizes *first*, the
|
||||
checksummed bitfield *last*, with truncate-to-zero-on-read marking a
|
||||
@@ -195,4 +195,4 @@ findings (first-party, measured).
|
||||
6. Crash-consistency ordering (data first, coverage/index last, with
|
||||
dirty-marking) — only if partial entries ever exist.
|
||||
7. The inline threshold concept, re-sized by our own benchmark
|
||||
(~64-128 KiB crossover, git-blob workload) instead of their 16 KiB.
|
||||
(~128-256 KiB crossover, git-blob workload) instead of their 16 KiB.
|
||||
+454
-532
File diff suppressed because it is too large.
Load diff
@@ -48,7 +48,7 @@ rides is alkcall (like alkhttp/alksocks/alktty/alktunnels).
|
||||
| Streaming get without whole-blob load | **Yes** — fs arm streams a file handle; kv arm one bounded read |
|
||||
| Fanout (serve while persisting) | **Yes** — one reader task, broadcast channel, store arm + N subscriber arms (finding A3) |
|
||||
| Range reads on fs | **Yes** — pread-window only; **verification has a real gap** (finding A2) |
|
||||
| sqlite faster than fs for small blobs | **Confirmed and measured** — ~10× below 16 KiB; crossover ~128-256 KiB (B-finding) |
|
||||
| sqlite faster than fs for small blobs | **Confirmed and measured** — ~9-10× at 1-16 KiB; crossover ~128-256 KiB (finding A4) |
|
||||
| Digest = git oid on streaming paths | **Byte-exact vs `git hash-object`** for both put paths |
|
||||
| Stage-file hygiene | **Verified** — failures (stream error, overflow, early-EOF) leave zero stage files (finding A5) |
|
||||
|
||||
|
||||
Reference in new issue
Block a user