{"record":{"id":"0961df7bfa000824","repo":"deepseek-ai/deepseek-harness","slug":"directory-unreadable","errorCode":"directory-unreadable","errorMessage":"cannot list \"${path}\": not a fully qualified path","messagePattern":"cannot list \"(.+?)\": not a fully qualified path","errorType":"exception","errorClass":"DirectoryPickerError","httpStatus":null,"severity":"error","filePath":"packages/host/directory-picker-browse/src/index.ts","lineNumber":223,"sourceCode":"  constructor(ctx: Context, private readonly config: Config) {\n    super(ctx)\n  }\n\n  /**\n   * The browse interaction capability.\n   * @returns the stable `browse` capability object.\n   */\n  capability(): DirectoryPickerCapability {\n    return this.browseCapability\n  }\n\n  private async list(path?: string, signal?: AbortSignal): Promise<DirectoryListing> {\n    const home = homedir()\n    // The seam contract takes fully qualified paths only; resolve() would\n    // silently rebase a relative or empty wire value under the host process\n    // cwd (or, for rooted drive-less Windows forms, its current drive).\n    if (path !== undefined && !fullyQualified(path)) {\n      throw new DirectoryPickerError('directory-unreadable', path, `cannot list \"${path}\": not a fully qualified path`)\n    }\n    const target = resolve(path ?? home)\n    // Stream the level (opendir, one dirent at a time) into a name-sorted\n    // window of maxEntries + 1 candidates: memory stays bounded no matter how\n    // many children the directory holds, the window keeps the name-sorted\n    // head, and the +1 slot lets an in-window extra row prove the cut. A\n    // window candidate that turns out non-enterable (broken symlink) is not\n    // backfilled from beyond the window — an eviction already marks the\n    // level truncated, which stays the honest answer.\n    const keep = this.config.maxEntries + 1\n    const window: ListingCandidate[] = []\n    let evicted = false\n    try {\n      // Every filesystem await races the caller's signal: a stalled\n      // opendir/read on a network filesystem must not keep a departed\n      // caller's scan alive, and an already-aborted request rejects even\n      // when the level is empty.\n      const opening = opendir(target)","sourceCodeStart":205,"sourceCodeEnd":241,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/host/directory-picker-browse/src/index.ts#L205-L241","documentation":"Error \"cannot list \"${path}\": not a fully qualified path\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/host/directory-picker-browse/src/index.ts:223 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"}