Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-23 04:32 UTC

opengeos / whitebox-wasm

Pure-Rust geospatial toolkit compiled to WebAssembly. No GDAL, no PROJ, no native libraries, no server.

RustApache-2.0★ 7 Sterne⑂ 0 Forksseit Juni 2026Auf GitHub ansehen ↗

opengeos/whitebox-wasm erreicht einen Gesundheitsindex von 56 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Engineering Quality (71/100) ab, am schwächsten bei Community & Adoption (30/100). Zuletzt vor 5 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

56
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

56
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

3.832 Follower168 öffentliche Reposseit Apr. 2023

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
crates.iowbhdfverweist auf ein anderes Repo — nicht bewertet0.1.061vor 50 Tagengishdf4hdf5geospatialremote-sensingsciencefilesystemparser-implementations
crates.iowblidarverweist auf ein anderes Repo — nicht bewertet0.1.2133vor 62 Tagen
crates.iowbrasterverweist auf ein anderes Repo — nicht bewertet0.2.0457vor 62 Tagengisgeospatialrastergridremote-sensingencodingfilesystemscience
crates.iowbvectorverweist auf ein anderes Repo — nicht bewertet0.1.52.0966vor 22 Tagengisgeojsongeospatialshapefilegeopackageencoding
crates.iowbgeotiffverweist auf ein anderes Repo — nicht bewertet0.1.2863vor 76 Tagengisrastercoggeotiffbigtiffscienceencodingfilesystem
crates.iowbtopologyverweist auf ein anderes Repo — nicht bewertet0.2.02.0524vor 62 Tagengisgeometryspatialtopologyjtsalgorithms
crates.iokdtreeverweist auf ein anderes Repo — nicht bewertet0.8.0149.07214vor 263 Tagensearchtreegeonearestneighbor

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

68Mittel · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 5 Tagen
2.8/36Commit-Rhythmus — 4/52 Wochen mit Commits
14.2/18Commit-Volumen — 37 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Verwendete Eingangsdaten
commits_last_year37
human_commit_share1
days_since_last_push5
active_weeks_last_year4
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 6 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 5 Tagen
27/27Release-Rhythmus — ein Release etwa alle 6,3 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count6
latest_release_tagv0.5.0
releases_from_tagsnein
days_since_latest_release5
mean_days_between_releases6,3

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

30Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
12.6/60Stars — 7 Stars
0/25Forks — 0 Forks
0/15Watcher — 2 Watcher
Verwendete Eingangsdaten
forks0
stars7
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (Apache-2.0)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

58Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 100 % der Commits
1.4/13.5Breite der Beitragenden — 1 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 5 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor1
contributors_sampled1
top_contributor_share1
Wie die Bewertung erfolgt
46.8/46.8Issue-Lösungsquote — 100 % der Issues geschlossen
38.2/38.3PR-Annahme — 9/9 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 2/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs9
open_issues0
closed_issues2
issue_closed_ratio1
closed_unmerged_prs0
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
25/25Reichweite des Inhabers — 3.832 Follower von opengeos
19.6/25Kontohistorie — 168 öffentliche Repos, Kontoalter ca. 3 Jahre
Verwendete Eingangsdaten
followers3.832
owner_typeOrganization
is_verified
owner_loginopengeos
public_repos168
account_age_days1.205

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

71Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 4 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 9 out of 9 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
0/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — http://opengeos.org/whitebox-wasm
10/10Repository-Beschreibung
10/10Topics — 8 Topics
10/10Wiki
Verwendete Eingangsdaten
topicscog, geospatial, geotiff, gis, rust, wasm, webassembly, whiteboxtools
has_wikija
homepagehttp://opengeos.org/whitebox-wasm
has_readmeja
has_docs_dirnein
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

46Gefährdet · 16 % des Gesamtindex

Sicherheitslage

33Gefährdet
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 9 out of 9 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 2/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 5 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
2.2/7.5Vulnerabilities — 7 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate3,3
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
25/25Indirekte Abhängigkeiten ohne bekannte Advisories — keine indirekte Abhängigkeit trägt ein bekanntes Advisory
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories0
affected_packages0
assessed_packages30
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von crates:wbhdf@0.1.0 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 30 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

54Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 36 von 37 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,973
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — Cargo.toml, crates/kdtree-wasm/Cargo.toml, crates/wbcore/Cargo.toml (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — Rust (statisch typisiert)
10/10Reproduzierbare Umgebung — lockfile
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 37
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesCargo.lock
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifestsCargo.toml, crates/kdtree-wasm/Cargo.toml, crates/wbcore/Cargo.toml, crates/wbgeotiff/Cargo.toml, crates/wbhdf/Cargo.toml, crates/wblidar/Cargo.toml, crates/wbprojection/Cargo.toml, crates/wbraster/Cargo.toml, crates/wbspatialstats/Cargo.toml, crates/wbtools_oss/Cargo.toml, crates/wbtopology/Cargo.toml, crates/wbvector/Cargo.toml, crates/whitebox-cli/Cargo.toml, crates/whitebox-wasm/Cargo.toml
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Rust (statisch typisiert)
48.5/55Handhabbare Dateigrößen — 48/406 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageRust
largest_source_bytes2.002.974
source_files_sampled406
oversized_source_files48
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_files

Eckdaten

7GitHub-Sterne
1Mitwirkende
37Commits, letzte 12 Monate
5Tage seit letztem Push
6Releases
1Bus-Faktor
0offene Issues
crates.ioPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • crates package 'wbhdf' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring
  • Could not fetch crates package 'wbcore' from its registry
  • crates package 'wblidar' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring
  • crates package 'wbraster' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring
  • crates package 'wbvector' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring
  • crates package 'wbgeotiff' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring
  • crates package 'wbtopology' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring
  • crates package 'kdtree' points at a different repository (https://github.com/mrhooray/kdtree-rs); excluded from ecosystem scoring
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

OpenSSF Scorecard 3.3 / 10
3.3Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-23 04:32 UTC

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests9 out of 9 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 2/30 approved changesets -- score normalized to 0
10Contributorsproject has 5 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
3Vulnerabilities7 existing vulnerabilities detected
Direkte Abhängigkeiten 101
RegistryPaketVersionsvorgabeManifest
crates.ionum-traits0.2crates/kdtree-wasm/Cargo.toml
crates.ioserde1.0crates/kdtree-wasm/Cargo.toml
crates.ioserde_derive1.0crates/kdtree-wasm/Cargo.toml
crates.iothiserror2.0crates/kdtree-wasm/Cargo.toml
crates.ioserdecrates/wbcore/Cargo.toml
crates.ioserde_jsoncrates/wbcore/Cargo.toml
crates.iothiserrorcrates/wbcore/Cargo.toml
crates.iothiserror1.0crates/wbgeotiff/Cargo.toml
crates.ioflate21crates/wbgeotiff/Cargo.toml
crates.iolz4_flex0.11crates/wbgeotiff/Cargo.toml
crates.ioweezl0.1crates/wbgeotiff/Cargo.toml
crates.iojpeg-encoder0.6crates/wbgeotiff/Cargo.toml
crates.iojpeg-decoder0.3crates/wbgeotiff/Cargo.toml
crates.iowebp-rust0.2.1crates/wbgeotiff/Cargo.toml
crates.iopng0.17crates/wbgeotiff/Cargo.toml
crates.iozune-core0.5crates/wbgeotiff/Cargo.toml
crates.iozune-jpegxl0.5crates/wbgeotiff/Cargo.toml
crates.iojxl-oxide0.12crates/wbgeotiff/Cargo.toml
crates.iorayon1crates/wbgeotiff/Cargo.toml
crates.iobyteorder1.5crates/wbhdf/Cargo.toml
crates.ioflate21crates/wbhdf/Cargo.toml
crates.iominiz_oxide0.8crates/wbhdf/Cargo.toml
crates.iothiserror1crates/wbhdf/Cargo.toml
crates.iowide1.2crates/wblidar/Cargo.toml
crates.iowbprojection0.3.0crates/wblidar/Cargo.toml
crates.iowbhdf0.1.0crates/wblidar/Cargo.toml
crates.ioreqwest0.12crates/wblidar/Cargo.toml
crates.iorayon1.10crates/wblidar/Cargo.toml
crates.iothiserror1.0crates/wbprojection/Cargo.toml
crates.iowide1.2crates/wbprojection/Cargo.toml
crates.iorayon1.10crates/wbprojection/Cargo.toml
crates.ioserde1.0crates/wbprojection/Cargo.toml
crates.ioserde1crates/wbraster/Cargo.toml
crates.ioserde_json1.0.149crates/wbraster/Cargo.toml
crates.ioflate21.1.9crates/wbraster/Cargo.toml
crates.iotar0.4.45crates/wbraster/Cargo.toml
crates.iozip8.5.1crates/wbraster/Cargo.toml
crates.ioruzstd0.8.2crates/wbraster/Cargo.toml
crates.iolz4_flex0.13.0crates/wbraster/Cargo.toml
crates.iojpeg-encoder0.7.0crates/wbraster/Cargo.toml
crates.iojpeg-decoder0.3.2crates/wbraster/Cargo.toml
crates.iopng0.18.1crates/wbraster/Cargo.toml
crates.iothiserror2.0.18crates/wbraster/Cargo.toml
crates.iorayon1.12.0crates/wbraster/Cargo.toml
crates.iowide1.3.0crates/wbraster/Cargo.toml
crates.iowbprojection0.3.0crates/wbraster/Cargo.toml
crates.iowbgeotiff0.1.2crates/wbraster/Cargo.toml
crates.iowbhdf0.1.0crates/wbraster/Cargo.toml
crates.ionalgebra0.34crates/wbspatialstats/Cargo.toml
crates.iondarray0.15crates/wbspatialstats/Cargo.toml
crates.iorayon1.7crates/wbspatialstats/Cargo.toml
crates.iorand0.8crates/wbspatialstats/Cargo.toml
crates.ioserde1.0crates/wbspatialstats/Cargo.toml
crates.ioserde_json1.0crates/wbspatialstats/Cargo.toml
crates.iothiserror1.0crates/wbspatialstats/Cargo.toml
crates.iolog0.4crates/wbspatialstats/Cargo.toml
crates.iowbcorecrates/wbtools_oss/Cargo.toml
crates.ioserdecrates/wbtools_oss/Cargo.toml
crates.ioserde_jsoncrates/wbtools_oss/Cargo.toml
crates.iowbrastercrates/wbtools_oss/Cargo.toml
crates.iowbgeotiffcrates/wbtools_oss/Cargo.toml
crates.iowbvectorcrates/wbtools_oss/Cargo.toml
crates.iowbprojectioncrates/wbtools_oss/Cargo.toml
crates.iowbtopologycrates/wbtools_oss/Cargo.toml
crates.iowblidarcrates/wbtools_oss/Cargo.toml
crates.iowbspatialstatscrates/wbtools_oss/Cargo.toml
crates.iorayon1crates/wbtools_oss/Cargo.toml
crates.iorand0.10.0crates/wbtools_oss/Cargo.toml
crates.iowide1.2.0crates/wbtools_oss/Cargo.toml
crates.iochrono0.4crates/wbtools_oss/Cargo.toml
crates.ioimage0.25crates/wbtools_oss/Cargo.toml
crates.iokdtree0.8.0crates/wbtools_oss/Cargo.toml
crates.ioevalexpr13.1.0crates/wbtools_oss/Cargo.toml
crates.ionalgebra0.34.1crates/wbtools_oss/Cargo.toml
crates.iosmartcore0.4.9crates/wbtools_oss/Cargo.toml
crates.iobincode2crates/wbtools_oss/Cargo.toml
crates.iorustfft6.2crates/wbtools_oss/Cargo.toml
crates.iotime0.3crates/wbtools_oss/Cargo.toml
crates.ioureq2.12.1crates/wbtools_oss/Cargo.toml
crates.iowbvector0.1.4crates/wbtopology/Cargo.toml
crates.iorayon1.10crates/wbtopology/Cargo.toml
crates.iorobust1.2.0crates/wbtopology/Cargo.toml
crates.iothiserror1crates/wbvector/Cargo.toml
crates.ioflatbuffers24.12.23crates/wbvector/Cargo.toml
crates.iowbprojection0.3.0crates/wbvector/Cargo.toml
crates.iozip0.6crates/wbvector/Cargo.toml
crates.ioosmpbfreader0.16crates/wbvector/Cargo.toml
crates.ioparquet58.3crates/wbvector/Cargo.toml
crates.ioserde_json1crates/wbvector/Cargo.toml
crates.iobytes1crates/wbvector/Cargo.toml
crates.iowbtools_osscrates/whitebox-cli/Cargo.toml
crates.iowbcorecrates/whitebox-cli/Cargo.toml
crates.ioserde_json1crates/whitebox-cli/Cargo.toml
crates.iowbgeotiffcrates/whitebox-wasm/Cargo.toml
crates.iowbprojectioncrates/whitebox-wasm/Cargo.toml
crates.iowbvectorcrates/whitebox-wasm/Cargo.toml
crates.iowblidarcrates/whitebox-wasm/Cargo.toml
crates.iowbtopologycrates/whitebox-wasm/Cargo.toml
crates.iowbspatialstatscrates/whitebox-wasm/Cargo.toml
crates.iowasm-bindgen0.2crates/whitebox-wasm/Cargo.toml
crates.ioconsole_error_panic_hook0.1crates/whitebox-wasm/Cargo.toml
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Abhängigkeits-Advisories 0

Die Installation von crates:wbhdf@0.1.0 zieht 30 Pakete nach sich, direkt und transitiv: 0 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

Keine bekannten Advisories betreffen die bewerteten Abhängigkeiten.

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "cog",
        "geospatial",
        "geotiff",
        "gis",
        "rust",
        "wasm",
        "webassembly",
        "whiteboxtools"
      ],
      "is_fork": false,
      "size_kb": 2836,
      "has_wiki": true,
      "homepage": "http://opengeos.org/whitebox-wasm",
      "languages": {
        "Rust": 16687974,
        "JavaScript": 4646
      },
      "pushed_at": "2026-07-17T20:28:14Z",
      "created_at": "2026-06-16T13:06:58Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-21T08:35:37Z",
      "description": "Pure-Rust geospatial toolkit compiled to WebAssembly. No GDAL, no PROJ, no native libraries, no server.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Rust",
      "significant_languages": [
        "Rust"
      ]
    },
    "owner": {
      "blog": "https://opengeos.org",
      "name": "Open Geospatial Solutions",
      "type": "Organization",
      "login": "opengeos",
      "company": null,
      "location": "United States of America",
      "followers": 3832,
      "avatar_url": "https://avatars.githubusercontent.com/u/129896036?v=4",
      "created_at": "2023-04-04T19:02:44Z",
      "is_verified": null,
      "public_repos": 168,
      "account_age_days": 1205
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-07-17T20:35:42Z"
        },
        {
          "tag": "v0.4.1",
          "kind": "patch",
          "published_at": "2026-07-17T01:42:05Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-06-17T01:29:38Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-06-16T23:05:48Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-06-16T22:34:13Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-06-16T13:10:56Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "8d2aa4e2990a28f84739f24a60ba62e8e440f5bf",
          "body": "Topology fixes: topology_validation_report no longer flags reader-normalized\nrings as unclosed (#7/#9); topology_rule_autofix gains cross-feature endpoint\nsnapping and dangle fixing, the endpoint-snap validate rule accepts exactly\nconnected endpoints, and the CLI surfaces progress messages including the\ndry-run default notice (#8/#10). Minor bump: the report's issue-type set and\nautofix behavior changed.",
          "is_bot": false,
          "headline": "chore(release): whitebox-wasm 0.5.0 (#11)",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-07-17T20:28:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2b73194e5ced6f2dd8913dc77065b41b056980a",
          "body": "…angle violations (#10)\n\ntopology_rule_autofix advertised four fixable rules but only\npoint_must_be_covered_by_line ever changed anything:\n\n- the endpoint-snap fixer only snapped a line's own two endpoints to each\n  other (closing near-loops); it never looked at other features, so the\n  cross-featur\n[…]\nad of dropping them,\n  so 'no output was written' is visible instead of a bare OK\n- metadata/manifest now states polygon_must_not_have_gaps has no automatic\n  fix instead of implying it does\n\nFixes #8",
          "is_bot": false,
          "headline": "fix(topology): make topology_rule_autofix actually fix endpoint and d…",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-07-17T20:22:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ac33ecc71b71ba36e48ddd2f2d5f7026fede381",
          "body": "…unclosed (#9)\n\nThe vector readers normalize ring storage (GeoJSON/Shapefile/FlatGeobuf strip\nthe closing vertex; OSM PBF keeps it), so ring closure is a storage convention,\nnot a data property - by the time polygon_topology_issues runs, an unclosed\nring in the source is indistinguishable from a nor\n[…]\nfinal vertex from the duplicate-vertex check when the ring\n  is actually stored closed; the hardcoded closed_ring=true skipped the last\n  real vertex of open rings, hiding genuine duplicates\n\nFixes #7",
          "is_bot": false,
          "headline": "fix(topology): stop flagging every reader-normalized polygon ring as …",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-07-17T20:15:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "337e6576b895539049692255f135aba7acf847b7",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): whitebox-wasm 0.4.1",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-07-17T01:35:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c30c82c21aacabec8ce306e628c2cf5840b6dfe5",
          "body": "…decode (#6)\n\n* fix(wbgeotiff): reverse TIFF horizontal/floating-point predictors on decode\n\nCOGs written with PREDICTOR=2 (horizontal differencing) or PREDICTOR=3\n(floating point) — the GDAL default for Deflate/LZW imagery such as NAIP\ntiles — decoded to garbage: the tile/strip decoders inflated th\n[…]\ntiff.js.)\n- CogLevel: make the new `predictor` field private (read only by the\n  decoder) so adding it is a non-breaking change for downstream code\n  that constructs or destructures the public struct.",
          "is_bot": false,
          "headline": "fix(wbgeotiff): reverse TIFF horizontal/floating-point predictors on …",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-07-17T01:32:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "926357467251dc2a71c9cddfbbcf042f87697bf5",
          "body": "Parameters whose name is an expression or statement (Field Calculator's\n`expression`, Extract By Attribute's and Filter Lidar's `statement`,\nRaster Calculator's `expression`) are free text the user types. Their\ndescriptions mention \"boolean\" (the value the expression evaluates to) or\n\"feature\"/\"rast\n[…]\nox or a dataset input, leaving no field\nto enter the expression.\n\nShort-circuit these to a string schema before the bool/enum/dataset\ninference. Adds a regression test with the real tool descriptions.",
          "is_bot": false,
          "headline": "fix(wbcore): infer expression/statement params as free-text strings (#5)",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-07-06T13:32:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75716ce0e2593ad461dad43d1a4994c35a7e5350",
          "body": "The GeoJSON FeatureCollection/Feature reader never assigned a source CRS,\nso reprojection tools (reproject_vector) failed with 'layer_to_epsg\nrequires source CRS metadata' on plain GeoJSON input. RFC 7946 defines\nGeoJSON coordinates as WGS 84, so default the layer CRS to EPSG:4326 and\nhonour a legacy GeoJSON 2008 named crs member (urn EPSG, EPSG:code, and\nOGC CRS84 forms) when present.",
          "is_bot": false,
          "headline": "fix(geojson): default reader source CRS to EPSG:4326 (RFC 7946) (#4)",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-07-02T02:20:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77eb302e445cde1278e5d389fa85f0911389b383",
          "body": "…flow_accum_full_workflow (#3)\n\nStandalone D8/FD8 flow-routing tools (d8_pointer, d8_flow_accum,\nfd8_flow_accum, basins, subbasins, ...) trapped with a WASM `unreachable`\ninstruction on every input. Root cause: these tools fan work out with\n`std::thread::spawn`, which is unsupported on the wasm32 ta\n[…]\nir_output`), so consumers get\nthe accumulation raster and an ESRI-encodable pointer from the same\ninternal breach pass (`--esri_pntr`).\n\nFixes opengeos/geolibre-rust#28\nFixes opengeos/geolibre-rust#29",
          "is_bot": false,
          "headline": "fix(flow): avoid std::thread::spawn WASM trap; add output_pointer to …",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-24T21:35:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f723de68211334c280d96a2be7d01a04a73e0722",
          "body": "…ls, datasets) (#2)\n\nThe manifest emitter inferred each parameter's io_role/data_kind/schema from\nits name and description with plain substring matching, which mis-typed a large\nfraction of the ~700 tools and made host UIs render the wrong control:\n\n- \"strategy: first, last, count\" became a LiDAR fi\n[…]\nnd ~125 vector/raster file inputs, and removes the\nspurious LiDAR file pickers caused by the \"las\" substring match. Adds unit\ntests covering each signature, including the CSV-vs-enum and plural cases.",
          "is_bot": false,
          "headline": "fix(wbcore): word-aware manifest param inference (enums, scalars, boo…",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-24T12:38:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ed146da9f664e7417e77a269a3b1eac41167092",
          "body": "* feat(geoparquet): emit bbox covering column and read via in-memory bytes\n\nAdd a GeoParquet 1.1 bbox covering column (struct<xmin,ymin,xmax,ymax>) next\nto the geometry, declared via the geometry column's \"covering\" metadata, so\nreaders can spatially prune without decoding geometries. Enabled by def\n[…]\nolumn as the covering when it is the nested struct (schema\npath length >= 2 / a Group row field), so a user-defined scalar attribute named\n\"bbox\" round-trips instead of being silently dropped on read.",
          "is_bot": false,
          "headline": "feat(geoparquet): bbox covering column + WASM-safe reader (#1)",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-19T23:47:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "be91a7836182a95cf75ca600111410f85c2f4140",
          "body": "A COPC LAZ (e.g. autzen-classified.copc.laz) crashed the module with an\n'unreachable' panic: the standard LazReader misreads COPC's variable-chunk\nstructure and over-allocates. Fixes:\n- wrapper: lidar_info now reads only the LAS header via LasReader (no chunk-table\n  decode -> no panic) for LAS and \n[…]\nsread count can't\n  capacity-overflow-panic (defense in depth).\n- demo: LiDAR tab shows COPC metadata + a note instead of erroring.\n- MAINTAINING.md: note the package now bundles the WASI tool runner.",
          "is_bot": false,
          "headline": "Fix LiDAR panic on COPC files (capacity overflow -> clean handling)",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-17T01:22:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4e23f7ca916db3b3d4a6f106a9982b597301335",
          "body": "Bump to 0.4.0 and bundle the WASI tool runner into the package so wbtools_oss is\nusable from npm. New whitebox-wasm/tools subpath (tools.mjs + tools.d.ts) runs\nthe 733 path-based tools through an in-memory WASI filesystem via\n@bjorn3/browser_wasi_shim (declared dependency); raster outputs are COGs. \n[…]\ne. release.yml builds whitebox-cli, runs\nscripts/finalize-pkg.mjs to add it + the deps/exports, and also attaches it to\nthe GitHub Release. Verified: listTools()=733, slope->COG, convex_hull->GeoJSON.",
          "is_bot": false,
          "headline": "Include the WhiteboxTools suite in the npm package (whitebox-wasm/tools)",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-17T01:14:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "586f84aeef705fb1099f1cdc663f35e27b7405f1",
          "body": "…oad links\n\n- wbraster: geotiff::write now defaults to COG (tiled + overviews + GDAL ghost)\n  with explicit Deflate compression, so every tool's raster output opens in\n  geotiff.js / GeoLibre / QGIS (fixes 'Tiff is not tiled'). Affects all tools.\n- demo Tools tab: add vector tools (minimum_convex_hu\n[…]\nhelp, raster + vector\n  examples, COG output, in-browser note). MAINTAINING.md: add the wbraster patch.\n\nVerified via the WASI shim: slope -> tiled Deflate COG; minimum_convex_hull ->\nGeoJSON polygon.",
          "is_bot": false,
          "headline": "Tools: COG+Deflate output, vector tool demos, README usage, fix downl…",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-17T00:55:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ceb229aafd51a755dbffb66c9dbd489bdda8ccbf",
          "body": "The Pages demo now runs the real wbtools_oss algorithm suite client-side: a new\nTools tab loads whitebox-cli.wasm (the WASI binary) through a WASI shim with an\nin-memory filesystem, runs a tool (slope/aspect/hillshade/mean/gaussian) on a\nDEM, validates the output with the browser package, and offers it for download.\nPages workflow builds whitebox-cli for wasm32-wasip1 and ships it as\nwhitebox-cli.wasm. Verified end to end in Node via @bjorn3/browser_wasi_shim.",
          "is_bot": false,
          "headline": "demo: add Tools tab running WhiteboxTools (WASI) in the browser",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-17T00:09:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d30bdbd7d615f9c5d74dab6c60bf550d95069e05",
          "body": "Add the WASI CLI badge, split the overview into the two artifacts (browser/Node\nlibrary + WASI tool runner), add a 'Tools (WASI): 733 WhiteboxTools' bullet\nlinking to the run-on-files section, and point maintainers at MAINTAINING.md.",
          "is_bot": false,
          "headline": "docs: surface the WASI tool runner in the README intro",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-17T00:02:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3444e3a0275328a5398169dfa270e0f256c20616",
          "body": "Document every WASM compatibility issue and its fix (getrandom js feature,\nkdtree/criterion patch, ureq/networking, path-I/O -> WASI), the exact local\npatch set applied to vendored crates (6 source files + kdtree-wasm + workspace\nconfig) so it survives re-vendoring, and a step-by-step procedure for pulling\nupdates from upstream whitebox_next_gen. Link it from the README.",
          "is_bot": false,
          "headline": "docs: add MAINTAINING.md (WASM fixes + upstream re-sync guide)",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T23:59:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a245d8ca6c99d3e19d5c91b785632fe2ef9dbbe5",
          "body": "The wbtools_oss algorithm suite is path-based (reads/writes rasters by file\npath), so it cannot run in the browser, but it runs under WASI where there is a\nreal filesystem. Vendor wbcore/wbraster/wbtools_oss + a patched kdtree (drops\nits criterion normal-dependency, the only WASI compile blocker) an\n[…]\nmtime: slope + mean_filter on a real 2880x1773 DEM\nproduce valid GeoTIFFs (slope 0-63.7 deg). These crates are a separate WASI\nartifact; the browser npm package does not include them. Add wasi.yml CI.",
          "is_bot": false,
          "headline": "Add WASI tool runner: run all 733 wbtools_oss tools on regular files",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T23:55:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c87074eabd3fa7c874f41a7a8a2c38d421847f4d",
          "body": "Add a 'Compiling other Whitebox crates to WASM' section: the getrandom js fix\nfor the vendored crates, and the three dependency blockers for wbtools_oss\n(getrandom 0.2/0.4, ureq->rustls->ring networking, kdtree's criterion packaging\nbug) with fixes, plus the path-based-I/O runtime caveat.",
          "is_bot": false,
          "headline": "docs: document WASM compilation of other crates + wbtools_oss blockers",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T23:40:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c3e074e5674fe6aac1933d24ded8e711a2147b0",
          "body": "Tabbed UI exercising all modules client-side: Raster (GeoTIFF info/stats),\nVector (read -> GeoJSON + metadata + reproject), LiDAR (LAS/LAZ/PLY header +\npoints), Analysis (convex hull + Moran's I with an SVG scatter/hull plot).\nBundle sample.geojson and sample.las; Pages workflow copies them into the site.",
          "is_bot": false,
          "headline": "Demo: add Vector, LiDAR, and Analysis tabs to the Pages demo",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T23:18:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "356291748a41a760a6bf6898772f04c6328a69a7",
          "body": "Adds all compilable Whitebox crates to the WASM package:\n- Vector (wbvector): read 8 formats -> GeoJSON, metadata, reprojection\n- LiDAR (wblidar): read LAS/LAZ/PLY -> xyz/classification/intensity\n- Analysis (wbtopology/wbspatialstats): convex hull, Moran's I\nBroaden package description/keywords/README to the full geospatial toolkit.",
          "is_bot": false,
          "headline": "Release v0.3.0: vector, LiDAR, and analysis modules",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T23:03:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49538dbb3f1c723236ab3184c16ee8abf116c31d",
          "body": "…tats)\n\nconvex_hull(points_xy) -> hull ring Float64Array.\nmorans_i(points_xy, values, distance_threshold) -> JSON global spatial\nautocorrelation (binary distance-band weights built in the wrapper).\nVerified: square+interior -> square ring; gradient field -> I=0.64, z=15.4.",
          "is_bot": false,
          "headline": "Add analysis module: convex hull (wbtopology) + Moran's I (wbspatials…",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T23:00:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09afd832eeb2bbd47f83ebeeb9667bbe1da0e0e4",
          "body": "Backed by wblidar (native LAS reader + LASzip decoder, no C). API:\nlidar_formats(), lidar_info(data, format) (header-only count/bounds/epsg for\nLAS/LAZ), lidar_read_xyz -> Float64Array, lidar_read_classification -> Uint8Array,\nlidar_read_intensity -> Uint16Array. Added LazReader::header() passthrough to the\nvendored crate. Verified on a 1000-point LAS fixture (bounds, xyz, attrs).",
          "is_bot": false,
          "headline": "Add lidar module: read LAS/LAZ/PLY point clouds in memory",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T22:57:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "766ac1ab1c284d7d6743525a54be0d52222fadae",
          "body": "Vendor wbhdf/wbvector/wblidar/wbtopology/wbspatialstats into the workspace\n(wbspatialstats gets getrandom's js feature on wasm). New vector API backed by\nwbvector: vector_formats(), vector_to_geojson(data, format),\nvector_to_geojson_reproject(data, format, dst_epsg, src_epsg), vector_info().\nReads G\n[…]\nN/TopoJSON/GML/GPX/KML (text) and FlatGeobuf/GeoPackage/KMZ (binary)\nclient-side; added geopackage::from_bytes to the vendored crate. Verified\nGeoJSON roundtrip, metadata, and 4326->3857 reprojection.",
          "is_bot": false,
          "headline": "Add vector module: read 8 formats in memory, GeoJSON out, reproject",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T22:52:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e5be4afefd9ad74c816110dac8303bc09e9bc09b",
          "body": "GeoTiffReader/CogBuilder/CogStream classes, typed pixel reads, COG writing,\nHTTP range-request streaming, header-only metadata for gigapixel rasters,\nimage center + bbox (native CRS and WGS84 lon/lat with full EPSG and\nuser-defined projection support via vendored wbprojection).",
          "is_bot": false,
          "headline": "Release v0.2.0",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T22:32:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "28f655414b09fa78b58084efcc1fa94e1d6ee050",
          "body": "checkout v4->v6, setup-node v4->v6, configure-pages v5->v6,\nupload-pages-artifact v3->v5, deploy-pages v4->v5, action-gh-release v2->v3.\nBump project Node 20->22 (LTS). Clears the Node 20 runtime deprecation\nwarnings. (Swatinem/rust-cache already on latest v2; dtolnay/rust-toolchain\n@stable is a moving ref.)",
          "is_bot": false,
          "headline": "ci: update all GitHub Actions to latest majors, Node 22",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T22:29:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5f9dec967f5da50ff74c6cdbcb1705a717d7b94",
          "body": "- Vendor the pure-Rust wbprojection crate (no PROJ/C). lon/lat conversion now\n  works for any EPSG code (UTM, Albers 5070, Lambert, state plane, 3857, ...)\n  via Crs::from_epsg + transform_to, replacing the hardcoded 4326/3857 math.\n- wbgeotiff: GeoKeyDirectory::to_proj_string() builds a PROJ string\n[…]\ntive\n  fixture suite needing un-vendored data).\n\nVerified: NLCD Albers center -> (-96.87, 38.72); dem.tif 3857, UTM 32610,\nAlbers 5070 all correct. WASM size ~1.4MB -> ~3.5MB (embedded EPSG database).",
          "is_bot": false,
          "headline": "Vendor wbprojection for full EPSG + user-defined CRS lon/lat",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T22:27:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2f04608632a2d965229d4024a6dcc364ec2c60c4",
          "body": "- wbgeotiff: GeoTiffMeta/peek_meta now carry the geo-transform.\n- geotiff_info JSON gains bbox, center, center_lonlat.\n- GeoTiffReader and CogStream: center(), center_lonlat(), bounds_lonlat()\n  (bounding_box() already present; added to CogStream too).\n- WGS84 conversion is exact for EPSG:4326 (with\n[…]\nreported as 4326, e.g. NLCD Albers, return empty\n  instead of garbage) and EPSG:3857 (closed-form). Native-CRS bbox/center always\n  available when georeferenced. Verified: dem.tif -> (-122.75, 44.40).",
          "is_bot": false,
          "headline": "Add image center and bbox coordinates (native CRS + WGS84 lon/lat)",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T22:11:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ee88306cf01e0647624bf28355d83d39aca04d3",
          "body": "- wbgeotiff: parse_cog_layout() parses the IFD chain (all overview levels) and\n  tile index from front-of-file header bytes only; CogLevel::decode_tile_f64()\n  decodes a single tile. Reuses read_all_ifds + the existing tile codec path.\n- wrapper: CogStream class for reading remote COGs via HTTP rang\n[…]\ny under a cell budget, shows metadata otherwise.\n- examples/cog-stream.mjs reads a 256x256 window fetching ~13% of a remote COG.\n  Verified: streamed window matches full decode exactly (0 mismatches).",
          "is_bot": false,
          "headline": "Add COG range-request streaming + guard against gigapixel OOM panics",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T14:19:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "41cd0cc694b34daeb50bc78b181a51d33f4290b1",
          "body": "- GeoTiffReader class: parse once, then width/height/bands/epsg/nodata/\n  sample_format/compression/bigtiff, geo_transform/bounding_box/value_transform,\n  read_band_f64/read_all_f64/read_band_bytes and native typed reads\n  (u8/i8/u16/i16/u32/i32/f32), info_json/stats_json.\n- CogBuilder class: encode\n[…]\n Keep convenience fns (geotiff_info/stats/read_band_f64/version).\n- Docs: full API in both READMEs; add examples/read-from-url.mjs (reads a COG\n  from an HTTP URL, verified against a real public COG).",
          "is_bot": false,
          "headline": "Expose full GeoTIFF API: reader class, typed reads, COG writer",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T14:09:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b62902cbd5fefa52e3102c0095371ce97bc7a126",
          "body": "- wbgeotiff: GeoTiff::peek_meta() parses only the header (O(header) memory),\n  so geotiff_info now works on multi-GB rasters (e.g. NLCD CONUS 161190x104424)\n  that previously OOMed; from_bytes no longer triple-copies the input.\n- wrapper: geotiff_info reports bits/sample_format/compression/tiled/bigtiff;\n  new geotiff_read_band_f64(data, band) returns pixel values as a Float64Array.",
          "is_bot": false,
          "headline": "Add header-only metadata + pixel-data read API",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T14:00:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d2818964f1574dda03e64de4ae12cc14a067f78",
          "body": "Adding the panic hook changed the wasm import surface (0 -> 4 imports), so\nreturning visitors with a cached whitebox_wasm.js loaded the new .wasm and\nhit 'function import requires a callable'. Append ?v=<sha> to both the JS\nmodule import and the wasm URL, injected at deploy time, so the pair always\nupdates together.",
          "is_bot": false,
          "headline": "Cache-bust demo glue+wasm by commit SHA to prevent LinkError mismatch",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T13:48:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8a20e69f26a8d9f5503c526e0a4c5929623e389",
          "body": "A GDAL float DEM uses NaN as its nodata sentinel; geotiff_info emitted\n\"nodata\":NaN, which is not valid JSON, so JSON.parse threw and the demo\nhung at 'Decoding'. Serialize non-finite f64 as null (matching\nJSON.stringify), route stats min/max/mean through the same helper, add a\nconsole_error_panic_hook, and wrap the demo decode in try/catch so errors\nare shown instead of hanging.\n\nVerified against the real 2880x1773 float64 DEM.",
          "is_bot": false,
          "headline": "Fix invalid JSON for NaN/Infinity values (NaN nodata hung the demo)",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T13:44:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88618fb6810cf57c5762c0172b77f222138a12d1",
          "body": null,
          "is_bot": false,
          "headline": "Credit the original whitebox_next_gen project in both READMEs",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T13:39:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b09a99ff80906df483f9760d9c480cf87869f95c",
          "body": "Replace the NPM_TOKEN secret flow with OIDC-based Trusted Publishing:\nadd id-token: write permission, upgrade npm to >= 11.5.1, and publish\nwithout a token (provenance is attached automatically).",
          "is_bot": false,
          "headline": "Use npm Trusted Publishing (OIDC) in release workflow",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T13:37:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d30f02693acb1e7f18ed7bae31ae70c2c5ba0e35",
          "body": "wasm-pack only copies a README into pkg/ if one exists in the crate\ndirectory. Add crates/whitebox-wasm/README.md and set the readme field.",
          "is_bot": false,
          "headline": "Add crate-level README so npm renders package docs",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T13:29:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83f50f78bf479d258686be60c64a76f209b113e6",
          "body": "Drop the @opengeos scope from the wasm-pack build in CI/release/Pages\nworkflows and update the README install/import instructions.",
          "is_bot": false,
          "headline": "Publish npm package unscoped as whitebox-wasm",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T13:16:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49641858da05d6d7a344529f8065a397aa044867",
          "body": "Wraps the vendored, self-contained wbgeotiff crate (no GDAL/PROJ/HDF5) and\nexposes geotiff_info / geotiff_stats / version over wasm-bindgen.\n\n- crates/whitebox-wasm: wasm-bindgen wrapper, builds to @opengeos/whitebox-wasm\n- crates/wbgeotiff: vendored pure-Rust GeoTIFF engine (MIT OR Apache-2.0)\n- de\n[…]\nes/node-demo.mjs: runnable Node example and smoke test\n- CI: host tests + wasm-pack build + Node smoke\n- Release (on tag): npm publish + GitHub Release assets\n- Pages: live demo deploy on push to main",
          "is_bot": false,
          "headline": "Initial commit: pure-Rust GeoTIFF decoding in WebAssembly",
          "author_name": "Qiusheng Wu",
          "author_login": "giswqs",
          "committed_at": "2026-06-16T13:06:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 6,
      "commits_last_year": 37,
      "latest_release_at": "2026-07-17T20:35:42Z",
      "latest_release_tag": "v0.5.0",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 4,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 6.3
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "wbhdf",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [
            "gis",
            "hdf4",
            "hdf5",
            "geospatial",
            "remote-sensing",
            "science",
            "filesystem",
            "parser-implementations"
          ],
          "ecosystem": "crates",
          "matches_repo": false,
          "registry_url": "https://crates.io/crates/wbhdf",
          "is_deprecated": false,
          "latest_version": "0.1.0",
          "repository_url": "https://github.com/jblindsay/whitebox_next_gen",
          "versions_count": 1,
          "total_downloads": 17,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 6,
          "first_published_at": "2026-06-03T02:24:16.183758Z",
          "latest_published_at": "2026-06-03T02:24:16.183758Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 50
        },
        {
          "name": "wblidar",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [],
          "ecosystem": "crates",
          "matches_repo": false,
          "registry_url": "https://crates.io/crates/wblidar",
          "is_deprecated": false,
          "latest_version": "0.1.2",
          "repository_url": "https://github.com/jblindsay/whitebox_next_gen",
          "versions_count": 3,
          "total_downloads": 68,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 13,
          "first_published_at": "2026-03-31T10:19:44.185480Z",
          "latest_published_at": "2026-05-21T21:42:34.155809Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 62
        },
        {
          "name": "wbraster",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [
            "gis",
            "geospatial",
            "raster",
            "grid",
            "remote-sensing",
            "encoding",
            "filesystem",
            "science"
          ],
          "ecosystem": "crates",
          "matches_repo": false,
          "registry_url": "https://crates.io/crates/wbraster",
          "is_deprecated": false,
          "latest_version": "0.2.0",
          "repository_url": "https://github.com/jblindsay/whitebox_next_gen",
          "versions_count": 7,
          "total_downloads": 179,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 45,
          "first_published_at": "2026-03-31T03:52:28.277924Z",
          "latest_published_at": "2026-05-21T21:42:42.290405Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 62
        },
        {
          "name": "wbvector",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [
            "gis",
            "geojson",
            "geospatial",
            "shapefile",
            "geopackage",
            "encoding",
            "science::geo"
          ],
          "ecosystem": "crates",
          "matches_repo": false,
          "registry_url": "https://crates.io/crates/wbvector",
          "is_deprecated": false,
          "latest_version": "0.1.5",
          "repository_url": "https://github.com/jblindsay/whitebox_next_gen",
          "versions_count": 6,
          "total_downloads": 6320,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 2096,
          "first_published_at": "2026-03-31T03:52:47.982233Z",
          "latest_published_at": "2026-06-30T19:36:39.794536Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 22
        },
        {
          "name": "wbgeotiff",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [
            "gis",
            "raster",
            "cog",
            "geotiff",
            "bigtiff",
            "science",
            "encoding",
            "filesystem"
          ],
          "ecosystem": "crates",
          "matches_repo": false,
          "registry_url": "https://crates.io/crates/wbgeotiff",
          "is_deprecated": false,
          "latest_version": "0.1.2",
          "repository_url": "https://github.com/jblindsay/whitebox_next_gen",
          "versions_count": 3,
          "total_downloads": 341,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 86,
          "first_published_at": "2026-03-31T03:51:17.361478Z",
          "latest_published_at": "2026-05-07T21:21:45.793078Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 76
        },
        {
          "name": "wbtopology",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [
            "gis",
            "geometry",
            "spatial",
            "topology",
            "jts",
            "algorithms",
            "science::geo"
          ],
          "ecosystem": "crates",
          "matches_repo": false,
          "registry_url": "https://crates.io/crates/wbtopology",
          "is_deprecated": false,
          "latest_version": "0.2.0",
          "repository_url": "https://github.com/jblindsay/whitebox_next_gen",
          "versions_count": 4,
          "total_downloads": 6168,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 2052,
          "first_published_at": "2026-03-31T03:53:08.434292Z",
          "latest_published_at": "2026-05-21T21:42:49.235647Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 62
        },
        {
          "name": "kdtree",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [
            "search",
            "tree",
            "geo",
            "nearest",
            "neighbor"
          ],
          "ecosystem": "crates",
          "matches_repo": false,
          "registry_url": "https://crates.io/crates/kdtree",
          "is_deprecated": false,
          "latest_version": "0.8.0",
          "repository_url": "https://github.com/mrhooray/kdtree-rs",
          "versions_count": 14,
          "total_downloads": 2440292,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 149072,
          "first_published_at": "2015-08-08T22:28:47.143276Z",
          "latest_published_at": "2025-11-02T01:38:01.361852Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 263
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 7,
      "watchers": 2,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "Cargo.toml",
        "crates/kdtree-wasm/Cargo.toml",
        "crates/wbcore/Cargo.toml",
        "crates/wbgeotiff/Cargo.toml",
        "crates/wbhdf/Cargo.toml",
        "crates/wblidar/Cargo.toml",
        "crates/wbprojection/Cargo.toml",
        "crates/wbraster/Cargo.toml",
        "crates/wbspatialstats/Cargo.toml",
        "crates/wbtools_oss/Cargo.toml",
        "crates/wbtopology/Cargo.toml",
        "crates/wbvector/Cargo.toml",
        "crates/whitebox-cli/Cargo.toml",
        "crates/whitebox-wasm/Cargo.toml"
      ],
      "largest_source_bytes": 2002974,
      "source_files_sampled": 406,
      "oversized_source_files": 48,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "Cargo.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 30,
        "malicious_count": 0,
        "assessed_package": "crates:wbhdf@0.1.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "crates"
      ],
      "dependencies": [
        {
          "name": "num-traits",
          "manifest": "crates/kdtree-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "serde",
          "manifest": "crates/kdtree-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "serde_derive",
          "manifest": "crates/kdtree-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "thiserror",
          "manifest": "crates/kdtree-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.0"
        },
        {
          "name": "serde",
          "manifest": "crates/wbcore/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "crates/wbcore/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "thiserror",
          "manifest": "crates/wbcore/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "thiserror",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "flate2",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "lz4_flex",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.11"
        },
        {
          "name": "weezl",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "jpeg-encoder",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.6"
        },
        {
          "name": "jpeg-decoder",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "webp-rust",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2.1"
        },
        {
          "name": "png",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.17"
        },
        {
          "name": "zune-core",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.5"
        },
        {
          "name": "zune-jpegxl",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.5"
        },
        {
          "name": "jxl-oxide",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "rayon",
          "manifest": "crates/wbgeotiff/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "byteorder",
          "manifest": "crates/wbhdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.5"
        },
        {
          "name": "flate2",
          "manifest": "crates/wbhdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "miniz_oxide",
          "manifest": "crates/wbhdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8"
        },
        {
          "name": "thiserror",
          "manifest": "crates/wbhdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "wide",
          "manifest": "crates/wblidar/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.2"
        },
        {
          "name": "wbprojection",
          "manifest": "crates/wblidar/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.0"
        },
        {
          "name": "wbhdf",
          "manifest": "crates/wblidar/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "reqwest",
          "manifest": "crates/wblidar/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "rayon",
          "manifest": "crates/wblidar/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.10"
        },
        {
          "name": "thiserror",
          "manifest": "crates/wbprojection/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "wide",
          "manifest": "crates/wbprojection/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.2"
        },
        {
          "name": "rayon",
          "manifest": "crates/wbprojection/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.10"
        },
        {
          "name": "serde",
          "manifest": "crates/wbprojection/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "serde",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_json",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0.149"
        },
        {
          "name": "flate2",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.1.9"
        },
        {
          "name": "tar",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4.45"
        },
        {
          "name": "zip",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "8.5.1"
        },
        {
          "name": "ruzstd",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8.2"
        },
        {
          "name": "lz4_flex",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13.0"
        },
        {
          "name": "jpeg-encoder",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.7.0"
        },
        {
          "name": "jpeg-decoder",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.2"
        },
        {
          "name": "png",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.18.1"
        },
        {
          "name": "thiserror",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.0.18"
        },
        {
          "name": "rayon",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.12.0"
        },
        {
          "name": "wide",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.3.0"
        },
        {
          "name": "wbprojection",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.0"
        },
        {
          "name": "wbgeotiff",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.2"
        },
        {
          "name": "wbhdf",
          "manifest": "crates/wbraster/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.0"
        },
        {
          "name": "nalgebra",
          "manifest": "crates/wbspatialstats/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.34"
        },
        {
          "name": "ndarray",
          "manifest": "crates/wbspatialstats/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.15"
        },
        {
          "name": "rayon",
          "manifest": "crates/wbspatialstats/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.7"
        },
        {
          "name": "rand",
          "manifest": "crates/wbspatialstats/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8"
        },
        {
          "name": "serde",
          "manifest": "crates/wbspatialstats/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "serde_json",
          "manifest": "crates/wbspatialstats/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "thiserror",
          "manifest": "crates/wbspatialstats/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "log",
          "manifest": "crates/wbspatialstats/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "wbcore",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbraster",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbgeotiff",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbvector",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbprojection",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbtopology",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wblidar",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbspatialstats",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "rayon",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "rand",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.10.0"
        },
        {
          "name": "wide",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.2.0"
        },
        {
          "name": "chrono",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "image",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.25"
        },
        {
          "name": "kdtree",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8.0"
        },
        {
          "name": "evalexpr",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "13.1.0"
        },
        {
          "name": "nalgebra",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.34.1"
        },
        {
          "name": "smartcore",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4.9"
        },
        {
          "name": "bincode",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "rustfft",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "6.2"
        },
        {
          "name": "time",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "ureq",
          "manifest": "crates/wbtools_oss/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.12.1"
        },
        {
          "name": "wbvector",
          "manifest": "crates/wbtopology/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.4"
        },
        {
          "name": "rayon",
          "manifest": "crates/wbtopology/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.10"
        },
        {
          "name": "robust",
          "manifest": "crates/wbtopology/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.2.0"
        },
        {
          "name": "thiserror",
          "manifest": "crates/wbvector/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "flatbuffers",
          "manifest": "crates/wbvector/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "24.12.23"
        },
        {
          "name": "wbprojection",
          "manifest": "crates/wbvector/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.0"
        },
        {
          "name": "zip",
          "manifest": "crates/wbvector/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.6"
        },
        {
          "name": "osmpbfreader",
          "manifest": "crates/wbvector/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.16"
        },
        {
          "name": "parquet",
          "manifest": "crates/wbvector/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "58.3"
        },
        {
          "name": "serde_json",
          "manifest": "crates/wbvector/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "bytes",
          "manifest": "crates/wbvector/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "wbtools_oss",
          "manifest": "crates/whitebox-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbcore",
          "manifest": "crates/whitebox-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "crates/whitebox-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "wbgeotiff",
          "manifest": "crates/whitebox-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbprojection",
          "manifest": "crates/whitebox-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbvector",
          "manifest": "crates/whitebox-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wblidar",
          "manifest": "crates/whitebox-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbtopology",
          "manifest": "crates/whitebox-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wbspatialstats",
          "manifest": "crates/whitebox-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "wasm-bindgen",
          "manifest": "crates/whitebox-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "console_error_panic_hook",
          "manifest": "crates/whitebox-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 9,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 2,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "giswqs",
          "commits": 37,
          "avatar_url": "https://avatars.githubusercontent.com/u/5016453?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "pages.yml",
        "release.yml",
        "wasi.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "9 out of 9 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 2/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 5 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 3,
            "reason": "7 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "8d2aa4e2990a28f84739f24a60ba62e8e440f5bf",
        "ran_at": "2026-07-23T04:32:37Z",
        "aggregate_score": 3.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-17T20:35:51Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-17T20:28:12Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/opengeos/whitebox-wasm",
    "host": "github.com",
    "name": "whitebox-wasm",
    "owner": "opengeos"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 56,
      "inputs": {
        "security": 46,
        "vitality": 68,
        "community": 30,
        "governance": 58,
        "engineering": 71
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 68,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 53,
            "inputs": {
              "commits_last_year": 37,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 4
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "4/52 weeks with commits",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "37 commits in the last year",
                "points": 14.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 37
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 6,
              "latest_release_tag": "v0.5.0",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 6.3
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "6 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~6.3 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 6.3
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 30,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 13,
            "inputs": {
              "forks": 0,
              "stars": 7,
              "watchers": 2,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "7 stars",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "2 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 58,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 5 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "merged_prs": 9,
              "open_issues": 0,
              "closed_issues": 2,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "9/9 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 9,
                      "decided": 9
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 2/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "followers": 3832,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "opengeos",
              "public_repos": 168,
              "account_age_days": 1205
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "3,832 followers of opengeos",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 3832,
                      "login": "opengeos"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "168 public repos, account ~3 yr old",
                "points": 19.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 168
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 3
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 71,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "4 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "9 out of 9 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "cog",
                "geospatial",
                "geotiff",
                "gis",
                "rust",
                "wasm",
                "webassembly",
                "whiteboxtools"
              ],
              "has_wiki": true,
              "homepage": "http://opengeos.org/whitebox-wasm",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "http://opengeos.org/whitebox-wasm",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "8 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 46,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 33,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 3.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "9 out of 9 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 2/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 5 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "7 existing vulnerabilities detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the crates:wbhdf@0.1.0 runtime dependency closure — what installing the published package pulls in — 30 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "crates:wbhdf@0.1.0",
                  "assessed": 30
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 30,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 30,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 4
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 54,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.973,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "36 of 37 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 36,
                      "sampled": 37
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "Cargo.toml",
                "crates/kdtree-wasm/Cargo.toml",
                "crates/wbcore/Cargo.toml",
                "crates/wbgeotiff/Cargo.toml",
                "crates/wbhdf/Cargo.toml",
                "crates/wblidar/Cargo.toml",
                "crates/wbprojection/Cargo.toml",
                "crates/wbraster/Cargo.toml",
                "crates/wbspatialstats/Cargo.toml",
                "crates/wbtools_oss/Cargo.toml",
                "crates/wbtopology/Cargo.toml",
                "crates/wbvector/Cargo.toml",
                "crates/whitebox-cli/Cargo.toml",
                "crates/whitebox-wasm/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Cargo.toml, crates/kdtree-wasm/Cargo.toml, crates/wbcore/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "Cargo.toml, crates/kdtree-wasm/Cargo.toml, crates/wbcore/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Rust (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 37",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 37
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 94,
            "inputs": {
              "primary_language": "Rust",
              "largest_source_bytes": 2002974,
              "source_files_sampled": 406,
              "oversized_source_files": 48
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Rust (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "48/406 source files over 60KB",
                "points": 48.5,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 406,
                      "oversized": 48
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "crates package 'wbhdf' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring",
    "Could not fetch crates package 'wbcore' from its registry",
    "crates package 'wblidar' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring",
    "crates package 'wbraster' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring",
    "crates package 'wbvector' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring",
    "crates package 'wbgeotiff' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring",
    "crates package 'wbtopology' points at a different repository (https://github.com/jblindsay/whitebox_next_gen); excluded from ecosystem scoring",
    "crates package 'kdtree' points at a different repository (https://github.com/mrhooray/kdtree-rs); excluded from ecosystem scoring",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T04:32:47.320629Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/o/opengeos/whitebox-wasm.svg",
  "full_name": "opengeos/whitebox-wasm",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikencrates.io.