{"record":{"id":"4bd74ede9a26437d","repo":"deepseek-ai/deepseek-harness","slug":"fs-stale-version","errorCode":"FS_STALE_VERSION","errorMessage":"cannot edit \"${target.displayPath}\": file changed since it was read","messagePattern":"cannot edit \"(.+?)\": file changed since it was read","errorType":"exception","errorClass":"FsError","httpStatus":null,"severity":"error","filePath":"packages/e2b/fs-e2b/src/index.ts","lineNumber":414,"sourceCode":"      return {\n        operation: existing === undefined ? 'create' : 'update',\n        version,\n        before,\n        after: normalizeLineEndings(content),\n      }\n    })\n  }\n\n  override async editText(\n    target: FsTarget,\n    edit: FsEditRequest,\n    expected?: { version: ReturnType<typeof FsVersion> },\n    signal?: AbortSignal,\n  ): Promise<FsEditOutcome> {\n    return this.withLock(String(target.targetKey), async () => {\n      const existing = await this.probe(String(target.targetKey), target.displayPath, signal)\n      if (existing === undefined) {\n        throw new FsError(`cannot edit \"${target.displayPath}\": file changed since it was read`, 'FS_STALE_VERSION')\n      }\n      if (entryType(existing) !== 'file') {\n        throw new FsError(`cannot edit \"${target.displayPath}\": not a regular file`, 'FS_NOT_REGULAR_FILE')\n      }\n      if (expected !== undefined && entryVersion(existing) !== expected.version) {\n        throw new FsError(`cannot edit \"${target.displayPath}\": file changed since it was read`, 'FS_STALE_VERSION')\n      }\n      const raw = await this.readForEdit(target, signal)\n      const before = normalizeLineEndings(raw)\n      const after = literalEdit(before, edit, target.displayPath)\n      const storage = restoreLineEndings(after, detectsCrlf(raw))\n      const version = await this.writeAtomic(target, storage, existing, false, signal)\n      return { version, before, after }\n    })\n  }\n\n  private async withLock<T>(targetKey: string, operation: () => Promise<T>): Promise<T> {\n    const prior = this.locks.get(targetKey) ?? Promise.resolve()","sourceCodeStart":396,"sourceCodeEnd":432,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/e2b/fs-e2b/src/index.ts#L396-L432","documentation":"Error \"cannot edit \"${target.displayPath}\": file changed since it was read\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/e2b/fs-e2b/src/index.ts:414 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"}