Cynical deletion + review fixes
This release wraps up the cynical-deletion sweep (PR #2141) — closing 27 issues by removing two anti-patterns that were breeding bugs:
- Defenders (orphan cleanup, duplicate liveness probes, restart-port-steal logic) replaced with fail-fast or single-source paths.
- Tolerators (silent JSON drops, drifted SSE/SQL filters, passthrough Zod schemas) replaced with strict boundaries.
Highlights
- Multi-account isolation via
CLAUDE_MEM_DATA_DIR+ per-UID worker port (37700 + uid % 100), withCLAUDE_MEM_WORKER_PORToverride (#2101) - New
CLAUDE_MEM_INTERNAL=1trust boundary replaces cwd-based observer-session detection - Shared
shouldEmitProjectRowpredicate keeps SSE broadcast and pagination filters in sync - Pinned
chroma-mcpto 0.2.6 for reproducible installs - Install/uninstall: shared
shutdown-helperreleases file locks before overwrite/delete (#2106) - Migration 30:
observations.metadatacolumn added (#2116) - Proxy env vars stripped from spawned subprocesses to prevent user proxy config leaking into AI API calls
Review-comment fixes (post-PR)
worker-servicerestart now exits 1 with error ifspawnDaemonfails (Greptile P1)shutdown-helperdistinguishesAbortError(slow worker) from connection-refused (gone) (Greptile P2)hooks.json$HOMEcache lookup quoted to support paths with spacestimeline-reportSKILL works on Windows (noprocess.getuid()requirement)opencode-pluginvalidatesCLAUDE_MEM_WORKER_PORTbefore useuninstallonly strips alias lines, not function declarationsMemoryRoutestrims whitespace-onlyprojectbefore precedence resolution- Migration 21 preserves
metadatacolumn when rebuilding observations table
Closes
#2087, #2089, #2094, #2099, #2101, #2103, #2106, #2116, #2139, #2140, and 17 more (see PR #2141).