.maestro/playbooks/2026-03-12-CM-Issues-PRs/2026-03-12-Issues-PRs-Triage/TRIAGE-09-Quality-Maintenance.md
These are low-severity issues that don't cause data loss or crashes but represent technical debt, test reliability problems, and minor correctness issues. Fixing them improves the project's long-term health and prevents them from becoming real bugs later.
Issues addressed: #1156, #1299, #1219, #1259, #1335, #1137, #1218, #1163 Prerequisite: Phases 01-08 should be complete.
Move np from dependencies to devDependencies (#1156). The npm publish tool np is incorrectly listed as a runtime dependency, bloating installation:
package.json — find np in the dependencies sectiondevDependenciesnpm install to update the lockfilenp — search for require('np') or import.*np Fix mock.module() leak in test suite (#1299). The context-reinjection-guard test uses mock.module() which pollutes parallel test workers:
mock.module in tests/ to find the affected test filejest.mock() with proper cleanup in afterEach/afterAll, OR isolate the test to run in its own worker with --runInBand or equivalent Fix version mismatch in plugin.json (#1219). The version in plugin/.claude-plugin/plugin.json falls behind package.json:
package.json and plugin/.claude-plugin/plugin.json — compare versionsscripts/build-hooks.js or the version bump scriptDocument Gemini model compatibility (#1259). Gemini Flash Lite produces hallucinated observations while Gemini 2.5 Flash works correctly:
src/ — find where the SDK agent model is configuredgemini-flash-lite, etc.), log a warning at startup: Warning: ${model} may produce low-quality observations. Recommended: gemini-2.5-flash or claude-* Fix ECC observer session conflict (#1335). Observer sessions trigger External Claude Code's observe.sh hook, causing a double Haiku loop and /rename history pollution:
observer, observe, ECC, subagent in the codebase to understand how observer sessions are detectedCLAUDE_MEM_AGENT or similar env vars that identify observer sessions Address stuck processing messages (#1137, #1218). Plan mode and long sessions cause messages to get stuck in processing state:
PendingMessageStore already has self-healing (60s stale threshold resets to pending). Check if this is working correctly:
src/services/sqlite/PendingMessageStore.ts claimNextMessage() — verify the stale detection logicSessionQueueProcessor — check the idle timeout (3 minutes) and whether it properly aborts stuck SDK agent processesresetStaleProcessingMessages() regardless of queue activityFix Claude provider failure behind API proxy (#1163). The SDK spawn fails when used behind an API proxy or in nested Claude Code environments:
src/services/worker/SessionManager.ts or related filesHTTP_PROXY, HTTPS_PROXY, ANTHROPIC_API_BASE) are forwarded to the spawned subprocessCLAUDE_CODE_SESSION_ID is already set, the subprocess may conflict with the parent sessionRun tests and build:
npm test — all 1123+ tests should passnpm run build-and-sync