Skip to content

refactor(ignore): evaluate cached sensitive-extension array - #634

Draft
seonghobae wants to merge 7 commits into
masterfrom
bolt/optimize-array-any-13938346322779314152
Draft

refactor(ignore): evaluate cached sensitive-extension array#634
seonghobae wants to merge 7 commits into
masterfrom
bolt/optimize-array-any-13938346322779314152

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

Current exact authority

  • protected base: master@728f0f33323e43573d6664209891099502827d5d
  • exact head: 35b010472b02be70f94d6244d99c160e87ee41de
  • ancestry: ahead 3 / behind 0; merge base is exact protected master
  • effective protected-base delta: src/main/kotlin/html4tree/main.kt only
  • repository-wide .jules/bolt.md, util.kt, and UtilTest.kt are restored byte-for-byte to protected authority
  • lifecycle: Draft; measured performance and exact-head hosted evidence are incomplete

Review → repair

The original branch bundled two independent changes under an asserted GC/performance improvement: caching defaultSensitiveExtensions.toTypedArray() and replacing the custom public LinkedList/Entry implementation with ArrayDeque. It also removed tests for public Entry, first, and last surfaces while presenting the change as a performance-only optimization. No compatibility/version decision established that those public Kotlin symbols could be removed, and no representative allocation/profile evidence established that the queue replacement was required for buyer-visible performance.

Normal descendants preserve history but narrow the effective change. 15090883b222c8de8afe254d2f046104b79be18e restores generated Bolt doctrine to protected authority. 35b010472b02be70f94d6244d99c160e87ee41de restores util.kt and its tests byte-for-byte, so the performance experiment no longer silently removes a public source surface. No force-push, destructive rebase, no-op retrigger, or gate weakening was used.

Remaining candidate

The only remaining source delta precomputes Constants.defaultSensitiveExtensionsArray once and uses Array.any in process_ignore_file. That preserves the existing sensitive-extension values and predicate shape, but it is still a candidate micro-refactor rather than a measured optimization. Do not claim a material GC, throughput, or buyer-path p95 improvement from source inspection or test coverage alone.

If performance remains the rationale, compare protected and candidate implementations under the same JVM/Kotlin/runtime with realistic/right-cleared directory cardinalities and names. Record warm-up, repeated distribution/tail latency, allocation/GC/profile evidence, and whole crawl impact. If no material gain is demonstrated, restore the protected List.any implementation rather than retain speculative representation complexity.

Exact-head evidence

Fresh workflows on 35b010472b02be70f94d6244d99c160e87ee41de are non-terminal: CI 33992784793, Security Scan 33992784787, SAST Semgrep 33992784719, and CodeQL PR 33992784783 are queued/pending. Predecessor results do not transfer.

Keep Draft until one unchanged exact head has terminal required/security/SAST/CodeQL evidence, qualifying current review, and controlled performance evidence if performance is used as the merge rationale. No self-approval, bypass, force update, destructive rebase, generated-doctrine promotion, or unmeasured performance claim.

@google-labs-jules

Copy link
Copy Markdown

👋 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 @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@coderabbitai

coderabbitai Bot commented Sep 5, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae seonghobae changed the title ⚡ Bolt: Array 변환 및 ArrayDeque 도입으로 할당 오버헤드 최소화 refactor(ignore): evaluate cached sensitive-extension array Sep 5, 2026
@seonghobae
seonghobae marked this pull request as draft September 5, 2026 21:21
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