Found during v0.9.7 release review (End User persona), building on the ripgrep record-isolation fix in ca9b34a (#1094).
grep() in packages/core/src/ripgrep.ts computes a skipped tally for a single aggregate Effect.logWarning, but the return value consumed by packages/opencode/src/tool/grep.ts is just Match[] — the skip count/reasons never reach the tool caller or the user.
Risk: a tree with many corrupted/oversized/non-UTF-8 files (or a systematic issue) now returns a partial result that reads exactly like an honest 'no matches' to both agent and user, with the only trace in a debug log almost nobody opens. This is the same class of silent-data-loss bug #1094 was written to fix, just one layer further out.
Suggested fix: thread the skip count (and maybe a sample of skip reasons) through to the tool result, surfaced as a one-line note when non-zero (e.g. 'N records skipped due to encoding/size issues').
Found during v0.9.7 release review (End User persona), building on the ripgrep record-isolation fix in ca9b34a (#1094).
grep()inpackages/core/src/ripgrep.tscomputes askippedtally for a single aggregateEffect.logWarning, but the return value consumed bypackages/opencode/src/tool/grep.tsis justMatch[]— the skip count/reasons never reach the tool caller or the user.Risk: a tree with many corrupted/oversized/non-UTF-8 files (or a systematic issue) now returns a partial result that reads exactly like an honest 'no matches' to both agent and user, with the only trace in a debug log almost nobody opens. This is the same class of silent-data-loss bug #1094 was written to fix, just one layer further out.
Suggested fix: thread the skip count (and maybe a sample of skip reasons) through to the tool result, surfaced as a one-line note when non-zero (e.g. 'N records skipped due to encoding/size issues').