Repository navigation
Guild 0.4.1
This patch fixes daemon startup and MCP availability when macOS encounters a large registry of project roots. It retains the Homebrew 7 support and retrieval improvements shipped in 0.4.0.
Watcher resource safety
macOS kqueue watches consume descriptors for files as well as directories. Guild now bounds native registrations to 4,096 paths and at most one quarter of the process descriptor limit, including implicit file watches and later filesystem growth. Git watches share the same budget.
If watching exceeds that budget or the backend exhausts OS resources, Guild closes the watcher and falls back to query-time staleness checks. MCP, SQLite, embeddings, and daemon sessions remain available. guild daemon status reports degraded watching; periodic rescans retry. Large registries may therefore use query-time checks instead of live file events.
Upgrade
brew update
brew upgrade --cask mathomhaus/tap/guildFor a new installation, use brew install --cask mathomhaus/tap/guild. Restart existing Guild daemons and MCP server connections after upgrading.
No new database migration is introduced in this patch. Users upgrading from before 0.4.0 should first stop all Guild writers and back up the entire Guild data directory, including SQLite sidecars; rollback requires the matching pre-upgrade data backup. See runtime defaults and upgrades.
Validation
Full local lint, SQL, docs, and race checks passed. Regression coverage includes an actual macOS descriptor-exhaustion subprocess that verifies partial registrations release their handles, initial oversized registrations, and growth after startup. An isolated copy of a 44-project registry successfully bootstrapped MCP, read canonical lore and quests, and enabled embeddings with default watching enabled; the oversized watcher degraded safely and the daemon used 18 handles.
Post-publication verification checked the Sigstore checksum signature against the exact release workflow and commit, all six archive hashes and build metadata, both installers against tagged source, and the latest stable channel. The published Mac and offline Linux ARM64 binaries passed embedded runtime/MCP tests. The generated Homebrew cask passed strict audit and fetch, and its four platform hashes match the signed manifest. A real Homebrew 7 upgrade to 0.4.1 passed, followed by default daemon/MCP startup with the watcher budget fallback.