{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:07.035277Z","repo":{"ref":{"host":"github.com","owner":"rb00t","name":"sail"},"default_branch":"main","clone_url":"https://github.com/rb00t/sail.git","html_url":"https://github.com/rb00t/sail","description":"Built entirely with AI coding tools","stars":0,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":251,"primary_language":"Shell","license_spdx":"Unlicense","created_at":"2026-10-20T01:43:05Z","pushed_at":"2026-11-11T05:29:51Z","security_policy_url":null,"distribution":{"owner_created_at":"2023-11-16T14:07:45Z","owner_type":"User","release_assets":[]}},"commit_sha":"ff859b580ea5a653626ff3060b60a3e3f75d0565","profile":{"lines_by_language":{"Shell":3107,"Python":1421,"JavaScript":401},"files_by_category":{"source":13,"test":12,"other":10,"config":3,"docs":3,"binary":3},"source_lines":2891,"test_lines":2038},"pillars":{"ai_provenance":{"score":0.0,"confidence":0.53,"coverage":1.0,"label":"possible","breakdown":{"attributed_share":0.0,"suspected_share":0.3725,"estimated_share":0.0,"ai_artifacts":1.0,"flagged_work_units":1.0,"flagged_releases":null,"style_index":0.0},"summary":"Weak signals consistent with AI-assisted development."},"quality":{"score":76.6,"confidence":0.9,"coverage":1.0,"label":"adequate","breakdown":{"complexity":64.2,"duplication":100.0,"lint":84.1,"testing":80.0,"docs":65.0,"type_safety":40.0,"process":null},"summary":"Code quality is adequate: test-to-source ratio 0.70, no CI test run detected; 15% of function code in complex or long functions; 0% duplicated lines. Weakest area: type safety."},"security":{"score":69.1,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":46.4,"dependencies":null,"ci_actions":94.2,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: no high-impact findings. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no registry dependencies declared"},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":51.0,"attributed_commits":0.0,"attributed_commit_share":0.0,"effective_loc":5683.0,"attributed_loc":0.0,"attributed_loc_share":0.0,"tools_detected":0.0},"findings":[],"evidence":[],"data":{"attributed_loc_by_commit":{},"tools":{},"monthly":{"2026-09":{"loc":1225,"attributed_loc":0},"2026-10":{"loc":4125,"attributed_loc":0},"2026-11":{"loc":333,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":1.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1794271189.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"AGENTS.md (generic-agent configuration)","ref":"AGENTS.md","url":"https://github.com/rb00t/sail/blob/ff859b580ea5a653626ff3060b60a3e3f75d0565/AGENTS.md","weight":0.5}],"data":{"artifacts":[{"tool":"generic-agent","path":"AGENTS.md","added_at":1794271189}],"workflows":[],"tools":["generic-agent"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":14.0,"flagged_units":1.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":5683.0,"flagged_loc":2117.0,"flagged_loc_share":0.37251451698046806,"max_loc_per_hour":520.8227977858265,"median_loc_per_hour":204.44503416705368,"pr_timed_units":0.0,"excluded_import_loc":0.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"2,117 lines of first-party code in ~4.1h (521 lines/hour, 2 commit session)","ref":"3b7d32873bc8ca00d27815cb397620f8c06d50ff","url":"https://github.com/rb00t/sail/commit/3b7d32873bc8ca00d27815cb397620f8c06d50ff","weight":0.15624683933574796}],"data":{"flagged_loc_by_commit":{"1081f389ba9a418a76ed5be7abe0574f41e968b2":2094,"3b7d32873bc8ca00d27815cb397620f8c06d50ff":23},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":2891.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":24.0,"findings_high":0.0,"findings_medium":24.0,"findings_low":0.0,"weighted_findings":6.35,"scanned_lines":2891.0,"parse_errors":4.0},"findings":[{"rule_id":"opengrep/bash.curl.security.curl-pipe-bash","severity":"medium","message":"Data is being piped into `bash` from a `curl` command. An attacker with control of the server in the `curl` command could inject malicious code into the pipe, resulting in a system compromise. Avoid piping untrusted data into `bash` or any other shell if you can. If you must do this, consider checki [confidence low]","path":"install.sh","line":122,"fingerprint":"bash.curl.security.curl-pipe-bash:install.sh:122"},{"rule_id":"opengrep/python.lang.security.audit.dynamic-urllib-use-detected","severity":"medium","message":"Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control the URLs, or consider using the 'requests' library instead. [confidence low]","path":"lib/search.py","line":51,"fingerprint":"python.lang.security.audit.dynamic-urllib-use-detected:lib/search.py:51"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-sha1","severity":"medium","message":"Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"lib/search.py","line":625,"fingerprint":"python.lang.security.insecure-hash-algorithm-sha1:lib/search.py:625"},{"rule_id":"opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal","severity":"medium","message":"Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability,  where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low]","path":"lib/wt.js","line":71,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/wt.js:71"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `outDir` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":86,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:86"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `outDir` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":92,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:92"},{"rule_id":"opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal","severity":"medium","message":"Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability,  where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low]","path":"lib/wt.js","line":92,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/wt.js:92"},{"rule_id":"opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal","severity":"medium","message":"Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability,  where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low]","path":"lib/wt.js","line":92,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/wt.js:92"},{"rule_id":"opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal","severity":"medium","message":"Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability,  where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low]","path":"lib/wt.js","line":101,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/wt.js:101"},{"rule_id":"opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal","severity":"medium","message":"Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability,  where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low]","path":"lib/wt.js","line":101,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/wt.js:101"},{"rule_id":"opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal","severity":"medium","message":"Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability,  where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low]","path":"lib/wt.js","line":102,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/wt.js:102"},{"rule_id":"opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal","severity":"medium","message":"Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability,  where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low]","path":"lib/wt.js","line":102,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/wt.js:102"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `f` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":103,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:103"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `to` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":103,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:103"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `f` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":105,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:105"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `from` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":105,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:105"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `f` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":105,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:105"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `to` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":105,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:105"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `f` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":108,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:108"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `from` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":108,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:108"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `f` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":108,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:108"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `to` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":108,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:108"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `f` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":109,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:109"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `from` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"lib/wt.js","line":109,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/wt.js:109"}],"evidence":[],"data":{"rulesets":["bash","python","javascript"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":2.0,"findings":3.0,"findings_high":0.0,"findings_medium":3.0,"findings_low":0.0,"penalty":3.6},"findings":[{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":22,"fingerprint":"artipacked:.github/workflows/ci.yml:22"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":42,"fingerprint":"artipacked:.github/workflows/ci.yml:42"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/pages.yml","line":30,"fingerprint":"artipacked:.github/workflows/pages.yml:30"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.0392,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":85.0,"function_nloc":839.0,"mean_ccn":3.72,"p90_ccn":8.0,"complex_functions":2.0,"long_functions":0.0,"many_param_functions":0.0,"risky_nloc_share":0.1478},"findings":[],"evidence":[{"kind":"complex-function","description":"main in lib/wt.js: complexity 32, 75 lines","ref":"lib/wt.js","url":"https://github.com/rb00t/sail/blob/ff859b580ea5a653626ff3060b60a3e3f75d0565/lib/wt.js#L116","weight":0.5333333333333333},{"kind":"complex-function","description":"main in lib/search.py: complexity 24, 49 lines","ref":"lib/search.py","url":"https://github.com/rb00t/sail/blob/ff859b580ea5a653626ff3060b60a3e3f75d0565/lib/search.py#L770","weight":0.4}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":2367.0,"duplicated_lines":0.0,"duplicated_share":0.0,"files":13.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":5.0,"weighted_findings":2.0,"scanned_lines":2891.0,"category:best-practice":1.0,"category:correctness":4.0},"findings":[{"rule_id":"opengrep/javascript.lang.best-practice.lazy-load-module","severity":"medium","message":"Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The best practice is to `require` modules at the beginning of each file","path":"lib/wt.js","line":200,"fingerprint":"javascript.lang.best-practice.lazy-load-module:lib/wt.js:200"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"lib/torrent.sh","line":148,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:lib/torrent.sh:148"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-command-substitution-in-command","severity":"low","message":"The result of command substitution $(...) or `...`, if unquoted, is split on whitespace or other separators specified by the IFS variable. You should surround it with double quotes to avoid splitting the result.","path":"lib/torrent.sh","line":181,"fingerprint":"bash.lang.correctness.unquoted-command-substitution-in-command:lib/torrent.sh:181"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-command-substitution-in-command","severity":"low","message":"The result of command substitution $(...) or `...`, if unquoted, is split on whitespace or other separators specified by the IFS variable. You should surround it with double quotes to avoid splitting the result.","path":"lib/torrent.sh","line":464,"fingerprint":"bash.lang.correctness.unquoted-command-substitution-in-command:lib/torrent.sh:464"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-command-substitution-in-command","severity":"low","message":"The result of command substitution $(...) or `...`, if unquoted, is split on whitespace or other separators specified by the IFS variable. You should surround it with double quotes to avoid splitting the result.","path":"lib/torrent.sh","line":466,"fingerprint":"bash.lang.correctness.unquoted-command-substitution-in-command:lib/torrent.sh:466"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":1.0,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":1.0,"check:tests_cochange":1.0,"test_lines":2038.0,"source_lines":2891.0,"test_ratio":0.7049,"ci_files":2.0,"cochange_share":0.6,"cochange_commits":25.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/ci.yml","ref":".github/workflows/ci.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/pages.yml","ref":".github/workflows/pages.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs linters (ruff, shellcheck)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":[],"lint_commands":["ruff","shellcheck"]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":283.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[],"data":{},"error":null}],"flags":[]}