fix(runtime): end Grep options before the pattern in the sandboxed worker - #3734

Closed
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator
Closed

fix(runtime): end Grep options before the pattern in the sandboxed worker#3734
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator

Conversation

@udsy19

Copy link
Copy Markdown

fix(runtime): end Grep options before the pattern in the sandboxed worker

Summary

The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern starting with - as flags.
-webkit-box exits 1, and packages/runtime/src/filesystem-worker/operations.ts:425
maps exit 1 to { kind: 'grep', matches: [] } — the model is told the string is
absent from a file that contains it, silently.

The host-local sibling already passes -- first
(packages/runtime/src/workspace-executor.ts:455). That separator arrived in
#2961, which edited this worker's grep case in the same commit but left its argv
unchanged, so the two search paths have disagreed since. This propagates it.

Fixes#3733

Verification

Ran locally on macOS 26.5.1 (25F80), Node v26.7.0, ripgrep 15.1.0:

  • npm --workspace @maka/runtime run test:dist — 3090 tests, 0 failures
    (baseline on main was 3089/0; the delta is the new case).
  • Negative control: restored operations.ts from origin/main and rebuilt — the
    new test fails (actual [… '--max-count=50', '-webkit-box', …] vs expected
    ['--', '-webkit-box', …]) while the other 20 cases in the file still pass.
  • npm run lint, npm run format:check, npm run typecheck,
    npm run check:asf-headers — all clean.

Not run: Windows and Linux sandbox surfaces.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Claude Code — located the divergence, drafted the one-line fix
and the regression test. Reviewed, reproduced and verified by me before submitting.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from 6209c29 to b5a29f2CompareAugust 26, 2026 09:01
…rker
The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern beginning with `-` as flags. An
option-like pattern such as `-webkit-box` exits 1, which this worker
reports as `{ kind: 'grep', matches: [] }` — the model is told the string
is absent from a file that contains it, with no error anywhere.
The host-local sibling already passes `--` first
(packages/runtime/src/workspace-executor.ts). That separator was added by
its argv unchanged, so the two search paths have disagreed since. The
worker is the default path on macOS and Linux for every boundary except
bypass and external.
Signed-off-by: Udaya Tejas <udayatejas2004@gmail.com>
Generated-by: Claude Code
@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from b5a29f2 to d698f52CompareAugust 26, 2026 10:01
@M4n5ter

Copy link
Copy Markdown
Member

Relationship note: PRs #3734, #3735, and #3903 all close #3733, touch the same two runtime files, and apply the same -- separator fix to the sandboxed Grep invocation. I could not find a canonical/supersede statement in these PR bodies or comments. At the current snapshot, #3903 is the latest-created candidate, but the owner should decide the canonical PR. Please document that relationship and mark the other attempts as superseded/close them, or explain the distinct scope, so the issue is not merged three times.

This comment records the relationship only; it is not a merge decision.


Automated review note posted by @未开智选手. This is not an independent human review; a human should verify the conclusion.

@M4n5ter

Copy link
Copy Markdown
Member

Thank you for working on this fix. I compared this implementation with #3735 and #3903. All three correctly address the same root cause by placing the user-controlled pattern after ripgrep's -- option terminator.

#3903 was selected because its regression pins both the exact terminal argv order (['--', pattern, path]) and the full worker response with the smallest production patch. It has now been merged as 07e40feed27e748870b8144b3e37bf96c2748c52, so this equivalent implementation is superseded and I am closing it to keep one canonical fix.


Posted by an automated review agent operated by @M4n5ter. This is not an
independent human review and does not satisfy the committer review required by
CONTRIBUTING.md. A human is accountable for this comment — please push back if
anything here is wrong.

简体中文

本条评论由 @M4n5ter 运行的自动化审查程序发出。它不构成 CONTRIBUTING.md
所要求的独立人类审查,也不能替代人类审查。有人类对本条评论负责,如有错误请直接指出。

@M4n5terM4n5ter closed this Aug 27, 2026
Sign up for freeto 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.

bug(runtime): Grep reports "no matches" for any pattern starting with -

2 participants

@udsy19@M4n5ter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(runtime): end Grep options before the pattern in the sandboxed worker - #3734

Closed
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator
Closed

fix(runtime): end Grep options before the pattern in the sandboxed worker#3734
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator

Conversation

@udsy19

Copy link
Copy Markdown

fix(runtime): end Grep options before the pattern in the sandboxed worker

Summary

The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern starting with - as flags.
-webkit-box exits 1, and packages/runtime/src/filesystem-worker/operations.ts:425
maps exit 1 to { kind: 'grep', matches: [] } — the model is told the string is
absent from a file that contains it, silently.

The host-local sibling already passes -- first
(packages/runtime/src/workspace-executor.ts:455). That separator arrived in
#2961, which edited this worker's grep case in the same commit but left its argv
unchanged, so the two search paths have disagreed since. This propagates it.

Fixes#3733

Verification

Ran locally on macOS 26.5.1 (25F80), Node v26.7.0, ripgrep 15.1.0:

  • npm --workspace @maka/runtime run test:dist — 3090 tests, 0 failures
    (baseline on main was 3089/0; the delta is the new case).
  • Negative control: restored operations.ts from origin/main and rebuilt — the
    new test fails (actual [… '--max-count=50', '-webkit-box', …] vs expected
    ['--', '-webkit-box', …]) while the other 20 cases in the file still pass.
  • npm run lint, npm run format:check, npm run typecheck,
    npm run check:asf-headers — all clean.

Not run: Windows and Linux sandbox surfaces.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Claude Code — located the divergence, drafted the one-line fix
and the regression test. Reviewed, reproduced and verified by me before submitting.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from 6209c29 to b5a29f2CompareAugust 26, 2026 09:01
…rker
The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern beginning with `-` as flags. An
option-like pattern such as `-webkit-box` exits 1, which this worker
reports as `{ kind: 'grep', matches: [] }` — the model is told the string
is absent from a file that contains it, with no error anywhere.
The host-local sibling already passes `--` first
(packages/runtime/src/workspace-executor.ts). That separator was added by
its argv unchanged, so the two search paths have disagreed since. The
worker is the default path on macOS and Linux for every boundary except
bypass and external.
Signed-off-by: Udaya Tejas <udayatejas2004@gmail.com>
Generated-by: Claude Code
@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from b5a29f2 to d698f52CompareAugust 26, 2026 10:01
@M4n5ter

Copy link
Copy Markdown
Member

Relationship note: PRs #3734, #3735, and #3903 all close #3733, touch the same two runtime files, and apply the same -- separator fix to the sandboxed Grep invocation. I could not find a canonical/supersede statement in these PR bodies or comments. At the current snapshot, #3903 is the latest-created candidate, but the owner should decide the canonical PR. Please document that relationship and mark the other attempts as superseded/close them, or explain the distinct scope, so the issue is not merged three times.

This comment records the relationship only; it is not a merge decision.


Automated review note posted by @未开智选手. This is not an independent human review; a human should verify the conclusion.

@M4n5ter

Copy link
Copy Markdown
Member

Thank you for working on this fix. I compared this implementation with #3735 and #3903. All three correctly address the same root cause by placing the user-controlled pattern after ripgrep's -- option terminator.

#3903 was selected because its regression pins both the exact terminal argv order (['--', pattern, path]) and the full worker response with the smallest production patch. It has now been merged as 07e40feed27e748870b8144b3e37bf96c2748c52, so this equivalent implementation is superseded and I am closing it to keep one canonical fix.


Posted by an automated review agent operated by @M4n5ter. This is not an
independent human review and does not satisfy the committer review required by
CONTRIBUTING.md. A human is accountable for this comment — please push back if
anything here is wrong.

简体中文

本条评论由 @M4n5ter 运行的自动化审查程序发出。它不构成 CONTRIBUTING.md
所要求的独立人类审查,也不能替代人类审查。有人类对本条评论负责,如有错误请直接指出。

@M4n5terM4n5ter closed this Aug 27, 2026
Sign up for freeto 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.

bug(runtime): Grep reports "no matches" for any pattern starting with -

2 participants

@udsy19@M4n5ter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(runtime): end Grep options before the pattern in the sandboxed worker - #3734

Closed
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator
Closed

fix(runtime): end Grep options before the pattern in the sandboxed worker#3734
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator

Conversation

@udsy19

Copy link
Copy Markdown

fix(runtime): end Grep options before the pattern in the sandboxed worker

Summary

The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern starting with - as flags.
-webkit-box exits 1, and packages/runtime/src/filesystem-worker/operations.ts:425
maps exit 1 to { kind: 'grep', matches: [] } — the model is told the string is
absent from a file that contains it, silently.

The host-local sibling already passes -- first
(packages/runtime/src/workspace-executor.ts:455). That separator arrived in
#2961, which edited this worker's grep case in the same commit but left its argv
unchanged, so the two search paths have disagreed since. This propagates it.

Fixes#3733

Verification

Ran locally on macOS 26.5.1 (25F80), Node v26.7.0, ripgrep 15.1.0:

  • npm --workspace @maka/runtime run test:dist — 3090 tests, 0 failures
    (baseline on main was 3089/0; the delta is the new case).
  • Negative control: restored operations.ts from origin/main and rebuilt — the
    new test fails (actual [… '--max-count=50', '-webkit-box', …] vs expected
    ['--', '-webkit-box', …]) while the other 20 cases in the file still pass.
  • npm run lint, npm run format:check, npm run typecheck,
    npm run check:asf-headers — all clean.

Not run: Windows and Linux sandbox surfaces.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Claude Code — located the divergence, drafted the one-line fix
and the regression test. Reviewed, reproduced and verified by me before submitting.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from 6209c29 to b5a29f2CompareAugust 26, 2026 09:01
…rker
The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern beginning with `-` as flags. An
option-like pattern such as `-webkit-box` exits 1, which this worker
reports as `{ kind: 'grep', matches: [] }` — the model is told the string
is absent from a file that contains it, with no error anywhere.
The host-local sibling already passes `--` first
(packages/runtime/src/workspace-executor.ts). That separator was added by
its argv unchanged, so the two search paths have disagreed since. The
worker is the default path on macOS and Linux for every boundary except
bypass and external.
Signed-off-by: Udaya Tejas <udayatejas2004@gmail.com>
Generated-by: Claude Code
@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from b5a29f2 to d698f52CompareAugust 26, 2026 10:01
@M4n5ter

Copy link
Copy Markdown
Member

Relationship note: PRs #3734, #3735, and #3903 all close #3733, touch the same two runtime files, and apply the same -- separator fix to the sandboxed Grep invocation. I could not find a canonical/supersede statement in these PR bodies or comments. At the current snapshot, #3903 is the latest-created candidate, but the owner should decide the canonical PR. Please document that relationship and mark the other attempts as superseded/close them, or explain the distinct scope, so the issue is not merged three times.

This comment records the relationship only; it is not a merge decision.


Automated review note posted by @未开智选手. This is not an independent human review; a human should verify the conclusion.

@M4n5ter

Copy link
Copy Markdown
Member

Thank you for working on this fix. I compared this implementation with #3735 and #3903. All three correctly address the same root cause by placing the user-controlled pattern after ripgrep's -- option terminator.

#3903 was selected because its regression pins both the exact terminal argv order (['--', pattern, path]) and the full worker response with the smallest production patch. It has now been merged as 07e40feed27e748870b8144b3e37bf96c2748c52, so this equivalent implementation is superseded and I am closing it to keep one canonical fix.


Posted by an automated review agent operated by @M4n5ter. This is not an
independent human review and does not satisfy the committer review required by
CONTRIBUTING.md. A human is accountable for this comment — please push back if
anything here is wrong.

简体中文

本条评论由 @M4n5ter 运行的自动化审查程序发出。它不构成 CONTRIBUTING.md
所要求的独立人类审查,也不能替代人类审查。有人类对本条评论负责,如有错误请直接指出。

@M4n5terM4n5ter closed this Aug 27, 2026
Sign up for freeto 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.

bug(runtime): Grep reports "no matches" for any pattern starting with -

2 participants

@udsy19@M4n5ter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(runtime): end Grep options before the pattern in the sandboxed worker - #3734

Closed
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator
Closed

fix(runtime): end Grep options before the pattern in the sandboxed worker#3734
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator

Conversation

@udsy19

Copy link
Copy Markdown

fix(runtime): end Grep options before the pattern in the sandboxed worker

Summary

The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern starting with - as flags.
-webkit-box exits 1, and packages/runtime/src/filesystem-worker/operations.ts:425
maps exit 1 to { kind: 'grep', matches: [] } — the model is told the string is
absent from a file that contains it, silently.

The host-local sibling already passes -- first
(packages/runtime/src/workspace-executor.ts:455). That separator arrived in
#2961, which edited this worker's grep case in the same commit but left its argv
unchanged, so the two search paths have disagreed since. This propagates it.

Fixes#3733

Verification

Ran locally on macOS 26.5.1 (25F80), Node v26.7.0, ripgrep 15.1.0:

  • npm --workspace @maka/runtime run test:dist — 3090 tests, 0 failures
    (baseline on main was 3089/0; the delta is the new case).
  • Negative control: restored operations.ts from origin/main and rebuilt — the
    new test fails (actual [… '--max-count=50', '-webkit-box', …] vs expected
    ['--', '-webkit-box', …]) while the other 20 cases in the file still pass.
  • npm run lint, npm run format:check, npm run typecheck,
    npm run check:asf-headers — all clean.

Not run: Windows and Linux sandbox surfaces.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Claude Code — located the divergence, drafted the one-line fix
and the regression test. Reviewed, reproduced and verified by me before submitting.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from 6209c29 to b5a29f2CompareAugust 26, 2026 09:01
…rker
The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern beginning with `-` as flags. An
option-like pattern such as `-webkit-box` exits 1, which this worker
reports as `{ kind: 'grep', matches: [] }` — the model is told the string
is absent from a file that contains it, with no error anywhere.
The host-local sibling already passes `--` first
(packages/runtime/src/workspace-executor.ts). That separator was added by
its argv unchanged, so the two search paths have disagreed since. The
worker is the default path on macOS and Linux for every boundary except
bypass and external.
Signed-off-by: Udaya Tejas <udayatejas2004@gmail.com>
Generated-by: Claude Code
@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from b5a29f2 to d698f52CompareAugust 26, 2026 10:01
@M4n5ter

Copy link
Copy Markdown
Member

Relationship note: PRs #3734, #3735, and #3903 all close #3733, touch the same two runtime files, and apply the same -- separator fix to the sandboxed Grep invocation. I could not find a canonical/supersede statement in these PR bodies or comments. At the current snapshot, #3903 is the latest-created candidate, but the owner should decide the canonical PR. Please document that relationship and mark the other attempts as superseded/close them, or explain the distinct scope, so the issue is not merged three times.

This comment records the relationship only; it is not a merge decision.


Automated review note posted by @未开智选手. This is not an independent human review; a human should verify the conclusion.

@M4n5ter

Copy link
Copy Markdown
Member

Thank you for working on this fix. I compared this implementation with #3735 and #3903. All three correctly address the same root cause by placing the user-controlled pattern after ripgrep's -- option terminator.

#3903 was selected because its regression pins both the exact terminal argv order (['--', pattern, path]) and the full worker response with the smallest production patch. It has now been merged as 07e40feed27e748870b8144b3e37bf96c2748c52, so this equivalent implementation is superseded and I am closing it to keep one canonical fix.


Posted by an automated review agent operated by @M4n5ter. This is not an
independent human review and does not satisfy the committer review required by
CONTRIBUTING.md. A human is accountable for this comment — please push back if
anything here is wrong.

简体中文

本条评论由 @M4n5ter 运行的自动化审查程序发出。它不构成 CONTRIBUTING.md
所要求的独立人类审查,也不能替代人类审查。有人类对本条评论负责,如有错误请直接指出。

@M4n5terM4n5ter closed this Aug 27, 2026
Sign up for freeto 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.

bug(runtime): Grep reports "no matches" for any pattern starting with -

2 participants

@udsy19@M4n5ter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(runtime): end Grep options before the pattern in the sandboxed worker - #3734

Closed
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator
Closed

fix(runtime): end Grep options before the pattern in the sandboxed worker#3734
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator

Conversation

@udsy19

Copy link
Copy Markdown

fix(runtime): end Grep options before the pattern in the sandboxed worker

Summary

The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern starting with - as flags.
-webkit-box exits 1, and packages/runtime/src/filesystem-worker/operations.ts:425
maps exit 1 to { kind: 'grep', matches: [] } — the model is told the string is
absent from a file that contains it, silently.

The host-local sibling already passes -- first
(packages/runtime/src/workspace-executor.ts:455). That separator arrived in
#2961, which edited this worker's grep case in the same commit but left its argv
unchanged, so the two search paths have disagreed since. This propagates it.

Fixes#3733

Verification

Ran locally on macOS 26.5.1 (25F80), Node v26.7.0, ripgrep 15.1.0:

  • npm --workspace @maka/runtime run test:dist — 3090 tests, 0 failures
    (baseline on main was 3089/0; the delta is the new case).
  • Negative control: restored operations.ts from origin/main and rebuilt — the
    new test fails (actual [… '--max-count=50', '-webkit-box', …] vs expected
    ['--', '-webkit-box', …]) while the other 20 cases in the file still pass.
  • npm run lint, npm run format:check, npm run typecheck,
    npm run check:asf-headers — all clean.

Not run: Windows and Linux sandbox surfaces.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Claude Code — located the divergence, drafted the one-line fix
and the regression test. Reviewed, reproduced and verified by me before submitting.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from 6209c29 to b5a29f2CompareAugust 26, 2026 09:01
…rker
The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern beginning with `-` as flags. An
option-like pattern such as `-webkit-box` exits 1, which this worker
reports as `{ kind: 'grep', matches: [] }` — the model is told the string
is absent from a file that contains it, with no error anywhere.
The host-local sibling already passes `--` first
(packages/runtime/src/workspace-executor.ts). That separator was added by
its argv unchanged, so the two search paths have disagreed since. The
worker is the default path on macOS and Linux for every boundary except
bypass and external.
Signed-off-by: Udaya Tejas <udayatejas2004@gmail.com>
Generated-by: Claude Code
@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from b5a29f2 to d698f52CompareAugust 26, 2026 10:01
@M4n5ter

Copy link
Copy Markdown
Member

Relationship note: PRs #3734, #3735, and #3903 all close #3733, touch the same two runtime files, and apply the same -- separator fix to the sandboxed Grep invocation. I could not find a canonical/supersede statement in these PR bodies or comments. At the current snapshot, #3903 is the latest-created candidate, but the owner should decide the canonical PR. Please document that relationship and mark the other attempts as superseded/close them, or explain the distinct scope, so the issue is not merged three times.

This comment records the relationship only; it is not a merge decision.


Automated review note posted by @未开智选手. This is not an independent human review; a human should verify the conclusion.

@M4n5ter

Copy link
Copy Markdown
Member

Thank you for working on this fix. I compared this implementation with #3735 and #3903. All three correctly address the same root cause by placing the user-controlled pattern after ripgrep's -- option terminator.

#3903 was selected because its regression pins both the exact terminal argv order (['--', pattern, path]) and the full worker response with the smallest production patch. It has now been merged as 07e40feed27e748870b8144b3e37bf96c2748c52, so this equivalent implementation is superseded and I am closing it to keep one canonical fix.


Posted by an automated review agent operated by @M4n5ter. This is not an
independent human review and does not satisfy the committer review required by
CONTRIBUTING.md. A human is accountable for this comment — please push back if
anything here is wrong.

简体中文

本条评论由 @M4n5ter 运行的自动化审查程序发出。它不构成 CONTRIBUTING.md
所要求的独立人类审查,也不能替代人类审查。有人类对本条评论负责,如有错误请直接指出。

@M4n5terM4n5ter closed this Aug 27, 2026
Sign up for freeto 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.

bug(runtime): Grep reports "no matches" for any pattern starting with -

2 participants

@udsy19@M4n5ter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(runtime): end Grep options before the pattern in the sandboxed worker - #3734

Closed
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator
Closed

fix(runtime): end Grep options before the pattern in the sandboxed worker#3734
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator

Conversation

@udsy19

Copy link
Copy Markdown

fix(runtime): end Grep options before the pattern in the sandboxed worker

Summary

The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern starting with - as flags.
-webkit-box exits 1, and packages/runtime/src/filesystem-worker/operations.ts:425
maps exit 1 to { kind: 'grep', matches: [] } — the model is told the string is
absent from a file that contains it, silently.

The host-local sibling already passes -- first
(packages/runtime/src/workspace-executor.ts:455). That separator arrived in
#2961, which edited this worker's grep case in the same commit but left its argv
unchanged, so the two search paths have disagreed since. This propagates it.

Fixes#3733

Verification

Ran locally on macOS 26.5.1 (25F80), Node v26.7.0, ripgrep 15.1.0:

  • npm --workspace @maka/runtime run test:dist — 3090 tests, 0 failures
    (baseline on main was 3089/0; the delta is the new case).
  • Negative control: restored operations.ts from origin/main and rebuilt — the
    new test fails (actual [… '--max-count=50', '-webkit-box', …] vs expected
    ['--', '-webkit-box', …]) while the other 20 cases in the file still pass.
  • npm run lint, npm run format:check, npm run typecheck,
    npm run check:asf-headers — all clean.

Not run: Windows and Linux sandbox surfaces.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Claude Code — located the divergence, drafted the one-line fix
and the regression test. Reviewed, reproduced and verified by me before submitting.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from 6209c29 to b5a29f2CompareAugust 26, 2026 09:01
…rker
The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern beginning with `-` as flags. An
option-like pattern such as `-webkit-box` exits 1, which this worker
reports as `{ kind: 'grep', matches: [] }` — the model is told the string
is absent from a file that contains it, with no error anywhere.
The host-local sibling already passes `--` first
(packages/runtime/src/workspace-executor.ts). That separator was added by
its argv unchanged, so the two search paths have disagreed since. The
worker is the default path on macOS and Linux for every boundary except
bypass and external.
Signed-off-by: Udaya Tejas <udayatejas2004@gmail.com>
Generated-by: Claude Code
@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from b5a29f2 to d698f52CompareAugust 26, 2026 10:01
@M4n5ter

Copy link
Copy Markdown
Member

Relationship note: PRs #3734, #3735, and #3903 all close #3733, touch the same two runtime files, and apply the same -- separator fix to the sandboxed Grep invocation. I could not find a canonical/supersede statement in these PR bodies or comments. At the current snapshot, #3903 is the latest-created candidate, but the owner should decide the canonical PR. Please document that relationship and mark the other attempts as superseded/close them, or explain the distinct scope, so the issue is not merged three times.

This comment records the relationship only; it is not a merge decision.


Automated review note posted by @未开智选手. This is not an independent human review; a human should verify the conclusion.

@M4n5ter

Copy link
Copy Markdown
Member

Thank you for working on this fix. I compared this implementation with #3735 and #3903. All three correctly address the same root cause by placing the user-controlled pattern after ripgrep's -- option terminator.

#3903 was selected because its regression pins both the exact terminal argv order (['--', pattern, path]) and the full worker response with the smallest production patch. It has now been merged as 07e40feed27e748870b8144b3e37bf96c2748c52, so this equivalent implementation is superseded and I am closing it to keep one canonical fix.


Posted by an automated review agent operated by @M4n5ter. This is not an
independent human review and does not satisfy the committer review required by
CONTRIBUTING.md. A human is accountable for this comment — please push back if
anything here is wrong.

简体中文

本条评论由 @M4n5ter 运行的自动化审查程序发出。它不构成 CONTRIBUTING.md
所要求的独立人类审查,也不能替代人类审查。有人类对本条评论负责,如有错误请直接指出。

@M4n5terM4n5ter closed this Aug 27, 2026
Sign up for freeto 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.

bug(runtime): Grep reports "no matches" for any pattern starting with -

2 participants

@udsy19@M4n5ter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(runtime): end Grep options before the pattern in the sandboxed worker - #3734

Closed
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator
Closed

fix(runtime): end Grep options before the pattern in the sandboxed worker#3734
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator

Conversation

@udsy19

Copy link
Copy Markdown

fix(runtime): end Grep options before the pattern in the sandboxed worker

Summary

The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern starting with - as flags.
-webkit-box exits 1, and packages/runtime/src/filesystem-worker/operations.ts:425
maps exit 1 to { kind: 'grep', matches: [] } — the model is told the string is
absent from a file that contains it, silently.

The host-local sibling already passes -- first
(packages/runtime/src/workspace-executor.ts:455). That separator arrived in
#2961, which edited this worker's grep case in the same commit but left its argv
unchanged, so the two search paths have disagreed since. This propagates it.

Fixes#3733

Verification

Ran locally on macOS 26.5.1 (25F80), Node v26.7.0, ripgrep 15.1.0:

  • npm --workspace @maka/runtime run test:dist — 3090 tests, 0 failures
    (baseline on main was 3089/0; the delta is the new case).
  • Negative control: restored operations.ts from origin/main and rebuilt — the
    new test fails (actual [… '--max-count=50', '-webkit-box', …] vs expected
    ['--', '-webkit-box', …]) while the other 20 cases in the file still pass.
  • npm run lint, npm run format:check, npm run typecheck,
    npm run check:asf-headers — all clean.

Not run: Windows and Linux sandbox surfaces.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Claude Code — located the divergence, drafted the one-line fix
and the regression test. Reviewed, reproduced and verified by me before submitting.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from 6209c29 to b5a29f2CompareAugust 26, 2026 09:01
…rker
The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern beginning with `-` as flags. An
option-like pattern such as `-webkit-box` exits 1, which this worker
reports as `{ kind: 'grep', matches: [] }` — the model is told the string
is absent from a file that contains it, with no error anywhere.
The host-local sibling already passes `--` first
(packages/runtime/src/workspace-executor.ts). That separator was added by
its argv unchanged, so the two search paths have disagreed since. The
worker is the default path on macOS and Linux for every boundary except
bypass and external.
Signed-off-by: Udaya Tejas <udayatejas2004@gmail.com>
Generated-by: Claude Code
@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from b5a29f2 to d698f52CompareAugust 26, 2026 10:01
@M4n5ter

Copy link
Copy Markdown
Member

Relationship note: PRs #3734, #3735, and #3903 all close #3733, touch the same two runtime files, and apply the same -- separator fix to the sandboxed Grep invocation. I could not find a canonical/supersede statement in these PR bodies or comments. At the current snapshot, #3903 is the latest-created candidate, but the owner should decide the canonical PR. Please document that relationship and mark the other attempts as superseded/close them, or explain the distinct scope, so the issue is not merged three times.

This comment records the relationship only; it is not a merge decision.


Automated review note posted by @未开智选手. This is not an independent human review; a human should verify the conclusion.

@M4n5ter

Copy link
Copy Markdown
Member

Thank you for working on this fix. I compared this implementation with #3735 and #3903. All three correctly address the same root cause by placing the user-controlled pattern after ripgrep's -- option terminator.

#3903 was selected because its regression pins both the exact terminal argv order (['--', pattern, path]) and the full worker response with the smallest production patch. It has now been merged as 07e40feed27e748870b8144b3e37bf96c2748c52, so this equivalent implementation is superseded and I am closing it to keep one canonical fix.


Posted by an automated review agent operated by @M4n5ter. This is not an
independent human review and does not satisfy the committer review required by
CONTRIBUTING.md. A human is accountable for this comment — please push back if
anything here is wrong.

简体中文

本条评论由 @M4n5ter 运行的自动化审查程序发出。它不构成 CONTRIBUTING.md
所要求的独立人类审查,也不能替代人类审查。有人类对本条评论负责,如有错误请直接指出。

@M4n5terM4n5ter closed this Aug 27, 2026
Sign up for freeto 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.

bug(runtime): Grep reports "no matches" for any pattern starting with -

2 participants

@udsy19@M4n5ter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(runtime): end Grep options before the pattern in the sandboxed worker - #3734

Closed
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator
Closed

fix(runtime): end Grep options before the pattern in the sandboxed worker#3734
udsy19 wants to merge 1 commit into
apache:mainfrom
udsy19:fix/worker-grep-pattern-separator

Conversation

@udsy19

Copy link
Copy Markdown

fix(runtime): end Grep options before the pattern in the sandboxed worker

Summary

The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern starting with - as flags.
-webkit-box exits 1, and packages/runtime/src/filesystem-worker/operations.ts:425
maps exit 1 to { kind: 'grep', matches: [] } — the model is told the string is
absent from a file that contains it, silently.

The host-local sibling already passes -- first
(packages/runtime/src/workspace-executor.ts:455). That separator arrived in
#2961, which edited this worker's grep case in the same commit but left its argv
unchanged, so the two search paths have disagreed since. This propagates it.

Fixes#3733

Verification

Ran locally on macOS 26.5.1 (25F80), Node v26.7.0, ripgrep 15.1.0:

  • npm --workspace @maka/runtime run test:dist — 3090 tests, 0 failures
    (baseline on main was 3089/0; the delta is the new case).
  • Negative control: restored operations.ts from origin/main and rebuilt — the
    new test fails (actual [… '--max-count=50', '-webkit-box', …] vs expected
    ['--', '-webkit-box', …]) while the other 20 cases in the file still pass.
  • npm run lint, npm run format:check, npm run typecheck,
    npm run check:asf-headers — all clean.

Not run: Windows and Linux sandbox surfaces.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Claude Code — located the divergence, drafted the one-line fix
and the regression test. Reviewed, reproduced and verified by me before submitting.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from 6209c29 to b5a29f2CompareAugust 26, 2026 09:01
…rker
The filesystem worker appended the model-supplied Grep pattern as a bare
positional, so ripgrep parsed a pattern beginning with `-` as flags. An
option-like pattern such as `-webkit-box` exits 1, which this worker
reports as `{ kind: 'grep', matches: [] }` — the model is told the string
is absent from a file that contains it, with no error anywhere.
The host-local sibling already passes `--` first
(packages/runtime/src/workspace-executor.ts). That separator was added by
its argv unchanged, so the two search paths have disagreed since. The
worker is the default path on macOS and Linux for every boundary except
bypass and external.
Signed-off-by: Udaya Tejas <udayatejas2004@gmail.com>
Generated-by: Claude Code
@M4n5ter
M4n5terforce-pushed the fix/worker-grep-pattern-separator branch from b5a29f2 to d698f52CompareAugust 26, 2026 10:01
@M4n5ter

Copy link
Copy Markdown
Member

Relationship note: PRs #3734, #3735, and #3903 all close #3733, touch the same two runtime files, and apply the same -- separator fix to the sandboxed Grep invocation. I could not find a canonical/supersede statement in these PR bodies or comments. At the current snapshot, #3903 is the latest-created candidate, but the owner should decide the canonical PR. Please document that relationship and mark the other attempts as superseded/close them, or explain the distinct scope, so the issue is not merged three times.

This comment records the relationship only; it is not a merge decision.


Automated review note posted by @未开智选手. This is not an independent human review; a human should verify the conclusion.

@M4n5ter

Copy link
Copy Markdown
Member

Thank you for working on this fix. I compared this implementation with #3735 and #3903. All three correctly address the same root cause by placing the user-controlled pattern after ripgrep's -- option terminator.

#3903 was selected because its regression pins both the exact terminal argv order (['--', pattern, path]) and the full worker response with the smallest production patch. It has now been merged as 07e40feed27e748870b8144b3e37bf96c2748c52, so this equivalent implementation is superseded and I am closing it to keep one canonical fix.


Posted by an automated review agent operated by @M4n5ter. This is not an
independent human review and does not satisfy the committer review required by
CONTRIBUTING.md. A human is accountable for this comment — please push back if
anything here is wrong.

简体中文

本条评论由 @M4n5ter 运行的自动化审查程序发出。它不构成 CONTRIBUTING.md
所要求的独立人类审查,也不能替代人类审查。有人类对本条评论负责,如有错误请直接指出。

@M4n5terM4n5ter closed this Aug 27, 2026
Sign up for freeto 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.

bug(runtime): Grep reports "no matches" for any pattern starting with -

2 participants

@udsy19@M4n5ter