ruvnet/ruflo · error · Error
message ID, issuer, and audience are required
Error message
message ID, issuer, and audience are required
What it means
send() on the in-memory inbox reference requires the three identity fields — messageId, issuer, and audience — to be non-blank strings. The guard fires when any of them is missing or whitespace-only, because the dedup identity key and delivery routing both depend on them.
Source
Thrown at v3/@claude-flow/codex/src/harness/in-memory-inbox-reference.ts:66
* reference.
*/
export class InMemoryInboxReference {
readonly referenceOnly = true;
private readonly records: InMemoryInboxRecord[] = [];
private readonly byIdentity = new Map<string, {
issuer: string;
messageId: string;
envelopeDigest: string;
record: InMemoryInboxRecord;
}>();
private readonly quarantined: InMemoryQuarantinedMessage[] = [];
private nextCursor = 1n;
constructor(private readonly now: () => number = Date.now) {}
send(message: HarnessMessage): MessageReceipt {
if (!message.messageId.trim() || !message.issuer.trim() || !message.audience.trim()) {
throw new Error('message ID, issuer, and audience are required');
}
const identity = inMemoryInboxIdentityKey(message.issuer, message.messageId);
const receivedAt = new Date(this.now()).toISOString();
let suppliedDigest: string;
try {
suppliedDigest = harnessMessageContentDigest(message.content);
} catch {
this.quarantine(message, 'content-digest-mismatch', receivedAt);
throw new Error('message content is not canonical JSON');
}
if (suppliedDigest !== message.contentDigest) {
this.quarantine(message, 'content-digest-mismatch', receivedAt);
throw new Error('message contentDigest does not match canonical content');
}
try {
parseCanonicalUnsigned(message.sequence, 'message sequence');
} catch {
throw new Error('message sequence must be a canonical unsigned decimal integer');View on GitHub (pinned to fa13ee4ad6)
Solutions
- Populate messageId, issuer, and audience on the message before sending it to the inbox.
- Validate the message shape at the producer so incomplete messages fail before reaching the inbox.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at v3/@claude-flow/codex/src/harness/in-memory-inbox-reference.ts:66 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/d466ab6d971233d4.
Report an issue: GitHub.