fix: report completion within the requested scope - #586
Conversation
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: f7ca16c408
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d384888a9a
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 855e95acd6
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4a377d56f9
ℹ️ 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".
|
@codex review Please review exact head |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 696d996b8d
ℹ️ 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".
|
@codex review Please review exact head |
|
Codex Review: Didn't find any major issues. Another round soon, please! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
|
@codex security review Please review exact head |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5e7a0de67a
ℹ️ 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".
| export function formatScopePath(path: string): string { | ||
| if ( | ||
| path.length > 0 && | ||
| !/[\s,;'"\\\u0000-\u001f\u007f-\u009f\p{Cf}\p{Default_Ignorable_Code_Point}]/u.test( |
There was a problem hiding this comment.
Disambiguate canonically equivalent path spellings
On filesystems that preserve Unicode normalization, such as ext4, distinct requested paths like src/café.ts (U+00E9) and src/café.ts (U+0065 U+0301) are both accepted but rendered identically because this fast path emits combining marks unchanged; the Markdown renderer has the same behavior. Fresh evidence beyond the fixed format-control cases is that canonically equivalent sequences remain raw at the current head, so normalize only for detection and escape the differing code points in both projections to preserve exact path identity.
AGENTS.md reference: sdk/typescript/AGENTS.md:L22-L23
Useful? React with 👍 / 👎.
|
@codex review Please review exact head |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: db6ccfb7dd
ℹ️ 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".
|
|
||
| describe("bundled plugin finding detail contracts", () => { | ||
| test("keeps the shipped example report equal to its canonical projection", async () => { | ||
| expect(projectFindingDetails({})).toBe( |
There was a problem hiding this comment.
Avoid snapshotting the entire generated report
Any harmless copy edit anywhere in the generated Markdown now breaks this contract test until the checked-in report is manually synchronized, even when the canonical JSON and report behavior remain correct. Assert the semantic fields or structural markers this test needs instead of byte-for-byte equality with the complete rendered report.
AGENTS.md reference: sdk/typescript/AGENTS.md:L35-L35
Useful? React with 👍 / 👎.
| return JSON.stringify(path).replace( | ||
| normalizationSensitive | ||
| ? /[^\u0020-\u007e]/gu | ||
| : /[\u007f-\u009f\u2028\u2029\p{Cf}\p{Default_Ignorable_Code_Point}]/gu, |
There was a problem hiding this comment.
Escape non-ASCII whitespace in scope paths
When a requested filename contains non-ASCII whitespace such as U+00A0, U+2007, or U+202F, the initial \s check selects JSON quoting, but this replacement set leaves the whitespace literal; the Python Markdown projection does the same. Consequently paths such as src/a b.ts and the distinct src/a<U+00A0>b.ts render visually identically in summaries and reports. Fresh evidence beyond the previously fixed format and normalization cases is that these separator characters remain unescaped in both current renderers; escape all non-ASCII whitespace in both projections.
AGENTS.md reference: sdk/typescript/AGENTS.md:L22-L23
Useful? React with 👍 / 👎.
Summary
Scoped scans now judge completion against what the user asked to scan. A scan can finish successfully when every requested path was reviewed, even if the request excluded the rest of the repository. Unfinished requested work and essential in-scope proof gaps remain partial and keep exit code 2.
Changes
Testing
jqintegration suites: 75 passed, 1 Windows-only test skipped, 0 failed.pnpm run types: passed.pnpm run format: passed.python3 -m py_compile _bundled_plugin/scripts/report_projection.py: passed.pnpm run build: passed.pnpm packandnode scripts/check-package.mjs <tarball>: passed for 259 package entries, including the public import, NodeNext types, CLI, 111 bundled plugin files, bundled Codex version, and a nested worker without a global Codex executable.Risk and rollout
This adds no command, flag, environment variable, default, or exit code. JSON retains exact path strings; only human presentation changes for ambiguous paths. A scan still cannot claim complete coverage when requested work or an essential in-scope proof gap remains. There is no database migration, schema-version change, or rewrite of existing reports. The bundled plugin version change follows the normal release flow.
Public disclosure review