perf(ignore): bind fallback directory listing to one snapshot - #774
seonghobae wants to merge 11 commits into
Conversation
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Current authority
master@728f0f33323e43573d6664209891099502827d5dea64ce03d8893d3591977bf393a235ae3f39dd67src/main/kotlin/html4tree/main.kt+src/test/kotlin/html4tree/IgnoreFileListingTest.ktonlyVerified scope
process_ignore_file()의dirFilesNames == nullfallback은 protected base에서.html4ignore가 유효한 경우 같은 directory에 대해File.list()를 두 번 호출할 수 있습니다. Normal crawler path는crawl_directories()가 이미 이름 배열을 전달하므로 이 fallback을 buyer hot path로 간주하지 않습니다.Current source captures
dirFilesNames ?: curr_dir.list()once and reuses that snapshot for ignore-pattern matching and hidden/sensitive-name filtering. This is a filesystem-snapshot consistency/call-count change; quantified latency, GC, or whole-crawl speedup is not established.Executable contract
IgnoreFileListingTestuses aFilesubclass whose successivelist()calls intentionally return different snapshots..html4ignore, fallback processing must calllist()exactly once and use that same first snapshot for both glob matching and hidden-file exclusion;dirFilesNamesis supplied,list()must not be called at all and the supplied names remain the only listing authority.Against protected base, the first case is deterministic source-level RED: the old implementation calls
list()once inside the ignore-file block and again for hidden/sensitive filtering, so the call count becomes 2 and the second snapshot can change the exclusion result. On the current source the same contract is expected GREEN. Hosted execution is still required; source reasoning is not reported as hosted GREEN.Drift repair
A generated continuation re-added retrospective
.jules/bolt.mddoctrine after the earlier cleanup. Its commit remains in ancestry. Ordinary non-force descendants restore.jules/bolt.mdbyte-for-byte to the protected blob and add only the focused executable contract above. Current protected-base diff contains no.julespath.Remaining acceptance
Current exact workflows are freshly materialized and nonterminal: CI
35991201304, Security35991201461, CodeQL PR35991201403, SAST Semgrep35991201536. Keep Draft until the unchanged exact head has terminal required checks and current-head review.If this optimization is promoted as performance work, first demonstrate a representative/right-cleared direct-call workload where the fallback is actually used, then compare the same filesystem/runtime/host with declared warm-up/repetition policy, listing syscall count and wall/CPU median/p95. If the buyer path does not use this fallback, do not claim buyer-visible performance improvement.
No force push, destructive rebase, self-approval, source-neutral rerun, predecessor-GREEN transfer, gate weakening, or unsupported performance claim.