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.
111 of your 140 findings came from Repobility's proprietary detections. ✓ Repobility tags below mark them.

Scan timing: clone 9.15s · analysis 16.04s · 62.4 MB · GitHub API rate-limit (preflight)

facebook/openzl

https://github.com/facebook/openzl · scanned 2026-06-05 23:57 UTC (4 days, 2 hours ago) · 10 languages

324 raw signals (136 security + 188 graph) 11/13 scanners ran 95th percentile · C · large (100-500K LoC) System graph score 84 (higher by 3)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 4 days, 2 hours ago · v2 · 104 actionable findings from 2 signal sources. 101 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

JSON
Score breakdown â 2026-05-18-v5
Component Sub-score Weight Contribution
structure_score 65.0 0.15 9.75
security_score 100.0 0.25 25.00
testing_score 100.0 0.20 20.00
documentation_score 98.0 0.15 14.70
practices_score 70.0 0.15 10.50
code_quality 66.0 0.10 6.60
Overall 1.00 86.5
security_score may be inflated — optional security scanners were skipped on this fast scan
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all
Scan summary Quality grade A- (86/100). Dimensions: security 100, maintainability 65. 136 findings (33 security). 385,476 lines analyzed.

Showing 64 of 104 actionable findings. 205 raw detector signals were grouped into reader-sized issues. Click TP / FP to vote on a finding's accuracy — votes adjust the confidence weighting and improve detection across the platform.

high Security checks security path traversal conf 0.80 [SEC013] Path Traversal — User Input in File Path: User-controlled input used in file path without sanitization. Allows reading arbitrary files.
Use os.path.realpath() and verify the path starts with your expected base directory. Use secure_filename() for uploads.
examples/zs2_struct.c:199
high Security checks security path traversal conf 0.80 [SEC013] Path Traversal — User Input in File Path: User-controlled input used in file path without sanitization. Allows reading arbitrary files.
Use os.path.realpath() and verify the path starts with your expected base directory. Use secure_filename() for uploads.
examples/zs2_pipeline.c:136
low Security checks cicd CI/CD security conf 0.90 ✓ Repobility 38 occurrences GitHub Action is tag-pinned rather than SHA-pinned
[MINED115] 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 + lo…
10 files, 38 locations
.github/workflows/dev-ci.yml:42, 67, 126, 157, 176, 185, 194, 196, +4 more (14 hits)
.github/workflows/deploy-docs.yml:32, 36, 48, 58, 72 (6 hits)
.github/workflows/test-deploy-docs.yml:18, 22, 34 (6 hits)
.github/workflows/cmake-ci.yml:76, 144, 153 (3 hits)
.github/workflows/release-binaries.yml:36, 65, 124 (3 hits)
.github/workflows/windows-ci.yml:62, 162 (2 hits)
.github/workflows/cross-platform-ci.yml:64
.github/workflows/openzl-demo-wheels.yml:61
CI/CD securitySupply chainGitHub Actions
high System graph security security conf 1.00 Insecure pattern 'eval_used' in tools/compressor_serialization/to_cbor.py:70
Found a known-risky pattern (eval_used). Review and replace if possible.
tools/compressor_serialization/to_cbor.py:70 Eval used
medium Security checks software dependencies conf 0.90 ✓ Repobility 5 occurrences [MINED124] requirements.txt: `requests` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins.
Replace `requests` with `requests==<version>` and manage upgrades through PRs / Dependabot.
lines 1, 2, 4, 6, 7
contrib/reproducibility/dataset_manager/requirements.txt:1, 2, 4, 6, 7 (5 hits)
low Security checks quality Error handling conf 0.55 ✓ Repobility 10 occurrences Broad exception handler needs review
This handler catches Exception/BaseException. It is actionable when it swallows errors without logging, re-raising, or returning a structured error. Handlers that intentionally convert exceptions into typed error results should not be treated as high risk.
3 files, 10 locations
contrib/reproducibility/dataset_manager/dataset_utils.py:60, 104, 153, 272, 316, 393, 461 (7 hits)
tests/round_trip/generate_sddl2_parse_test_data.py:116, 176 (2 hits)
contrib/reproducibility/dataset_manager/dataset_manager.py:133
Error handlingquality
medium System graph cicd CI/CD security conf 1.00 5 occurrences GitHub Action is tag-pinned rather than SHA-pinned
msys2/setup-msys2@v2 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
2 files, 5 locations
.github/workflows/windows-ci.yml:65, 165 (4 hits)
.github/workflows/release-binaries.yml:68
CI/CD securitySupply chainGitHub Actions
medium System graph cicd CI/CD security 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-docs.yml CI/CD securitySupply chainGithub actions
medium System graph cicd CI/CD security 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/release-binaries.yml CI/CD securitySupply chainGithub actions
medium System graph security security conf 1.00 Insecure pattern 'subprocess_shell_true' in benchmark/runner/local_compare.py:160
Found a known-risky pattern (subprocess_shell_true). Review and replace if possible.
benchmark/runner/local_compare.py:160 Subprocess shell true
medium System graph security security conf 1.00 Insecure pattern 'subprocess_shell_true' in contrib/reproducibility/dataset_manager/dataset_utils.py:452
Found a known-risky pattern (subprocess_shell_true). Review and replace if possible.
contrib/reproducibility/dataset_manager/dataset_utils.py:452 Subprocess shell true
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — benchmark/runner/local_compare.py:135
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — benchmark/runner/quiet_cpu_utils.py:79
`subprocess.check_output(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — benchmark/runner/zstrong_gbenchmarks.py:424
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — benchmark/unitBench/scripts/sparse_num_bench.py:109
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — contrib/reproducibility/dataset_manager/dataset_utils.py:256
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph 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.
auth
low Security checks quality Quality conf 0.60 15 occurrences Duplicated implementation block across source files
Duplicate implementation blocks are maintenance debt. Keep them visible, but they are not a high-severity defect unless the duplicated logic is security-sensitive or drifting.
12 files, 12 locations
cli/commands/cmd_decompress.cpp:8
contrib/lz-research/codecs/VarByte.cpp:77
contrib/reproducibility/watermark/analysis.cpp:26
cpp/include/openzl/cpp/Compressor.hpp:40
cpp/include/openzl/cpp/CustomEncoder.hpp:38
cpp/include/openzl/cpp/DCtx.hpp:45
cpp/include/openzl/cpp/FunctionGraph.hpp:84
cpp/src/openzl/cpp/experimental/trace/CompressTracer.hpp:19
duplicationquality
low System graph software Dead code candidate conf 1.00 File has no detected symbols: build-scripts/cmake/tests/test-install.py
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: doc/mkdocs/doc/js/mathjax.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: doc/mkdocs/mkdocstrings-zstd/example/doc/extra.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: doc/mkdocs/mkdocstrings-zstd/example/mkdocs.py
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: doc/mkdocs/static_docs_build_script.py
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: examples/training_setup.py
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: scripts/move_to_utils.py
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tests/rolz_plot.py
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/eslint.config.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/graphVisualization/models/types.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/interfaces/NullableStreamdump.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/interfaces/SerializedChunk.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/interfaces/SerializedCodec.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/interfaces/SerializedCopyParamInfo.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/interfaces/SerializedGraph.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/interfaces/SerializedIntParamInfo.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/interfaces/SerializedLocalParamInfo.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/interfaces/SerializedRefParamInfo.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/interfaces/SerializedStream.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/interfaces/SerializedStreamdump.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/main.tsx
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/models/BrandedType.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/models/idTypes.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/src/vite-env.d.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: tools/visualization_app/vite.config.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph quality Tests conf 1.00 Low test-to-source ratio
23 tests / 110 src (ratio 0.21).
low System graph quality Integrity conf 1.00 14 occurrences Near-duplicate function bodies in 2 places
Functions with the same first-5-line body hash: scripts/gen_decompress_field_lz_offset_tables.py:print_shuffles, scripts/gen_mux_lengths_tables.py:print_shuffle_lut This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see https://jw.hn/ai-code-hygiene). Consolidate or doc…
14 occurrences
repo-level (14 hits)
duplicatesduplication
low System graph quality Integrity conf 1.00 Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: scripts/gen_compress_parse_int_tables.py:hexify, scripts/gen_decompress_field_lz_offset_tables.py:hexify, scripts/gen_mux_lengths_tables.py:hexify This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see https://jw.hn/ai-cod…
duplicatesduplication
low System graph quality Integrity conf 1.00 Near-duplicate function bodies in 7 places
Functions with the same first-5-line body hash: doc/mkdocs/mkdocstrings-zstd/src/mkdocstrings_handlers/zstd/doxygen.py:role, doc/mkdocs/mkdocstrings-zstd/src/mkdocstrings_handlers/zstd/doxygen.py:role, doc/mkdocs/mkdocstrings-zstd/src/mkdocstrings_handlers/zstd/doxygen.py:role, doc/mkdocs/mkdocstri…
duplicatesduplication
low System graph quality Integrity conf 1.00 Old/deprecated-named symbol `get_working_copy` in benchmark/runner/local_compare.py:84
Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version.
old markerDead code
low System graph software Dead code conf 1.00 Possibly dead Python function: do_format
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
doc/mkdocs/mkdocstrings-zstd/src/mkdocstrings_handlers/zstd/rendering.py:45
low System graph software Dead code conf 1.00 Possibly dead Python function: expand_identifier
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
doc/mkdocs/mkdocstrings-zstd/src/mkdocstrings_handlers/zstd/rendering.py:75
low System graph software Dead code conf 1.00 Possibly dead Python function: function_graph_description
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
examples/py/parsing.py:76
low System graph software Dead code conf 1.00 Possibly dead Python function: generate_catalog
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
contrib/reproducibility/dataset_manager/dataset_manager.py:38
low System graph software Dead code conf 1.00 Possibly dead Python function: graph
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
examples/py/parsing.py:82
low System graph software Dead code conf 1.00 Possibly dead Python function: is_changed
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/runner/zstrong_gbenchmarks.py:49
low System graph software Dead code conf 1.00 Possibly dead Python function: parse_ratios
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/unitBench/scripts/sparse_num_bench.py:74
low System graph software Dead code conf 1.00 Possibly dead Python function: parse_widths
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/unitBench/scripts/sparse_num_bench.py:70
low System graph software Dead code conf 1.00 Possibly dead Python function: phabricator_diff_to_latest_version_fbid
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/runner/phabricator_utils.py:72
low System graph software Dead code conf 1.00 Possibly dead Python function: phabricator_verion_to_diff
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/runner/phabricator_utils.py:88
low System graph software Dead code conf 1.00 Possibly dead Python function: reserve
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/runner/quiet_cpu_utils.py:55
low System graph software Dead code conf 1.00 Possibly dead Python function: rewrite_func
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
tools/compressor_serialization/to_cbor.py:19
low System graph software Dead code conf 1.00 Possibly dead Python function: selector_description
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
examples/py/quick_start.py:185
low System graph software Dead code conf 1.00 Possibly dead Python function: to_dataframe
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/runner/zstrong_gbenchmarks.py:236
low System graph frontend Frontend quality conf 1.00 Stray `console.log` in TS/JS — tools/visualization_app/src/App.tsx:78
Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable. Why: Hygiene — easy to leak debug output. Rule id: fq.console-leak
Fq console leak
low System graph frontend Frontend quality conf 1.00 Stray `console.log` in TS/JS — tools/visualization_app/src/graphVisualization/models/InteractiveChunkGraph.ts:287
Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable. Why: Hygiene — easy to leak debug output. Rule id: fq.console-leak
Fq console leak
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/3fc8ff8f-9c8b-4248-99e0-1154e8f1198b/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/3fc8ff8f-9c8b-4248-99e0-1154e8f1198b/

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.