{"record":{"id":"bb278665e5fcea88","repo":"deepseek-ai/deepseek-harness","slug":"message-feedback-no-durability-listener-participa","errorCode":null,"errorMessage":"message-feedback: no durability listener participated for live session '${inspection.meta.id}'","messagePattern":"message-feedback: no durability listener participated for live session '(.+?)'","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/feedback/message-feedback/src/index.ts","lineNumber":332,"sourceCode":"  /** Require the exact finalized append-origin assistant message projection. */\n  private hasFeedbackTarget(inspection: SessionInspection, messageId: MessageFeedbackItem['messageId']): boolean {\n    return inspection.events.some((event) => {\n      if (event.type !== 'assistant/message' || !isAppendSurfaceEvent(event)) return false\n      const message = deriveEventMessage(event)\n      return message?.role === 'assistant' && message.id === messageId\n    })\n  }\n\n  /**\n   * Put the target log prefix behind a durability barrier before its sidecar.\n   * A live owner flushes through the SessionStore's canonical checkpoint; a\n   * cold owner is re-read from the physical durable prefix.\n   */\n  private async ensureTargetDurable(inspection: SessionInspection): Promise<SessionInspection> {\n    const live = this.ctx.sessions.get(inspection.meta.id)\n    if (live !== undefined && sameHeaderIdentity(live.header, inspection.meta)) {\n      if (!(await this.ctx.sessions.flush(live))) {\n        throw new Error(\n          `message-feedback: no durability listener participated for live session '${inspection.meta.id}'`,\n        )\n      }\n      return await this.ctx.sessionPersistence.readFrom(inspection.meta.id, 0)\n    }\n    return await this.ctx.sessionPersistence.readFrom(inspection.meta.id, 0)\n  }\n\n  /** Validate optional-note semantics and the configured complete UTF-8 byte bound. */\n  private resolveNote(note: string | undefined): ResolvedNote {\n    if (note === undefined) return success(undefined)\n    if (note.trim().length === 0) return rejected({ code: 'note-blank' })\n    const actualBytes = Buffer.byteLength(note, 'utf8')\n    if (actualBytes > this.maxNoteBytes) {\n      return rejected({ code: 'note-too-large', maxBytes: this.maxNoteBytes, actualBytes })\n    }\n    return success(note)\n  }","sourceCodeStart":314,"sourceCodeEnd":350,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/feedback/message-feedback/src/index.ts#L314-L350","documentation":"Error \"message-feedback: no durability listener participated for live session '${inspection.meta.id}'\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/feedback/message-feedback/src/index.ts:332 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}