batch3 T4 review polish: drop Stats hack, document cache race + total counting

- Drop unused Stats type import and its no-op suppression expression
- Comment getProjectFiles concurrent-miss race (benign, accepted)
- Comment findFiles deliberate post-limit counting (differs from grep)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-15 15:20:45 +00:00
parent 89f1b7e862
commit 015350b2e7
2 changed files with 5 additions and 4 deletions

View File

@@ -15,6 +15,9 @@ interface CacheEntry {
const cache = new Map<string, CacheEntry>(); // keyed by projectId
// Concurrent calls with a cold/stale cache may both spawn rg. The result is
// deterministic so they overwrite identically — no data corruption, just a
// rare extra subprocess. Acceptable for single-user mode.
export async function getProjectFiles(projectId: string, projectRoot: string): Promise<string[]> {
const current = await snapMtimes(projectRoot);
const cached = cache.get(projectId);

View File

@@ -1,7 +1,6 @@
import { readFile, readdir, stat } from 'node:fs/promises';
import { resolve, relative } from 'node:path';
import { spawn } from 'node:child_process';
import type { Stats } from 'node:fs';
import { pathGuard, PathScopeError } from './path_guard.js';
const MAX_FILE_BYTES = 5 * 1024 * 1024;
@@ -48,9 +47,6 @@ export interface FindFilesResult {
truncated: boolean;
}
// Suppress unused import warning — Stats is part of the public API surface
void (undefined as unknown as Stats);
export async function listDir(projectRoot: string, relPath: string): Promise<ListDirResult> {
const real = await pathGuard(projectRoot, relPath);
const s = await stat(real);
@@ -224,6 +220,8 @@ export async function findFiles(
const line = buf.slice(0, idx);
buf = buf.slice(idx + 1);
if (!line) continue;
// Keep counting after limit to report accurate `total` to the caller.
// grep kills early since the LLM doesn't need a total; this differs intentionally.
total++;
if (files.length < limit) {
files.push(relative(projectRoot, line) || line);