You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Extend the existing native Linux/macOS/Windows CI matrix with bounded jobs, weekly/manual qualification, locked builds/tests, and independent vendor/ignore unit/integration tests including doctests. Existing Rust, Unix installer, and Python agent integration coverage stays intact.
On Linux, validate both complete locked Cargo dependency graphs: exactly one ignore 0.4.25, directly resolved from tgrep-core to vendor/ignore; check all four fuzz targets with stable Cargo and existing libfuzzer tooling. Guard all three lockfiles against changes.
Perform the documented cargo install --path tgrep-cli --locked --root <private-root> and exercise that exact release executable: ordinary on-disk index and server content/files (default and hidden), shared attach/readiness/refresh, scan parity, stale-daemon fallback over a stale ordinary index, restart, detach, and worktree deletion while the daemon remains alive. Both indexed and filesystem-scan controls require backend diagnostics.
Eighteen focused helper tests cover graph/backend/parity rejection, lockfile mutation, deadlines, private installation, process-tree cleanup, partial-marker retries, and failure-log ordering. Windows children launch suspended, join an owned kill-on-close Job Object, then resume through documented thread APIs; cleanup waits for zero active descendants, even after direct-parent exit. Assignment/resume failures are fatal and reaped. Brief executable-image cleanup denials are logged/retried for at most five seconds; persistent failures remain fatal.
Generic root-level scripts/test_*.py discovery runs on every OS when files exist, alongside explicit nested suites. Standalone e9 has no root script tests, so that step skips rather than accepting Python 3.14's empty-inventory exit 5. Later benchmark tests are picked up without naming unmerged files or swallowing failures; the coordinator independently verified 14 benchmark tests execute in the combined snapshot.
Document scope, cost and reproduction in CONTRIBUTING.md. No runtime integration, dependency upgrades, vendored source edits, benchmark implementation dependencies, or release/signing changes.
Coverage and cost
PRs/main pushes retain the existing three-OS build/test matrix and add one Linux release install. Full installed-release coverage runs on all three platforms weekly (Monday 08:00 UTC) and via workflow_dispatch.
Test jobs are fail-fast disabled and capped at 40 minutes. Helper commands/readiness and cleanup are bounded. Private fixtures/installations are removed after owned processes stop; Cargo's normal target/download reuse is preserved.
Standalone main-based PR starting at e9d55db. Normal workspace tests automatically pick up later shared parity/lifecycle additions.
Latest completed Copilot review recommends approval with no findings. Initial scan-control, marker/log race, Windows orphan-tree, and local-content coverage findings were addressed with regressions; all inline threads resolved.
Locally: Windows full locked workspace/bench builds, Rust suite, independent vendor tests/doctests, final 18 helper tests, and final installed lifecycle. Native ext4 Linux full locked workspace/bench builds/tests, vendor tests/doctests, both dependency graphs/four fuzz targets, existing Python integration/installer checks, fmt/clippy, and installed qualification; final helper suite also independently passed in the coordinator's native Linux combined snapshot.
Workflow YAML/matrix/triggers/pinned actions verified. All three lockfiles unchanged. Native logs retained; temporary fixtures/snapshots cleaned.
An initial superseded macOS run hit the unchanged live-RSS exact-equality test; subsequent exact-head checks are green without weakening/skipping that test or making unrelated runtime changes. The helper intentionally uses stable text/file parity; exhaustive JSON parity and performance measurements remain in their independent workstreams.
Check locked vendored ignore and fuzz graphs in CI; qualify private installed release binaries on Linux PRs and all native platforms weekly or manually.
Co-authored-by: Copilot App <[email protected]>
Require filesystem evidence for the scan control, retry partial registration markers, and read failure logs after reaping the owned server. Cover these review findings with focused regressions and discover future root-level script tests without accepting test failures.
Co-authored-by: Copilot App <[email protected]>
Windows descendants survive after direct child exits
scripts/qualification/qualify.py:64
On Windows, tree cleanup is skipped as soon as the direct child has exited. A command can spawn a descendant that closes/redirects its inherited pipes and then exit; poll() is non-None, so taskkill /T is never called and the descendant can survive qualification or hold the temporary tree open. There is also a race where the child exits between this check and taskkill, whose failure is accepted because poll() then succeeds. Track these processes in a Windows Job Object (or another tree-lifetime mechanism independent of the parent remaining alive), and cover the exited-parent/live-descendant case.
Launch suspended, assign an owned kill-on-close Job Object, then resume through documented thread APIs. Wait for an empty job and release owned handles; test redirected descendants, assignment/resume failures, and bounded explicit Windows cleanup retries.
Co-authored-by: Copilot App <[email protected]>
The reason will be displayed to describe this comment to others. Learn more.
Copilot review overview
🔵 Needs a closer look
The advertised local-index content-search parity is not exercised.
Review effort: Balanced Findings: None
Previously missed (1)
In code that hasn't changed since last review
Local-index parity test omits content search
scripts/qualification/qualify.py:262
The local-index qualification only exercises --files; no content search runs before the server starts. A release with broken local indexed matching could therefore pass despite the PR and CONTRIBUTING.md claiming ordinary local-index search parity. Reuse parity here so both file listing and content search are checked against --no-index.
Check both default and hidden local content/file results against proven filesystem scans and require local-only content diagnostics.
Co-authored-by: Copilot App <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
vendor/ignoreunit/integration tests including doctests. Existing Rust, Unix installer, and Python agent integration coverage stays intact.ignore0.4.25, directly resolved fromtgrep-coretovendor/ignore; check all four fuzz targets with stable Cargo and existing libfuzzer tooling. Guard all three lockfiles against changes.cargo install --path tgrep-cli --locked --root <private-root>and exercise that exact release executable: ordinary on-disk index and server content/files (default and hidden), shared attach/readiness/refresh, scan parity, stale-daemon fallback over a stale ordinary index, restart, detach, and worktree deletion while the daemon remains alive. Both indexed and filesystem-scan controls require backend diagnostics.scripts/test_*.pydiscovery runs on every OS when files exist, alongside explicit nested suites. Standalone e9 has no root script tests, so that step skips rather than accepting Python 3.14's empty-inventory exit 5. Later benchmark tests are picked up without naming unmerged files or swallowing failures; the coordinator independently verified 14 benchmark tests execute in the combined snapshot.Coverage and cost
Final validation
Final head: e7b6250.
An initial superseded macOS run hit the unchanged live-RSS exact-equality test; subsequent exact-head checks are green without weakening/skipping that test or making unrelated runtime changes. The helper intentionally uses stable text/file parity; exhaustive JSON parity and performance measurements remain in their independent workstreams.