Manages the context lock file (.foundry/context.lock) which tracks whether the cached project context is fresh.
The lock file stores a SHA256 hash of the target's source files. If any of them change, the hash becomes stale.
Umbrellas are hashed through apps/*
An umbrella has no lib/ at its root, so hashing only the root globs matched
zero files and produced the hash of the empty string -- a constant. The
lock could then never go stale, and a Studio that trusts it would serve a
cached context for a project the person had been editing all day. The
apps/* globs are what make the freshness check mean anything for Axonn.