Skip to Content
IssuesIssues Log

Issues Log

Issues found during live flow testing sessions. Each file covers one issue with root cause and fix instructions.

FileStatusSummary
brand-extractor-name-undefined.md✅ Fixed__name is not defined in page.evaluate() — brand extraction always skipped
linkedin-insights-max-turns.md✅ FixedLinkedIn insights fail with “Reached maximum turns per run” — maxTurnsPerRun 1→3
deliverable-planner-max-turns.md✅ FixedDeliverable planner fails with max-turns/timeout — missing allowedTools:[]
channel-action-suggester-exit-code-1.md✅ FixedClaude subprocess exits with code 1 — concurrent jobs share cwd, Job B kills Job A via .agent.pid; fixed by concurrency:3→1
opportunity-matcher-lock-expiry.md✅ FixedBullMQ lock expires during LLM scoring of 131 candidates — lockDuration + lockRenewTime added
duplicate-website-insights.md✅ FixedWebsite insights ran twice when Brand Assets Refresh triggered a second crawl — guard added
crawler-zero-pages-indexed.md✅ FixedCrawl reports 0 pagesIndexed — root cause: wrong ID type passed to RAG
rag-content-wrong-file-id.md✅ FixedWebPage.id passed as RagFile fileId — all website RAG content silently skipped
api-statuscode-null-logging.md✅ FixedAll API responses log statusCode: null — custom res serializer in createLogger()
max-listeners-warning.md✅ FixedMaxListenersExceededWarningprocess.setMaxListeners() added to 3 servers
ragengine-missing-openai-key.md✅ FixedRAG ingestion 401 — AZURE_OPENAI_API_KEY/AZURE_OPENAI_ENDPOINT/EMBEDDING_PROVIDER added to ragengine .env; EMBEDDING_PROVIDER env fallback added to getProviderConfig()

| channel-health-scores-missing.md | ✅ Fixed | Website/LandingPage/Google Ads show “Not scored yet” — wrong models; buildHealthSummary + Google Ads worker fixed |

| strategy-timeline-unknown-actor.md | ✅ Fixed | Strategy timeline shows “Unknown” for client approvals — name missing from JWT AccessTokenPayload | | deliverable-planner-timeout-900s.md | 🔴 Open | Deliverable planner takes 7-15 min — full context/strategy injection + Sonnet; proposed: section extraction + action item cap | | activity-planner-slow-runtime.md | 🔴 Open | Activity planner takes ~8 min — missing allowedTools/maxTurnsPerRun + full context injection + tight lockDuration buffer | | keyword-researcher-json-parsing.md | ✅ Fixed | keyword-researcher postProcess brittle regex dropped JSON when Claude wrote prose before the block; fixed with brace-depth extractJson + promptSuffix enforcement | | notification-missing-email-templates.md | ✅ Fixed | 7 pipeline email slugs missing from seed → email-loader returned html:"" → SendGrid 400; 7 templates added, loader now throws on missing slug |

| brand-scorer-cwd-undefined.md | ✅ Fixed | cwd never passed to adapter in brand-scorer — all brand scoring crashes; model name also wrong | | keyword-researcher-max-turns.md | ✅ Fixed | maxTurnsPerRun defaults to 3 from content worker factory — not enough for large keyword JSON output; set to 8 |

Session: 2026-05-06

| channel-action-suggester-exit-code-1.md | ✅ Fixed | Re-investigated — prior fix (maxStalledCount/maxTurnsPerRun) was incomplete; real cause: concurrent jobs share cwd+pidFile, killing each other via taskkill; fixed concurrency:3→1 | | website-crawler + backlink-outreach-writer .agent.pid race | ✅ Fixed | Same root cause as channel-action-suggester — concurrency: 3 + shared cwd per tenant; fixed by scoping cwd to tenantId/AGENT_ROLE/runId (Pattern B), preserving parallelism | | BullMQ lock expiry — “Missing key” on moveToFinished | ✅ Fixed | BullMQ default lockRenewTime = lockDuration/2 gives only one renewal window; a single missed Redis SET causes lock expiry mid-job; fixed by adding lockRenewTime: 60_000 to all 23 workers |

| knowledgebase-content-junction.md | ✅ Fixed | Knowledge base blank — content/ was a plain empty dir instead of a Windows junction to docs/; recreated junction 2026-05-06 |

E2E Run Logs

Full pipeline run logs with all issues observed per session.

FileDateIssues
runs/1.md2026-05-0611 issues: activity planner JSON/validation, website-crawler + outreach-writer concurrency races, BullMQ lock expiry, RAG 404, keyword-researcher invalid JSON, 8 missing email templates, taskkill log noise

© 2026 Leadmetrics — Internal use only