{"record":{"id":"8c60205ad82de71e","repo":"ruvnet/ruflo","slug":"inbound-rejected-sourcenodeid-not-in-discovery","errorCode":null,"errorMessage":"Inbound rejected: ${sourceNodeId} not in discovery (from ${address})","messagePattern":"Inbound rejected: (.+?) not in discovery \\(from (.+?)\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/plugin-agent-federation/src/application/inbound-dispatcher.ts","lineNumber":294,"sourceCode":"  const meta = (message.metadata ?? {}) as Record<string, unknown>;\n  const sourceNodeId = typeof meta.sourceNodeId === 'string' ? meta.sourceNodeId : null;\n\n  if (!sourceNodeId) {\n    await deps.audit.log('message_rejected', {\n      sourceNodeId: undefined,\n      metadata: { address, reason: 'MISSING_METADATA' },\n    });\n    deps.logger.warn(`Inbound rejected: no sourceNodeId in metadata (from ${address})`);\n    return { accepted: false, reason: 'MISSING_METADATA' };\n  }\n\n  const peer = deps.discovery.getPeer(sourceNodeId);\n  if (!peer) {\n    await deps.audit.log('message_rejected', {\n      sourceNodeId,\n      metadata: { address, reason: 'PEER_UNKNOWN' },\n    });\n    deps.logger.warn(`Inbound rejected: ${sourceNodeId} not in discovery (from ${address})`);\n    return { accepted: false, reason: 'PEER_UNKNOWN' };\n  }\n\n  if (peer.state === FederationNodeState.SUSPENDED) {\n    await deps.audit.log('message_rejected', {\n      sourceNodeId,\n      metadata: { address, reason: 'PEER_SUSPENDED' },\n    });\n    return { accepted: false, reason: 'PEER_SUSPENDED' };\n  }\n\n  if (peer.state === FederationNodeState.EVICTED) {\n    await deps.audit.log('message_rejected', {\n      sourceNodeId,\n      metadata: { address, reason: 'PEER_EVICTED' },\n    });\n    return { accepted: false, reason: 'PEER_EVICTED' };\n  }","sourceCodeStart":276,"sourceCodeEnd":312,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/plugin-agent-federation/src/application/inbound-dispatcher.ts#L276-L312","documentation":"Log warning in dispatchInbound: the claimed sourceNodeId does not match any peer in the discovery table (unknown node), so the sender cannot be authenticated; the message is audited and rejected.","triggerScenarios":"Thrown at v3/@claude-flow/plugin-agent-federation/src/application/inbound-dispatcher.ts:294 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add the sending node to the discovery registry or fix its node ID; unknown nodes are rejected."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}