Repository navigation
Scope Zig FFI checks explicitly in repositories with command-line tools - #93
Conversation
The FFI lexical rule currently scans all Zig, falsely rejecting command-line tools such as Atoma. Add literal tracked FFI roots while preserving the repository-wide default. Refuse invalid or empty explicit scopes, missing sources and scanner errors. Regression tests distinguish CLI I/O from forbidden FFI I/O; callers remain responsible for including the local import closure. Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
Expose the Zig FFI scope on the canonical reusable workflow and pin the tested action implementation. Other callers retain the repository-wide default. The control fixture is wired into the existing language-gate self-test. Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
Codex Review Summary: ✅ CompletedThis 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. |
|
Caution Review failedThe pull request is closed. Summary
Merge Risk:
|
|



Atoma’s estate audit rejects its CLI file I/O because the Zig FFI rule scans every Zig source. Add an optional, literal tracked FFI scope and forward it through the canonical reusable audit; the default remains the existing repository-wide scan.
Explicit scopes fail when invalid, empty, unmatched, or when a selected tracked file is missing. Scanner errors fail closed. The rule remains a lexical policy check: callers must include the FFI implementation’s local import closure; this does not claim semantic effect analysis.
Validation: tests/zig-ffi-scope.sh passes the positive CLI/FFI separation control and rejects forbidden FFI I/O, repository-wide CLI I/O, unmatched/traversing/exclusion scopes and missing files. The existing language-gate CI now runs those controls. This fixes an upstream cause of hyperpolymath/atoma#3.
The action implementation pin must remain reachable from the canonical main history before consumers adopt it; merge/pin closure will be checked before Atoma is updated.