docs: RFC — staged-hybrid incremental backup (Phase 2 = size-routing/append) #7
+836
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Refreshed: the staged-hybrid RFC (review gate for Phase 2)
This rewrites
docs/RFC_incremental_v2.mdfrom the original leveled-only RFC into theumbrella staged-hybrid design — matching what actually shipped (Phase 1) and what is
being built next (Phase 2). This PR is a review gate: no engine code lands until the
Phase-2 design here is approved.
What changed vs the old RFC
[DONE]: recap + pointer to the authoritativedocs/EXCLUSION_SPEC.md(merged, PRs feat(incremental): catalog + BLONDE primitives (PR 1) #8/docs: VOCABULARY.md — shared terms aligned to Bastion #10–feat(exclusion): resume-under-exclusion + post-hoc re-verifier (finish Phase 1) #17, suite 136 green).[THIS RFC — READY TO BUILD]: the substantive new content.[DEFERRED — DORMANT]: the entire prior leveled RFC is preserved intact under a DEFERRED banner (§3) as the Phase-3 reference — Path A/B recommendation, restore, chain-aware reclaim, the Negishi spike. Nothing was lost.badge_of/make_blonde/enumerate_source_catalog/floor_s) reused across phases, with currentarchive.pyline refs.Phase 2 in one screen
Per target, the post-exclusion survivors are partitioned into independent Fortress
objects, each shipped through the unchanged
make_zip_files → send_to_fortressverify chain:
T_small(256 MiB, floor 100 MB); its own object; skips if unchanged.T_smallbucketed byk = hash(relpath) mod K(K frozen at baseline); whole-shard re-ship on any member change. No repack cascade.verify_target) — REQUIRED in the same slice as the first routed ship, or every routed target perpetually false-DRIFTs (reclaim dedups to the newest log = one object). Sums all objects; requires every object tar present; INV-E exclusion re-gate on the aggregate.[RESHIP-WATCH]email when shard reship ratio > ~25%: the uniform-medium-churn signature and the only trigger to activate Phase 3.--slotselective restore. It's what makes aggregate--deletetrustworthy.--globus(routing + manifest are on the launching host).{log_dir}/_vault/{badge}.manifest.json(dodges reclaim's non-recursive glob).Design driver (settled, do not re-litigate)
The 2026-07-08
source_filesmeasurement (809 logs, Negishi): standoff imagery isstable (Phase-1 exclusion covers it); the data modalities GROW by appending
(
modified≈0) — so append is the dominant Phase-2 win, which content-addressedshards + solos deliver for free. Corrects the earlier
du-based "omics re-analyzeseverything" read.
Build order (after approval) — same cadence as exclusion
only_arcnamesonmake_zip_files.--globusrefusal +--freshre-baseline.verify_target, required with slice 2's first routed ship).restore.py) — the capstone.Tests ship with every slice;
python3 -m unittest discover -s testsbefore merging.🤖 Generated with Claude Code