deepseek-ai/deepseek-harness · error · Error

message-feedback: no durability listener participated for li

Error message

message-feedback: no durability listener participated for live session '${inspection.meta.id}'

What it means

Error "message-feedback: no durability listener participated for live session '${inspection.meta.id}'" thrown in deepseek-ai/deepseek-harness.

Source

Thrown at packages/feedback/message-feedback/src/index.ts:332

  /** Require the exact finalized append-origin assistant message projection. */
  private hasFeedbackTarget(inspection: SessionInspection, messageId: MessageFeedbackItem['messageId']): boolean {
    return inspection.events.some((event) => {
      if (event.type !== 'assistant/message' || !isAppendSurfaceEvent(event)) return false
      const message = deriveEventMessage(event)
      return message?.role === 'assistant' && message.id === messageId
    })
  }

  /**
   * Put the target log prefix behind a durability barrier before its sidecar.
   * A live owner flushes through the SessionStore's canonical checkpoint; a
   * cold owner is re-read from the physical durable prefix.
   */
  private async ensureTargetDurable(inspection: SessionInspection): Promise<SessionInspection> {
    const live = this.ctx.sessions.get(inspection.meta.id)
    if (live !== undefined && sameHeaderIdentity(live.header, inspection.meta)) {
      if (!(await this.ctx.sessions.flush(live))) {
        throw new Error(
          `message-feedback: no durability listener participated for live session '${inspection.meta.id}'`,
        )
      }
      return await this.ctx.sessionPersistence.readFrom(inspection.meta.id, 0)
    }
    return await this.ctx.sessionPersistence.readFrom(inspection.meta.id, 0)
  }

  /** Validate optional-note semantics and the configured complete UTF-8 byte bound. */
  private resolveNote(note: string | undefined): ResolvedNote {
    if (note === undefined) return success(undefined)
    if (note.trim().length === 0) return rejected({ code: 'note-blank' })
    const actualBytes = Buffer.byteLength(note, 'utf8')
    if (actualBytes > this.maxNoteBytes) {
      return rejected({ code: 'note-too-large', maxBytes: this.maxNoteBytes, actualBytes })
    }
    return success(note)
  }

View on GitHub (pinned to b150a551b8)

When it happens

Trigger: Thrown at packages/feedback/message-feedback/src/index.ts:332 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24). Data as JSON: /api/errors/bb278665e5fcea88. Report an issue: GitHub.