feat(pi-fff): search explicitly specified ignored paths via a scoped auxiliary index
Maintainers usually reply within 3 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 65/100
Research direction
Start by tracing the existing AuxFinderPool path for paths outside the workspace and the path handling used by fffind and ffgrep. Add coverage for ignored directories, ignored files, normal files, both tools, and unchanged behavior for searches without an explicit path; done means explicit existing ignored paths are searchable without changing the default workspace index.
Written by the indexing model from the issue text.
Description
Summary
fffind and ffgrep currently cannot search a Git-ignored file or directory when it is explicitly supplied through the path parameter and remains inside the current workspace.
This is consistent with FFF's current indexing design: ignored paths are omitted during the initial scan, and path narrows the existing index rather than reading from disk. However, it is inconvenient for agent workflows that need to inspect a specifically named dependency, generated file, local configuration, or build artifact.
This is a pi-fff-specific feature proposal, narrower than a general --no-ignore mode.
Example
Given:
node_modules/
and a real file at:
project/node_modules/example-package/package.json
an explicit search such as:
fffind(path="node_modules/example-package/", pattern="package.json")
ffgrep(path="node_modules/example-package/package.json", pattern="some-key")
currently returns no result when the main workspace index was used.
Proposed behavior
When the caller explicitly supplies a concrete existing path:
- For a directory, create a scoped auxiliary finder rooted at that directory.
- For a file, create a scoped auxiliary finder rooted at its parent directory and constrain the query to that file.
- Search that scoped finder, allowing the explicitly requested path to be discovered even if it was ignored by the parent workspace scan.
- Keep the current ignore-aware behavior for searches without an explicit path.
- Keep the scoped finder short-lived or bounded by the existing auxiliary-finder cache; do not index all ignored files eagerly.
The implementation could generalize the existing AuxFinderPool path used for paths outside the workspace. The internal lookup should require the requested root to match exactly rather than reusing a broader finder that may already have excluded the target subtree.
No change to the default workspace index is proposed, and this should not require a core FFF --no-ignore mode.
Acceptance criteria
- Normal
fffind/ffgrepcalls withoutpathbehave exactly as they do today. - An explicitly specified ignored directory can be searched by both tools.
- An explicitly specified ignored file can be searched by both tools.
- Existing tracked paths continue to work.
- Broad globs and nonexistent paths retain their current behavior unless deliberately included in a later change.
- Tests cover Git-ignored directories, Git-ignored files, normal files, and both tools.
Why this is useful
Agents often need to inspect files that are intentionally not part of the project index, including installed packages under node_modules, generated outputs, local configuration, and temporary tool results. Requiring a separate shell fallback makes the tool behavior inconsistent and loses FFF's normal path/search interface.
Related discussions:
- #108 — Does it support --no-ignore args?
- #406 — feat: option to search git ignored files
- #412 — Feature: Allow grep/glob outside search index
- #530 — API to control what is ignored and
--no-ignoreability to index everything
This proposal is intentionally narrower: explicit path selection acts as the opt-in, while ordinary searches remain ignore-aware.
- Dominant language
- Rust
- Stars
- 11.2k
- Forks
- 477
- Avg merge
- 2d 8h
- Merged PRs (30d)
- 31
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dmtrKovalenko/fff
-
triaged
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
dmtrKovalenko/fff#842 · 2 comments ·
Maintainers usually reply within 3 days
-
[Bug]: unchanged `logs/HEAD` rewrites during `git reflog expire --all` cause repeated `fff-git-status` work (0.11.0)Possibly taken @gustav-fff claimed this today. Opentriaged
Difficulty 4/5 3-5 days Newbie friendliness 25/100
dmtrKovalenko/fff#985 · 1 comment ·
Maintainers usually reply within 3 days
-
[Bug]: zlob walker ignores `.git/info/exclude`Possibly taken @gustav-fff claimed this 3 days ago. Opentriaged
Difficulty 4/5 3-5 days Newbie friendliness 35/100
dmtrKovalenko/fff#982 · 1 comment ·
Maintainers usually reply within 3 days
-
triaged
Difficulty 3/5 1-2 days Newbie friendliness 68/100
dmtrKovalenko/fff#980 · 1 comment ·
Maintainers usually reply within 3 days
-
[Bug]: pi-fff blocks session startup while indexing filesPossibly taken @adonis0147 claimed this 6 days ago. Openduplicate triaged
Difficulty 3/5 1-2 days Newbie friendliness 70/100
dmtrKovalenko/fff#975 · 1 comment ·
Maintainers usually reply within 3 days
All issues in dmtrKovalenko/fff
Similar issues
-
github_actions security
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
dekobon/big-code-analysis#1815 ·
Maintainers usually reply within 1 day
-
area: png-glitch bug P0 security
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
chikoski/png-glitch#45 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
nekko-labs/nekko-agent#1756 ·
Maintainers usually reply within 1 day
-
upstream
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
yologdev/yoyo-evolve#1138 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
gitbutlerapp/gitbutler#16982 ·
Maintainers usually reply within 1 day