Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.
8 of your 49 findings came from Repobility's proprietary detections. ✓ Repobility tags below mark them.

Scan timing: clone 1.37s · analysis 19.47s · 1.8 MB · GitHub API rate-limit (preflight)

d3/d3

https://github.com/d3/d3 · scanned 2026-06-05 05:32 UTC (3 hours, 19 minutes ago) · 10 languages

71 findings (49 legacy + 22 scanner) 47th percentile · Javascript · small (2-20K LoC) Scanner says 92 (lower by 18)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 3 hours, 19 minutes ago · v2 · 60 findings from 2 sources. Findings combine the legacy security pipeline AND the multi-layer engine (atlas, wiring, flows, ranked) AND verified AI agent contributions.

JSON
Score breakdown â 2026-05-18-v5
Component Sub-score Weight Contribution
structure_score 100.0 0.15 15.00
security_score 55.0 0.25 13.75
testing_score 75.0 0.20 15.00
documentation_score 60.0 0.15 9.00
practices_score 90.0 0.15 13.50
code_quality 80.0 0.10 8.00
Overall 1.00 74.2
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all
Scan summary Repository scanned at 92.1/100 with 55.6% coverage. It contains 196 nodes across 0 cross-layer flows, written primarily in mixed languages. Engine surfaced 11 findings — concentrated in frontend (4), software (3), cicd (2). Risk profile is low: 0 critical, 0 high, 2 medium. Recommended next step: open the frontend layer findings first — that's where the highest-impact wins live.

Showing 50 of 60 findings. Click TP / FP to vote on a finding's accuracy — votes adjust the confidence weighting and improve detection across the platform.

high Legacy software dependency conf 0.90 ✓ Repobility Action `actions/checkout` pinned to mutable ref `@v4`
`uses: actions/checkout@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate.
.github/workflows/deploy.yml:19 dependencylegacy
high Legacy software dependency conf 0.90 ✓ Repobility Action `actions/checkout` pinned to mutable ref `@v4`
`uses: actions/checkout@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate.
.github/workflows/deploy.yml:18 dependencylegacy
high Legacy software dependency conf 0.90 ✓ Repobility Action `actions/configure-pages` pinned to mutable ref `@v4`
`uses: actions/configure-pages@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate.
.github/workflows/deploy.yml:30 dependencylegacy
high Legacy software dependency conf 0.90 ✓ Repobility Action `actions/deploy-pages` pinned to mutable ref `@v4`
`uses: actions/deploy-pages@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate.
.github/workflows/deploy.yml:36 dependencylegacy
high Legacy software dependency conf 0.90 ✓ Repobility Action `actions/setup-node` pinned to mutable ref `@v4`
`uses: actions/setup-node@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate.
.github/workflows/deploy.yml:23 dependencylegacy
high Legacy software dependency conf 0.90 ✓ Repobility Action `actions/upload-pages-artifact` pinned to mutable ref `@v3`
`uses: actions/upload-pages-artifact@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate.
.github/workflows/deploy.yml:31 dependencylegacy
high Legacy software dependency conf 0.88 braces: GHSA-grv7-fg5c-xmjg
Uncontrolled resource consumption in braces
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 cross-spawn: GHSA-3xgq-45jj-v275
Regular Expression Denial of Service (ReDoS) in cross-spawn
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 flatted: GHSA-25h7-pfq9-p65f
flatted vulnerable to unbounded recursion DoS in parse() revive phase
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 flatted: GHSA-rf6f-7fwh-wjgh
Prototype Pollution via parse() in NodeJS flatted
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 minimatch: GHSA-23c5-xmqv-rm74
minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 minimatch: GHSA-3ppc-4f35-3m26
minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 minimatch: GHSA-7r86-cg39-jmmj
minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 picomatch: GHSA-c2c7-rcm5-vvqj
Picomatch has a ReDoS vulnerability via extglob quantifiers
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 rollup: GHSA-gcx4-mw62-g8wm
DOM Clobbering Gadget found in rollup bundled scripts that leads to XSS
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 rollup: GHSA-mw96-cpmx-2vgc
Rollup 4 has Arbitrary File Write via Path Traversal
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 serialize-javascript: GHSA-5c6j-r48x-rmvq
Serialize JavaScript is Vulnerable to RCE via RegExp.flags and Date.prototype.toISOString()
yarn.lock dependencylegacy
high Legacy software dependency conf 0.88 vite: GHSA-c27g-q93r-2cwf
launch-editor vulnerable to command injection via the crafted request on Windows
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 ajv: GHSA-2g4f-4pwh-qvx6
ajv has ReDoS when using `$data` option
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 brace-expansion: GHSA-f886-m6hf-6m8v
brace-expansion: Zero-step sequence causes process hang and memory exhaustion
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 esbuild: GHSA-67mh-4wv8-2f99
esbuild enables any website to send any requests to the development server and read the response
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 js-yaml: GHSA-mh29-5h37-fv8m
js-yaml has prototype pollution in merge (<<)
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 mdast-util-to-hast: GHSA-4fh9-h7wg-q85m
mdast-util-to-hast has unsanitized class attribute
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 nanoid: GHSA-mwcw-c2x4-8c55
Predictable results in nanoid generation when given non-integer values
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.90 npm package `@observablehq/runtime` is 1 major version(s) behind (^5.7.3 -> 6.0.0)
`@observablehq/runtime` is pinned/resolved at ^5.7.3 but the latest stable release on the npm registry is 6.0.0 (1 major version(s) behind). Outdated dependencies accumulate unpatched bugs and make future security upgrades harder. This is the version-currency signal Dependabot version-update PRs ra…
package.json dependencylegacy
medium Legacy software dependency conf 0.90 npm package `@rollup/plugin-node-resolve` is 1 major version(s) behind (^15.2.3 -> 16.0.3)
`@rollup/plugin-node-resolve` is pinned/resolved at ^15.2.3 but the latest stable release on the npm registry is 16.0.3 (1 major version(s) behind). Outdated dependencies accumulate unpatched bugs and make future security upgrades harder. This is the version-currency signal Dependabot version-updat…
package.json dependencylegacy
medium Legacy software dependency conf 0.90 npm package `@rollup/plugin-terser` is 1 major version(s) behind (^0.4.0 -> 1.0.0)
`@rollup/plugin-terser` is pinned/resolved at ^0.4.0 but the latest stable release on the npm registry is 1.0.0 (1 major version(s) behind). Outdated dependencies accumulate unpatched bugs and make future security upgrades harder. This is the version-currency signal Dependabot version-update PRs ra…
package.json dependencylegacy
medium Legacy software dependency conf 0.88 picomatch: GHSA-3v7f-55p6-f55p
Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 postcss: GHSA-qx2v-qp2m-jg93
PostCSS has XSS via Unescaped </style> in its CSS Stringify Output
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 serialize-javascript: GHSA-76p7-773f-r4q5
Cross-site Scripting (XSS) in serialize-javascript
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 serialize-javascript: GHSA-qj8w-gfj5-8c6v
Serialize JavaScript has CPU Exhaustion Denial of Service via crafted array-like objects
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 vite: GHSA-356w-63v5-8wf4
Vite has an `server.fs.deny` bypass with an invalid `request-target`
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 vite: GHSA-4r4m-qw57-chr8
Vite has a `server.fs.deny` bypassed for `inline` and `raw` with `?import` query
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 vite: GHSA-4w7w-66w2-5vf9
Vite Vulnerable to Path Traversal in Optimized Deps `.map` Handling
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 vite: GHSA-859w-5945-r5v3
Vite's server.fs.deny bypassed with /. for files under project root
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 vite: GHSA-93m4-6634-74q7
vite allows server.fs.deny bypass via backslash on Windows
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 vite: GHSA-vg6x-rcgg-rjx6
Websites were able to send any requests to the development server and read the response in vite
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 vite: GHSA-x574-m823-4x7w
Vite bypasses server.fs.deny when using ?raw??
yarn.lock dependencylegacy
medium Legacy software dependency conf 0.88 vite: GHSA-xcj6-pq6g-qj4x
Vite allows server.fs.deny to be bypassed with .svg or relative paths
yarn.lock dependencylegacy
medium 9-layer cicd supply-chain conf 1.00 GitHub Actions workflow grants broad write permissions
CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions.
.github/workflows/deploy.yml supply-chaingithub-actionsleast-privilege
medium 9-layer security coverage conf 1.00 No auth library detected
The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). Either auth lives in custom code, in a separate service, or is missing.
coverageauth
low Legacy software dependency conf 0.88 brace-expansion: GHSA-v6h2-p8h4-qcjw
brace-expansion Regular Expression Denial of Service vulnerability
yarn.lock dependencylegacy
low Legacy software dependency conf 0.88 diff: GHSA-73rr-hh4g-fpgx
jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch
yarn.lock dependencylegacy
low Legacy software dependency conf 0.90 npm package `vitepress` is minor version(s) behind (^1.4.0 -> 1.6.4)
`vitepress` is pinned/resolved at ^1.4.0 but the latest stable release on the npm registry is 1.6.4 (minor version(s) behind). Outdated dependencies accumulate unpatched bugs and make future security upgrades harder. This is the version-currency signal Dependabot version-update PRs raise.
package.json dependencylegacy
low Legacy software dependency conf 0.88 vite: GHSA-g4jq-h2w9-997c
Vite middleware may serve files starting with the same name with the public directory
yarn.lock dependencylegacy
low Legacy software dependency conf 0.88 vite: GHSA-jqfw-vq24-v9c3
Vite's `server.fs` settings were not applied to HTML files
yarn.lock dependencylegacy
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: bundle.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: rollup.config.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: test/d3-test.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
actions/deploy-pages@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/deploy.yml:36 supply-chaingithub-actionspinned-dependencies
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/dce91b8d-f985-40da-acf1-293c651e1fb2/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/dce91b8d-f985-40da-acf1-293c651e1fb2/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.