Deps: none to start. The BROADER hashlet-resolver dedup is owned by CODE-020 (resolveHashlet reconcile → shared/resolve.js); this is the put.js spin-off CODE-020 blockers explicitly told to file separately. A real bug, not just tidiness — carries its own repro. See resolve-hash.
resolveHex is a stale copy of core/resolve.jsresolveHex.return k.getObject(hexish) ? hexish : hexish — BOTH arms
return hexish, so a NON-EXISTENT full sha is accepted as valid.eachRemote prefix fallback and never reaches
k.resolveHexAny, so a mid-history commit hashlet silently misses.#sha/#hashlet target resolution rides exactly this function.k.resolveHexAny (any-object reach) or
resolve-hash, retiring the local resolveHex copy.k.resolveHexAny (store hashlet60 index): full
sha verbatim iff present, 6..40 prefix unique-or-nothing, all objects.put ...#<absent-full-sha> is wrongly accepted todayput ...#<mid-history-hashlet> silently misses todayresolveHex → k.resolveHexAny (drop the local copy)URI.make (cluster C)CODE-022: fix put hashlet dead ternary + resolveHexAny.