mirror of
https://github.com/Twigpine/zero.git
synced 2026-11-11 05:01:36 -10:00
Review found the keg check was shape-only, and it was right: a directory tree a user built themselves can have exactly a keg's shape. Classifying one as Homebrew refuses a `zero upgrade` that would have worked perfectly, on a machine Homebrew has never touched. Two changes, cheap one first. The shape rule now requires the full <prefix>/Cellar/<formula>/<version>/bin/<binary> depth rather than one segment fewer, which already excludes the exact path the review raised. Then, only for a path that still looks like a keg, one Stat for INSTALL_RECEIPT.json — the file Homebrew writes into every keg and nothing else does. The receipt is what the old comment argued against, on the grounds that it would put filesystem I/O on a path that runs at every version check. That is no longer true of it: the Stat happens only after the shape test has already matched, so an ordinary install still reaches no filesystem here at all. A directory named INSTALL_RECEIPT.json is not a receipt, which a bare Stat would have accepted silently. NOT taken: the same review asked for the Homebrew branch to be moved ahead of the cross-target one in upgradeGuidance. That ordering is deliberate and already pinned by TestUpgradeGuidanceKeepsCrossTargetAnswerForHomebrew, whose comment predicted exactly this reading — "it reads like an ordering bug until you see which question is being answered". Homebrew is a property of the binary on THIS machine; when the check was asked about a different target the answer belongs to that other machine, and `brew upgrade zero` would change this one instead. The reasoning is now recorded at the branch as well as in the test, so the next reader finds it in both places. The install docs claimed detection was the Cellar path alone, which undersold it, and stated the self-update rule absolutely in one paragraph before excepting mise in the next. Both say the same thing now.
Zero Documentation
This directory contains public documentation for using, extending, and releasing Zero.