CODE-059: a permalink into a file deleted at HEAD is a dead link

Now
OPEN
Sev
MED
Rep
///bee
Ask
gritzko
Rev
///bee#8cb69a0
See
BEE-070
See
BEE-033

Input

Context

index/perma.js:324:Ab resolves only through resolveAt(ctx, ix, ctx.head.sha, ...). Confirmed on fixture del: bee see gone.c:5:Qn works before git rm and after it answers "no registered repo holds gone.c", although B2P and REV-BLOB still name the anchored blob and the ODB still holds the bytes. deleterOf already knows who removed it. Found in the 2026-09-18 review.

Goals

On a HEAD-tree miss ask the index (B2P -> path/rev -> REV-CMMT) before the foreign fan-out, and serve the anchored bytes with the deleterOf note.

WIP

TODOs

Design decisions

A deletion mints no rev of its own (index.js's ZERO40 skip), so deleterOf — which walks the path's OWN later revs — cannot name the commit that removed the FILE; it still names the one that took the LINE. gonerOf answers the file case: HEAD's ancestry newest first, bounded by the same DELETER_SCAN, the oldest commit still missing the path. The seat carries the anchored BYTES, since the worktree has none: door.js seatOf passes them through and view/see.js quotes them in place of its worktree read. The index leg fires only when HEAD's tree spells the path NOWHERE, so the live-file leg and the foreign fan-out keep their goldens untouched.

Outcome