deepseek-ai/deepseek-harness · error

client-modules: module arrival cycle ${[...open.slice(cycleS

Error message

client-modules: module arrival cycle ${[...open.slice(cycleStart), row.id].join(' -> ')} (the host must reject this graph before serving it)

What it means

Error "client-modules: module arrival cycle ${[...open.slice(cycleStart), row.id].join(' -> ')} (the host must reject this graph before serving it)" thrown in deepseek-ai/deepseek-harness.

Source

Thrown at packages/client/modules/src/client/system.ts:131

  private arrive(row: BootModuleRow): Promise<void> {
    const { id, url } = row
    const pending = this.pendingArrival.get(id)
    if (pending !== undefined) return pending
    if (this.loadCache.has(id) || this.factories.has(id)) return Promise.resolve()
    const task = this.loadBundle(url).then(() => {
      if (!this.factories.has(id)) {
        throw new Error(`client-modules: bundle ${url} loaded without registering "${id}" via __ModuleLoader__.load`)
      }
    }).finally(() => { this.pendingArrival.delete(id) })
    this.pendingArrival.set(id, task)
    return task
  }

  /** Register each unresolved dynamic request before registering its consumer. */
  private async arriveGraphRow(row: BootModuleRow, open: readonly string[] = []): Promise<void> {
    const cycleStart = open.indexOf(row.id)
    if (cycleStart !== -1) {
      throw new Error(
        `client-modules: module arrival cycle ${[...open.slice(cycleStart), row.id].join(' -> ')} `
        + '(the host must reject this graph before serving it)',
      )
    }
    const next = [...open, row.id]
    for (const request of row.external) {
      const id = stripClientSuffix(request)
      if (this.seed.has(request) || this.loadCache.has(id)) continue
      const dependency = this.graphRows.get(id)
      if (dependency !== undefined) await this.arriveGraphRow(dependency, next)
    }
    await this.arrive(row)
  }

  /** Materialize a registered factory (synchronous; memoized in loadCache). */
  private materialize(id: string): ClientModuleRecord {
    const existing = this.loadCache.get(id)
    if (existing !== undefined) return existing

View on GitHub (pinned to b150a551b8)

Solutions

  1. Fix the module arrival cycle in the host graph before serving it.

When it happens

Trigger: Thrown at packages/client/modules/src/client/system.ts:131 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/a0e872ed9e545a65. Report an issue: GitHub.