Drops 11 devDependencies with zero remaining imports after the wave-1
code swaps landed: handlebars/yaml/zod-to-json-schema/ts-prune (dead
weight, no callers), picocolors (replaced by node:util styleText),
glob (replaced by Bun.Glob), cors/@types/cors (replaced by an inline
allowlist middleware), jimp (its sole caller, the banner-frame
generator script, was deleted), tsx (bug-report script now runs via
bun, matching every sibling script), and tree-sitter-elixir (the
grammar can never produce a symbol; removed from build-hooks.js's
plugin manifest generator and check-postinstall-allowlist.js too).
Also drops the tree-kill optionalDependency — every remaining
"tree-kill" reference in src/ is prose describing the self-implemented
taskkill/pkill fallback, not an import of the package.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Explicit failure taxonomy + single installerError() decision point replacing ad-hoc
swallow sites; 'Installation Complete' only when all ABORT-level deps satisfied,
else 'Installation Partial' with remediation.
- npm install strict-first; --legacy-peer-deps only on confirmed ERESOLVE, announced.
- Missing uv/bun = ABORT with platform-specific remediation as primary message.
- Postinstall allowlist guard (scripts/check-postinstall-allowlist.js) prevents a
re-run of the tree-sitter-swift install hang.
- 48-cell IDE x failure-mode test matrix.
- #2548: 'npx claude-mem doctor' read-only diagnostic probe.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>