Skip to content

feat(scanner): reject plugin deno publish and pod trunk push - #1189

Draft
seonghobae wants to merge 16 commits into
feat/claude-plugin-sbt-conan-1099from
feat/claude-plugin-deno-pod-1099
Draft

feat(scanner): reject plugin deno publish and pod trunk push#1189
seonghobae wants to merge 16 commits into
feat/claude-plugin-sbt-conan-1099from
feat/claude-plugin-deno-pod-1099

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Successor of #1188 / issue #1099. Does not Close those. sbt/conan stay #1188. gradle/luarocks stay #1187. cabal/mvn stay #1186. Pass is not Noema admission.

Unique delta

Fail closed when a plugin hook or manifest runs remaining JSR and CocoaPods writes that #1188 left as inventory:

  • deno publish as claude-plugin-deno-publish-command (CWE-269)
  • pod trunk push as claude-plugin-pod-trunk-push-command (CWE-250)
  • deno info, pod install, and pod lib lint stay inventory
  • sbt publish stays claude-plugin-sbt-publish-command
  • unquoted # comments, echo/printf lookalikes, assignment values, and marketplace description prose are not this class
  • README deno/pod wording is not a hook command
  • snippets are command labels, not tokens or secrets
  • composer publish and go upload are not invented; they are not real package-manager CLIs

#1188 remains owner of sbt/conan publish.

Evidence

  • RED 1b02a97 then GREEN c86ac8c then non-force restack merge 0ce7e13 onto live feat(scanner): reject plugin sbt publish and conan upload #1188 63c42a7
  • tests/test_claude_plugin_deno_pod.py plus sibling sbt/gradle/cabal lock
  • plugin coverage suite 587 passed on Python 3.13 before restack; focused deno+sbt 31 passed after restack

Relates to #1099. Relates to #1188.

Current quoted task repair — 2026-09-08

RED e41648b4bd8e0dd82c7e69b0c8eb7ccc56efb9e4 proves that executable deno "publish" and pod trunk 'push' were missed by both admission and capability inventory. Production GREEN 471a89fcd3c3e956f206e3bc4238ec8a4df5b2fd adds exact quoted-token admission without crossing line boundaries. Exact verification exposed that the inventory's shared terminal word boundary still rejected closing quotes; follow-up GREEN 0616f328803d91122d93d1bb1792df04d5953223 fixes that separate boundary without widening near-task names.

Traceability head c13142c6447877a65ad282a0ee482372b6efb7d9 is the current exact candidate. Full source and test AST parse with SyntaxWarning denied. Exact production-pattern probes pass Deno 5/5 positive and 4/4 negative, CocoaPods 4/4 positive and 5/5 negative, and capability inventory 4/4 positive and 4/4 negative. publishLocal-style near names, pod lib lint, cross-line token assembly, mismatched quotes, reporting/assignment prose, and closed here-document payloads remain outside these findings. This custom-base PR stays Draft until hosted integration, coverage, and independent current-head review exist; predecessor evidence does not transfer.

Current quoted CLI and suffix repair — 2026-09-08

Quoted CLI-name RED 18be77f1271b2c4d3f9dc0e59608715eb410c5af and strengthened receipt/inventory RED c0124b7ce4be48b007d0e6700863d577cbc70158 prove that "deno" publish and 'pod' trunk push bypassed admission and inventory. GREEN 31ff8f492843f8d6d34dc1a6e8445d9904c35172425a1d87ac365118958ff24e847a75e4e7509d29 repairs paired CLI tokens. Suffix RED d8cacddaa798a37d1bf79c030f40452590e0fa25 → exact GREEN head f7964beb79be28ca7acc46971a2137830d1781ca rejects quoted near-task suffixes without losing exact quoted tasks. Source/test AST passes; exact helpers pass 10/10 and inventory passes 4/4 positive plus 4/4 negative. This PR stays Draft: no hosted workflow exists on the custom base, and canonical #1173 no-op repair plus the remaining argv/sh -c parser gaps are not yet integrated.

Hook and manifest deno publish and pod trunk push must fail closed.
deno info, pod install, pod lib lint, comments, echo lookalikes,
assignment values, and README wording stay inventory. Relates to #1099.
Fail closed on executable deno publish and pod trunk push. deno info,
pod install, and pod lib lint stay inventory. sbt publish stays the
sbt class. Relates to #1099.
The inherited #1188 substitution case used an invalid \\` escape, so
the hook body was not a command substitution. Relates to #1099.
@coderabbitai

coderabbitai Bot commented Sep 8, 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 added a commit that referenced this pull request Sep 8, 2026
Exact head 0ce7e13 stacked on #1188 fails closed on deno publish and
pod trunk push. Relates to #1099.
@seonghobae seonghobae added area: security Security boundary, hardening, or vulnerability prevention enhancement New feature or request priority: high type: feature New or expanded product capability labels Sep 8, 2026 — with ChatGPT Codex Connector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: security Security boundary, hardening, or vulnerability prevention enhancement New feature or request priority: high type: feature New or expanded product capability

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant