{"record":{"id":"fa0c2d4fdc31af77","repo":"ruvnet/ruflo","slug":"message-id-was-reused-with-different-content","errorCode":null,"errorMessage":"message ID was reused with different content","messagePattern":"message ID was reused with different content","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/codex/src/harness/in-memory-inbox-reference.ts","lineNumber":98,"sourceCode":"    }\n    try {\n      parseCanonicalUnsigned(message.sequence, 'message sequence');\n    } catch {\n      throw new Error('message sequence must be a canonical unsigned decimal integer');\n    }\n    if (message.expiresAt !== undefined && !Number.isFinite(Date.parse(message.expiresAt))) {\n      throw new Error('message expiresAt must be an ISO timestamp');\n    }\n\n    const envelopeDigest = sha256(canonicalJson(message));\n    const prior = this.byIdentity.get(identity);\n    if (prior) {\n      if (prior.issuer !== message.issuer || prior.messageId !== message.messageId) {\n        throw new Error('inbox identity hash collision');\n      }\n      if (prior.envelopeDigest !== envelopeDigest) {\n        this.quarantine(message, 'message-id-content-conflict', receivedAt);\n        throw new Error('message ID was reused with different content');\n      }\n      return { messageId: message.messageId, acceptedAt: prior.record.receivedAt, duplicate: true };\n    }\n\n    const record: InMemoryInboxRecord = {\n      cursor: (this.nextCursor++).toString(),\n      message: clone(message),\n      receivedAt,\n    };\n    this.records.push(record);\n    this.byIdentity.set(identity, {\n      issuer: message.issuer,\n      messageId: message.messageId,\n      envelopeDigest,\n      record,\n    });\n    return { messageId: message.messageId, acceptedAt: receivedAt, duplicate: false };\n  }","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/codex/src/harness/in-memory-inbox-reference.ts#L80-L116","documentation":"The (issuer, messageId) identity key was already recorded by a prior send, but the new envelope's digest differs from the stored one — the same message ID is being reused with different content. Duplicate delivery is refused to preserve exactly-once identity semantics.","triggerScenarios":"Thrown at v3/@claude-flow/codex/src/harness/in-memory-inbox-reference.ts:98 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Generate a fresh unique messageId for each new message instead of reusing ids.","If id reuse is intentional for idempotent delivery, resend byte-identical content."],"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-14T00:17:10.932Z"}