Skip to content

feat(ingest): broad text-file coverage so real projects fully index - #138

Merged
ApiliumDevTeam merged 1 commit into
devfrom
feat/ingest-broad-file-coverage
Jul 21, 2026
Merged

feat(ingest): broad text-file coverage so real projects fully index#138
ApiliumDevTeam merged 1 commit into
devfrom
feat/ingest-broad-file-coverage

Conversation

@ApiliumDevTeam

Copy link
Copy Markdown
Contributor

Why

The ingest walk allowed only nine extensions (md/markdown/txt/rs/py/ts/js/toml/json). Most of a real codebase was silently dropped — a project in Swift, Kotlin, Java, Go, C/C++, Ruby, PHP, etc. indexed as almost nothing. (The symbol layer already supports tsx/jsx/go, but ingest filtered them out too.)

What

Replace the narrow allowlist with is_ingestable_file:

  • Broad allowlist of source/docs/config/web extensions (all languages the symbol layer supports, plus the long tail: swift, kt, java, c/cpp, cs, rb, php, scala, sh, sql, yaml, css/scss, vue, svelte, …).
  • Well-known extensionless files: Dockerfile, Makefile, README, LICENSE, CMakeLists.txt, Gemfile, …
  • Noise denylist: *.min.js, *.min.css, *.map, *.lock, *.generated.*, package-lock.json, pnpm-lock.yaml.

Safety net unchanged: .gitignore prunes build output, the UTF-8 read-skip drops binaries, and byte-bounded chunking keeps large files safe — so being inclusive stays memory-bounded.

Tests

4 new unit tests over is_ingestable_file (broad source/doc extensions; extensionless files; noise skipped; binaries/unknown skipped) + existing service::ingest suite (13 total) green. Clippy clean for the changed file.

The ingest walk allowed only nine extensions (md/markdown/txt/rs/py/ts/
js/toml/json), so most of a real codebase was silently dropped: a project
written in Swift, Kotlin, Java, Go, C/C++, Ruby, PHP, etc. indexed as
almost nothing.

Replace the narrow allowlist with is_ingestable_file: a broad
source/docs/config extension set plus well-known extensionless files
(Dockerfile, Makefile, README), minus a denylist of generated, minified,
and lock files that carry no semantic signal. .gitignore, the UTF-8 read
skip for binaries, and byte-bounded chunking remain the safety net, so
being inclusive stays memory-bounded.

Covered by four new unit tests over is_ingestable_file.
@ApiliumDevTeam
ApiliumDevTeam merged commit a8f70ac into dev Jul 21, 2026
17 checks passed
ApiliumDevTeam added a commit that referenced this pull request Jul 21, 2026
Broad text-file ingest coverage (#138) and git provenance recorded into
the signed DAG (#139), landed on main since v0.7.6.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant