paperclipai/paperclip · error
Only task-watchdog runs can create watchdog-discovered produ
Error message
Only task-watchdog runs can create watchdog-discovered product bug follow-ups
What it means
A watchdog product-bug discovery payload was supplied but resolveTaskWatchdogMutationScope found the run has no watchdog scope at all, so a non-watchdog agent run tried to file a watchdog-discovered follow-up.
Source
Thrown at server/src/routes/issues.ts:4953
blockerIssueId: string | null | undefined,
) {
const current = Array.isArray(existing)
? existing.filter((value): value is string => typeof value === "string" && value.trim().length > 0)
: [];
return blockerIssueId ? [...new Set([...current, blockerIssueId])] : [...new Set(current)];
}
async function findCurrentSerializedWatchdogChild(parent: { id: string; companyId: string }) {
const children = await db
.select({
id: issueRows.id,
status: issueRows.status,
})
.from(issueRows)
.where(and(
eq(issueRows.companyId, parent.companyId),
eq(issueRows.parentId, parent.id),
inArray(issueRows.status, ["todo", "in_progress", "in_review", "blocked"]),
isNull(issueRows.hiddenAt),
))
.orderBy(asc(issueRows.issueNumber), asc(issueRows.createdAt), asc(issueRows.id));
return children[0] ?? null;
}
async function blockWatchdogParentOnCurrentChild(input: {
actor: ReturnType<typeof getActorInfo>;
watchdogParentIssueId: string | null | undefined;
currentChildIssueId: string | null | undefined;
}) {
if (!input.watchdogParentIssueId || !input.currentChildIssueId) return;
const watchdogParent = await svc.getById(input.watchdogParentIssueId);
if (!watchdogParent || watchdogParent.originKind !== TASK_WATCHDOG_ORIGIN_KIND) return;
if (watchdogParent.status !== "in_progress" && watchdogParent.status !== "blocked") return;
const relations = await svc.getRelationSummaries(watchdogParent.id);
const nextBlockedByIssueIds = mergeIssueBlockerIds(View on GitHub (pinned to 01ad858492)
Solutions
- This is an authorization rule, not a bug: perform the action with an actor that satisfies the stated constraint (board user, the owning agent, or an in-scope resource).
- If access should be allowed, verify the actor's credentials/company scope and the resource's ownership before retrying.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/routes/issues.ts:4789 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-08-18).
Data as JSON: /api/errors/b956e7e7e640f1f2.
Report an issue: GitHub.