Worker git-worktrees under a fresh `git worktree add` have empty
node_modules/.bin (pnpm workspaces do not share node_modules across
worktrees), so every gate binary (tsc/eslint/prettier/vitest) fails with
a raw `sh: 1: <tool>: not found` before the QA gate suite ever runs a
real check. That failure is indistinguishable from a genuine test/lint
failure -- a false-red gate that was responsible for 131/147 fleet
tool-errors.
- plugins/mosaic-framework/src/index.ts: the injected "Git Worktree
Requirement" instructions now direct every worker to run
`pnpm install --frozen-lockfile --prefer-offline` immediately after
`git worktree add`/`cd`, before any gate is invoked.
- packages/mosaic/framework/tools/qa/qa-hook-stdin.sh: the common
gate-entry seam (registered as the PostToolUse hook for every
Edit/Write/MultiEdit in runtime/claude/settings.json) now preflights
node_modules/.bin presence for JS/TS files and fails with an explicit
"deps not installed -- run pnpm install" sentinel instead of silently
letting a raw not-found surface downstream.
- packages/mosaic/framework/tools/qa/test-deps-preflight.sh: new
regression harness (wired into test:framework-shell) covering missing
node_modules/.bin, empty node_modules/.bin, populated node_modules/.bin,
and non-JS/TS skip behavior.
Closes#856.