fix: fingerprint ignored files and build with esbuild alone - #38
Merged
Merged
Conversation
A plan-mode run that wrote a git-ignored file, `.env` say, passed as read-only: the fingerprint asked git, and git never lists ignored files. The git snapshot now also hashes the mode, size and mtime of every ignored entry, with a wholly ignored directory counting as one entry, so the write is seen while node_modules stays a single lstat. Also: - Measured the fingerprint: about 75 ms per snapshot on a clean 3,500-file repository and about 750 ms with 300 modified and 3,000 untracked files. The README records the numbers. - Verified against agy 1.2.2 that plan mode is advisory with the permission bypass off as well as on; the docs no longer tie the caveat to the bypass. - Replaced tsup and the esbuild override with a direct esbuild invocation. tsup 8.5 still declares esbuild 0.27, so the override was a standing conflict; the build is now one tool with no pin. - Declared `os: [darwin, linux]`: the bridge kills process groups, which has no Windows equivalent, so npm now refuses the install instead of the bridge misbehaving at runtime. - CI runs the test job on macOS as well as Linux.
|
Warning Review limit reachedNext included review available in 10 minutes. View limit detailsLimit details: You’ve used all 3 included reviews currently available. Your 78 included PR review attempts over the past 7 days set your current allowance at 3 reviews per hour. Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. Review configuration: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (12)
Comment |
- Ignored directories are walked by metadata up to 1,000 entries each, cut by count so an unchanged tree still compares equal; dependency and build trees at the repository top stay a single entry. A rewrite inside build/ is now seen. One shared, deadline-checked walker serves git and non-git trees, so the ignored-entry loop cannot outlive the 10 s budget. - An untracked nested repository or a file name with a newline no longer drops the whole snapshot to the metadata scan. - The e2e suite pins AGY_DELEGATION_DEPTH=0 so an agent host cannot make the server under test refuse to delegate. - esbuild externals are the two runtime dependencies by name, so a stray devDependency import is bundled rather than left to fail at run time. - The build cleans dist with Node, and format and typecheck run once, on Linux.
An entry that vanished between git listing it and lstat reading it was hashed as missing; the next snapshot never lists it, so an unchanged tree compared as changed. Any such entry now makes the snapshot uncovered. Also: an untracked directory whose whole content is ignored is walked once, not again for each ignored directory git lists inside it; the deadline is checked before the entry cap; the untracked split no longer scans one list against the other.
The matrix renamed the job to test (os), so the required check the main ruleset names never reported and the merge was blocked. A small job named test now depends on the whole matrix.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
A plan-mode run that wrote a git-ignored file,
.envsay, passed asread-only: the fingerprint asked git, and git never lists ignored files.
The git snapshot now also hashes the mode, size and mtime of every ignored
entry, with a wholly ignored directory counting as one entry, so the write
is seen while node_modules stays a single lstat.
Also:
repository and about 750 ms with 300 modified and 3,000 untracked files.
The README records the numbers.
bypass off as well as on; the docs no longer tie the caveat to the bypass.
tsup 8.5 still declares esbuild 0.27, so the override was a standing
conflict; the build is now one tool with no pin.
os: [darwin, linux]: the bridge kills process groups, whichhas no Windows equivalent, so npm now refuses the install instead of the
bridge misbehaving at runtime.