{"record":{"id":"2f6277fee73788f9","repo":"paperclipai/paperclip","slug":"watched-source-issue-not-found","errorCode":null,"errorMessage":"Watched source issue not found","messagePattern":"Watched source issue not found","errorType":"http","errorClass":null,"httpStatus":404,"severity":"error","filePath":"server/src/routes/issues.ts","lineNumber":6126,"sourceCode":"    watchdogParentIssueId: string | null | undefined;\n    currentChildIssueId: string | null | undefined;\n  }) {\n    if (!input.watchdogParentIssueId || !input.currentChildIssueId) return;\n    const watchdogParent = await svc.getById(input.watchdogParentIssueId);\n    if (\n      !watchdogParent ||\n      watchdogParent.originKind !== TASK_WATCHDOG_ORIGIN_KIND\n    )\n      return;\n    if (\n      watchdogParent.status !== \"in_progress\" &&\n      watchdogParent.status !== \"blocked\"\n    )\n      return;\n\n    const relations = await svc.getRelationSummaries(watchdogParent.id);\n    const nextBlockedByIssueIds = mergeIssueBlockerIds(\n      relations.blockedBy?.map((relation) => relation.id) ?? [],\n      input.currentChildIssueId,\n    );\n    await svc.update(watchdogParent.id, {\n      status: \"blocked\",\n      blockedByIssueIds: nextBlockedByIssueIds,\n      actorAgentId: input.actor.agentId,\n      actorUserId:\n        input.actor.actorType === \"user\" ? input.actor.actorId : null,\n    });\n    await logActivity(db, {\n      companyId: watchdogParent.companyId,\n      actorType: input.actor.actorType,\n      actorId: input.actor.actorId,\n      agentId: input.actor.agentId,\n      runId: input.actor.runId,\n      agentApiKeyId: input.actor.agentApiKeyId,\n      action: \"issue.task_watchdog_followups_serialized\",\n      entityType: \"issue\",","sourceCodeStart":6108,"sourceCodeEnd":6144,"githubUrl":"https://github.com/paperclipai/paperclip/blob/3f1d897a7c018d76563a21c6e39c3c9b03933622/server/src/routes/issues.ts#L6108-L6144","documentation":"404 from the watchdog product-bug follow-up guard: the watched source issue could not be loaded or belongs to a different company, so the evidence source for the follow-up is missing.","triggerScenarios":"Thrown at server/src/routes/issues.ts:4808 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the id in the request path or body refers to an existing record in this company; re-list the parent collection to get a valid id.","Check that the record was not deleted or archived, and that the request is scoped to the correct companyId."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3f1d897a7c018d76563a21c6e39c3c9b03933622","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}