Tool · pi · badlogic
grep
What matters here2 of 3 invariants hold · 1 unverified
- Regex dialectRust regexsrclike 8 of 11
- Announces truncationinvariantholdssrcall 18 hold
- Agrees with readinvariantholdssrc6 of 7 hold
- Gitignoreyessrclike 8 of 18
The facts the registry marks decision-changing, with how the other implementations answered. An invariant may be shown as pass/fail; a design choice never is, however unusual it looks.
Description, as the model sees it
Not recorded yet — the verbatim description has not been captured for this tool.
Registered schema
Not recorded yet — the schema as registered has not been captured for this tool.
Observed · Code search
compare all →| Fact | This tool | Across all implementations |
|---|---|---|
| Shape | 3 of 3 recorded | |
| What it searches | by-contentsrc | like 9 of 20by-name ×9 · both ×1 +1 |
| Tools per harness | two toolssrc | like 18 of 20no search tool ×1 · one tool ×1 |
| Search engine | bundled ripgrepsrc Downloaded on first use rather than vendored; the tool errors with "ripgrep (rg) is not available and could not be downloaded" if that fails, so it never silently falls back to something else. | like 6 of 19ripgrep ×2 · bundled fd ×1 +101 unverified |
| Query language | 2 of 2 recorded | |
| Regex dialect | Rust regexsrc A literal-string mode is available as a parameter, which is the escape hatch for a pattern the dialect will not take. | like 8 of 11varies by backend: Rust regex, git grep, POSIX, or JS RegExp ×1 · varies by backend: Rust regex, POSIX, or Python re ×1 +1 |
| Case sensitivity | sensitive, model can asksrc ignoreCase defaults to false and is exposed as a parameter. | like 3 of 6always insensitive, not configurable ×2 · whatever is on the machine ×113 unverified |
| Result shape | 4 of 4 recorded | |
| Line numbers in results | path:N:src Context lines use path-N- instead, so a match is distinguishable from its surroundings without counting. | like 2 of 11Line N: ×3 · line numbers, or paths only, or counts ×1 +5 |
| Result cap | 100 matches or 30KBsrc Whichever is hit first, plus a per-line character cap. | like 2 of 20100 files ×4 · 100 matches ×3 +10 |
| Announces truncationinvariant | holdssrc Separate notices for the match cap, the byte cap and the per-line cap; the line-cap notice names the read tool as the way to see the rest. | all 18 hold1 unverified |
| How "no matches" reads | sentencesrc "No matches found". | like 16 of 17empty stdout ×13 unverified |
| Agreement with read | 1 of 2 recorded | |
| Search line N is read line Ninvariant | holdssrc Both 1-indexed; rg --line-number counts from one and pi's read tool takes a 1-indexed offset. | 6 of 7 holdfalse ×12 unverified |
| Search counts as having read | ? | 2 others recordedno read tracking at all ×1 · yes — matched files are recorded as partial reads ×19 unverified |
| Scope | 2 of 3 recorded | |
| Respects .gitignore | yessrc Stated in the tool description the model sees, not only in the argv. | like 8 of 18no, deliberately ×2 · yes, plus .qwenignore ×2 +52 unverified |
| Binary content never enters contextinvariant | ? | 2 of 3 holdtrue ×2 · false ×18 unverified |
| Ordering | 1 of 1 recorded | |
| Result ordering | ripgrep traversal ordersrc No --sort flag. | like 5 of 16modification time, newest first ×5 · bounded discovery order; newest-first on request ×1 +54 unverified |