Repository navigation
fix: index untracked files in graph builds - #1094
4 commits merged into
Conversation
|
Thank you for this PR. I tested update, build and detect-changes on real Git repos. Before I can merge it, please fix these:
After you push the fix, I will test it again. |
… into pr/code-review-graph-998
code-review-graph reviewOverall risk: 0.65 (MEDIUM) — 27 changed function(s)/class(es), 39 affected flow(s), 3 test gap(s) (0 with no tested caller found, 3 reached only through a caller) Risk-scored changes
Affected execution flows
Reached only through a callerNo test names these directly, but a tested caller reaches them along the call path shown. That is a path in the call graph, not a record of execution -- the caller's tests may never take this branch. Treat it as where to look, not as coverage: these count as gaps and are scored as untested.
Powered by code-review-graph — local-first analysis; no code leaves the CI runner. |
There was a problem hiding this comment.
🟡 Changes recommended
Tracked working-tree edits can be silently omitted when untracked files are present, and invalid UTF-8 filenames can crash full builds.
2 open issues
What changed in this PR
This PR addresses #998 by making untracked, non-ignored files visible to full graph builds and incremental updates, including builds rooted in monorepo subprojects.
Changes:
- Add untracked files to Git discovery and use working-tree status when the base ref cannot be resolved.
- Scope Git results to subprojects and skip symlinks during incremental indexing.
- Add regression coverage for untracked files, ignored files, subprojects, and fallback behavior.
| File | Description |
|---|---|
tests/test_integration_git.py |
Adds real-Git coverage for discovery, builds, subprojects, and symlinks. |
tests/test_incremental.py |
Updates discovery mocks and adds untracked-path assertions. |
tests/test_failure_reporting.py |
Verifies unresolved-base fallback includes working-tree changes. |
code_review_graph/incremental.py |
Expands file discovery and adjusts subproject and symlink handling. |
Review effort: Balanced
0160eb0
…ew of tirth8205#1094) An untracked file no longer hides a tracked edit that the diff against the base cannot see. An untracked name that is not valid UTF-8 no longer stops a build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ruby methods always carry their full lexical scope (tirth8205#933), so the leaf collision index from tirth8205#1087 now covers Python only, and the docs and tests say so. Generators are not component wrappers' functions (tirth8205#972 with tirth8205#1131). Partial graph coverage counts tracked files only (tirth8205#881 with tirth8205#1094). A pending marker recomputes all derived data (tirth8205#1105), so that test starts from a finished graph, the deleted-seed case now passes (tirth8205#1062 with tirth8205#673), and hooks.json keeps its events under a hooks key (tirth8205#1102 with tirth8205#1126). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…F-8 out of update and review (review of tirth8205#1094) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Pull Request
Linked issue
Related to #998
What & why
How it was tested
uv run ruff check code_review_graph/— passed.uv run pytest tests/ --tb=short -q— 5051 passed, 880 skipped, 3 xfailed, 2 xpassed, 1 warning.uv run pytest tests/test_integration_git.py::test_full_build_and_update_keep_untracked_files_in_monorepo_subproject --tb=short -q— 1 passed; the same test fails on the unchangedstagingbase at the node-existence assertion.Checklist
uv run pytest tests/ --tb=short -quv run ruff check code_review_graph/uv run mypy code_review_graph/ --ignore-missing-imports --no-strict-optionaldocs/, docstrings)