Repository navigation
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9e287bb3e8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| // A listed name can itself span acronym boundaries (UI|Kit). | ||
| // Match only complete prefixes ending at a CamelCase boundary, | ||
| // never a substring such as UIKit in UIKitten or UIKithelper. | ||
| var end = start + 1; |
There was a problem hiding this comment.
Detect UIKit after one-letter lowercase prefixes
When the newly forbidden compound follows a one-letter lowercase prefix, such as aUIKitGlue or kUIKit2Version, splitsBefore suppresses the initial lower-to-upper boundary under its lowercase-leading-acronym rule. The fallback consequently consumes aUI/kUI as the first piece, so this prefix search never begins at U and the tokenizer emits no finding, allowing UIKit-specific identifiers to bypass the guard.
Useful? React with 👍 / 👎.
| /// Return whether to read an entry. Never follow source-shaped links: | ||
| /// rejection applies before the allowlist and does not trust the target. | ||
| fn sourceEntry(self: *Scan, path: []const u8, kind: std.Io.File.Kind) !bool { | ||
| if (!isSource(path)) return false; |
There was a problem hiding this comment.
Reject symlinked source directories before filtering extensions
When a tracked path such as src/cli/platform is a symlink to a directory containing imported .zig files, the walker reports the alias itself as .sym_link and does not descend into it. Because this extension check returns before examining the entry kind, the directory link is neither rejected nor scanned, so sources compiled through @import("platform/file.zig") can still contain forbidden provider identities without failing the guard.
Useful? React with 👍 / 👎.
) The CamelCase splitter breaks `UIKitView` into `UI|Kit|View`, so no single piece is `uikit` and the guard missed it (gap documented in #425). At each piece the tokenizer now tries joins of up to 3 adjacent pieces of the same run, longest first, before the piece alone. `UIKitView`, `UIKitGlue`, `UIKit2Glue` and `XCodeProject` flag; `UIntKind`, `GuiKit`, `UiKitchen`, `UIKeyboard` and `UIKitten` stay clean. Ports the spanning-compound rule of the closed #422. Allowlist recomputed: no file newly dirty, still 54. Claude-Session: https://claude.ai/code/session_01R2K5sJDL5Msn1uRTkybiDP
The agnosticism guard missed compound/package identities such as
Steamworksandlibsdl2-dev, provider tools/SDKs, and source-shaped symlinks. This change closes those gaps insrc/agnostic_guard_test.zigonly.steamworks,libsdl/libsdl2,butler,uikit,steamcmd,xcodebuild,adb, andemccidentities. Known compounds may span CamelCase boundaries (UIKitGlue), including numeric suffixes (UIKit2Glue). ASCII benign controls protect host tools, ordinary library names, and longer unrelated words..zig,.c, and.hsymlinks before reading or allowlisting them. Self-tests cover forbidden link names, neutral names hiding forbidden contents, dangling/cyclic targets, allowlisted paths, and the root sentinel. Regular source and non-source fixture controls remain covered.Validation with Zig 0.16.0:
zig build test-guard --summary all— 16 passed, 1 skipped. The real symlink fixture skips because Windows denies symlink creation; the direct entry-policy test passes.zig test src/agnostic_guard_test.zig -target x86_64-linux --test-no-exec, then ran it under the already installed Ubuntu WSL — all 17 passed, including real symlink creation and rejection.zig fmt --check src/agnostic_guard_test.zigandgit diff --checkpassed.Based on current
origin/development(26d93c7). The diff is guard-only; no packaging, provider runtime, target, or service extraction changes.Closes #419.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.