Skip to content

feat: add deps triage core, scenario tests, and CI - #1

Open
andyhorn wants to merge 5 commits into
mainfrom
feat/deps-triage-plugin
Open

andyhorn wants to merge 5 commits into
mainfrom
feat/deps-triage-plugin

Conversation

@andyhorn

@andyhorn andyhorn commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Adds the pure core of the deps plugin (plugins/deps/scripts/lib/core/): GraphQL snapshot normalization, Dependabot updated-dependencies parsing with 0.x semver adjustment, per-fact classification into attention / waiting / blocked / needs-analysis / routine, a comment sanitizer, the analyst write guard (default-deny allowlist of read-only gh/git commands plus text filters, no output redirection), and strict CLI argument validation.
  • Scenario-driven tests (test/deps/) built from trimmed real gh captures (chore(deps): bump fast-json-stringify from 6.3.0 to 7.0.1 supabase/storage#1495, chore(deps): bump the github-actions group across 1 directory with 15 updates ROCm/rocm-libraries#13313, a Renovate PR) assert exact {bucket, facts} for every required scenario, plus security ordering, determinism, and source-rule tests that enforce core purity and the no-write-verb rule.
  • CI (.github/workflows/ci.yml) runs node --test on Node 22 and LTS and validates the marketplace and existing plugins with --strict. No plugin.json yet, so plugins/deps is not a plugin until PR 2.

Data-driven deviations from the plan's wording: provenance reads web-flow from the commit signature (the committer is GitHub <noreply@github.com>) and pins Dependabot's numeric noreply email; mergeStateStatus: BLOCKED is informational (normal under branch protection); security comes from the repo's open Dependabot alerts (an alert whose patched version is at or below the bump's new version) or a security label. Live testing showed Dependabot bodies carry no vulnerability section and no label by default.

Plan

docs/plan/2026-10-09-feat-deps-triage-plugin-plan.md — PR 1 of 3 (Core and CI). Stacked: PR 2 builds on this branch.

Test plan

  • node --test test/deps/*.test.mjs passes (Node 24 locally; Node 22 verified by the builder)
  • Core purity grep and write-verb grep return no matches (also enforced in source-rules.test.mjs)
  • claude plugin validate --strict passes for the marketplace, plugins/git, plugins/workflow
  • CI green on Node 22 and LTS

🤖 Generated with Claude Code

https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz

andyhorn and others added 4 commits October 9, 2026 12:29
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz
Implements PR 1 of the deps plugin plan: pure classification, metadata,
sanitizer, write-guard and argument modules with scenario-driven tests
built from real Dependabot captures, plus CI on Node 22 and LTS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz
Deny non-gh/git commands except read-only text filters, deny output
redirection, guard the bare agent name, flatten the shell tokenizer into
its own module, compute bumps once in classify, and enforce the purity
and write-verb rules in the test suite.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz
Dependabot PR bodies carry no vulnerability section and no security
label by default, so match the repo's open Dependabot alerts against each
PR's bumps instead of scanning the body.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz
Sign up for free to 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.

1 participant