{"record":{"id":"a22e9d6ee506f8c9","repo":"deepseek-ai/deepseek-harness","slug":"client-modules-duplicate-graph-entry-row-id","errorCode":null,"errorMessage":"client-modules: duplicate graph entry \"${row.id}\"","messagePattern":"client-modules: duplicate graph entry \"(.+?)\"","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/client/modules/src/client/system.ts","lineNumber":78,"sourceCode":"  private readonly bootstrapIds = new Set<string>()\n  /** In-flight prefetch (script load) per id; concurrent callers share it. */\n  private readonly pendingArrival = new Map<string, Promise<void>>()\n  /** Materialization re-entrancy guard: factory-form CJS cannot deliver partial exports, so a cycle is fatal. */\n  private readonly materializing = new Set<string>()\n  private readonly graphRows = new Map<string, BootModuleRow>()\n  private readonly loadBundle: (url: string) => Promise<void>\n\n  /**\n   * Build the module system over the parsed boot rows.\n   * @param options - Parsed graph, platform seed, bootstrap module, registration facade, and transport.\n   */\n  constructor(options: ClientModuleSystemOptions) {\n    this.manifest = options.manifest\n    this.seed = new Map(Object.entries(options.staticModules))\n    this.loadBundle = options.loadBundle ?? defaultLoadBundle\n\n    for (const row of options.manifest.modules) {\n      if (this.graphRows.has(row.id)) throw new Error(`client-modules: duplicate graph entry \"${row.id}\"`)\n      this.graphRows.set(row.id, row)\n    }\n\n    const bootstrapId = stripClientSuffix(options.bootstrapModule.id)\n    this.bootstrapIds.add(bootstrapId)\n    this.loadCache.set(bootstrapId, {\n      id: bootstrapId,\n      exports: options.bootstrapModule.exports,\n      styles: [],\n      edges: new Set(),\n    })\n\n    const target = options.registrationTarget\n    if (target.mode !== 'queue') {\n      throw new Error('client-modules: window.__ModuleLoader__.create called after module-system boot')\n    }\n    const pending = target.pendingQueue.splice(0)\n    // Switch first: a bundle that executes while pending registrations drain","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/client/modules/src/client/system.ts#L60-L96","documentation":"Error \"client-modules: duplicate graph entry \"${row.id}\"\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/client/modules/src/client/system.ts:78 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove the duplicate graph entry id from the boot manifest."],"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"}