Problem
RootSet.doctor() can prove that the current entries in one root set are anchored by that root-set ref. It cannot currently classify objects outside that set as anchored by another branch, tag, reflog, vault, or root set versus orphaned or volatile. The v6.1.0 API therefore reports repository-wide orphaned/volatile counts as bounded unknowns rather than making a false claim.
Scope
- Define a repository-wide reachability inventory across refs and reflogs.
- Distinguish anchored, orphaned-within-grace, and volatile/past-grace objects.
- Reconcile object retention policy (
pinned/evictable) with observed reachability without conflating the two axes.
- Add synthetic-repository tests covering other refs, reflogs, unreachable recent objects, and immediately prunable objects.
- Expose evidence and limitations without running destructive
git gc or git prune.
Non-goals
- Changing the v6.1.0 single-set doctor contract.
- Automatically deleting objects.
- Treating root-set
pinned as a pack .keep guarantee.
Provenance
Follow-on debt from API-0046 and #48. The v6.1.0 verification witness records the bounded claim.
Problem
RootSet.doctor()can prove that the current entries in one root set are anchored by that root-set ref. It cannot currently classify objects outside that set as anchored by another branch, tag, reflog, vault, or root set versus orphaned or volatile. The v6.1.0 API therefore reports repository-wide orphaned/volatile counts as bounded unknowns rather than making a false claim.Scope
pinned/evictable) with observed reachability without conflating the two axes.git gcorgit prune.Non-goals
pinnedas a pack.keepguarantee.Provenance
Follow-on debt from API-0046 and #48. The v6.1.0 verification witness records the bounded claim.