---
name: in-tree-target-has-no-inbound-link
description: "Inbound-link-only orphan detection condemns every live in-tree cache — a tree's own target/ needs no link, its owner is the parent dir."
metadata: 
  node_type: memory
  type: feedback
  originSessionId: e1c4771a-c467-47ae-abd7-f426d6ba0705
  modified: 2026-08-02T11:19:25.307Z
---

A reclaim sweep that decides "orphan = nothing links to it" is **wrong for the commonest
shape**. A source tree's own `target/` has no inbound link by construction — it *is* in the
tree, and its owner is the directory above it. Inbound links only answer the SHARED-pool
shape (junctions into a common pool).

**Why:** measured 2026-08-02 building #103 leg 2. The first dry run over the box offered
**91.91 GB** for deletion, including an unpushed lane's cache and the PRIMARY CHECKOUT's
`target/`. Only dry-run-by-default made it a finding instead of an incident, and the failure
would have been silent — nobody notices a deleted warm cache until the next build takes
twenty minutes.

**How to apply:**
- Derive an unstamped pool's implicit owner from the ENCLOSING tree: `Cargo.toml`,
  `Cargo.lock`, or a `.git` **file** — a git worktree's `.git` is a file, so a check that
  only recognises a directory protects the primary checkout and condemns every worktree.
- `CACHEDIR.TAG`'s signature is what makes a dir a cargo cache — never its name.
- UNKNOWN liveness counts as IN USE for a *reclaim*, the opposite polarity from a build
  *guard*: a blocked reclaim costs disk, a permitted one costs a lane its cache.
- A "0 reclaimable" result needs a positive control or it is indistinguishable from a broken
  detector — see [[zero-match-filter-reads-as-absent]].
- Report sizes in an adaptive unit: a fixed GB scale printed `reclaimed 0.00 GB` after
  really deleting something.

Related: [[reap-subtree-not-session-dir]], [[free-space-floor-blocks-golden]],
[[two-daemon-one-box-rig]].
