{"adoption": {"forks": 125, "observed_at": "2026-08-28T04:05:39.068143+00:00", "stars": 1806}, "canonical_url": "https://ross.abutalabs.com/products/prusti-dev", "card": {"archived": false, "artifact_type": "cli-tool", "description": "A static verifier for Rust, based on the Viper verification infrastructure.", "domain": ["programming-languages", "developer-tools"], "enriched": true, "function": ["testing", "developer-tools", "parser"], "health_score": 86, "homepage": "http://prusti.org", "language": "Rust", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["viperproject/prusti-dev"], "name": "viperproject/prusti-dev", "platform": ["rust", "windows", "editor-plugin"], "pushed_at": "2026-08-26T16:13:52+00:00", "repo": "viperproject/prusti-dev", "stars": 1806, "tags": ["formal-verification", "static-analysis", "deductive-verification", "viper", "specification", "rust", "algorithms", "linux", "macos"], "topics": ["rust", "verification", "viper", "formal-verification"], "urls": [], "use_cases": ["formally verify rust code correctness", "prove absence of panics and integer overflows in rust", "check preconditions and postconditions on rust functions", "verify loop invariants in rust programs", "statically analyze rust code for bugs", "specify and check functional contracts in rust"], "what_it_is": "Prusti is a static verifier for Rust that formally proves absence of panics, integer overflows, and other bugs, and checks user-specified contracts such as preconditions, postconditions, and loop invariants. It is built on the Viper verification infrastructure and leverages Rust's ownership type system to simplify specifications.", "when_to_avoid": ["you only need conventional testing or linting rather than formal proofs", "your codebase relies heavily on unsafe Rust, which is largely unsupported", "you need a mature production tool rather than a prototype verifier"], "when_to_choose": ["you need formal correctness guarantees for safety-critical Rust code", "you want to prove absence of panics and overflows beyond what the type system provides", "you are doing research or teaching in program verification with Rust"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/prusti-dev", "repo": "viperproject/prusti-dev", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:21:32.381457+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "914d7cfcbef137150d2a38f4260e9970a99bd60cde6e519d6eb04b123f0fdfb5", "fetched_at": "2026-08-28T04:05:39.068143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viperproject/prusti-dev"}, {"content_hash": "9fd1f55457fab01667e59dabb229471fb839e630abd4bdd1d0d4b25dc4db5971", "fetched_at": "2026-08-29T11:00:38.433038+00:00", "kind": "homepage", "missing": false, "url": "http://prusti.org"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:21:32.381457+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "914d7cfcbef137150d2a38f4260e9970a99bd60cde6e519d6eb04b123f0fdfb5", "fetched_at": "2026-08-28T04:05:39.068143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viperproject/prusti-dev"}, {"content_hash": "9fd1f55457fab01667e59dabb229471fb839e630abd4bdd1d0d4b25dc4db5971", "fetched_at": "2026-08-29T11:00:38.433038+00:00", "kind": "homepage", "missing": false, "url": "http://prusti.org"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:21:32.381457+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "914d7cfcbef137150d2a38f4260e9970a99bd60cde6e519d6eb04b123f0fdfb5", "fetched_at": "2026-08-28T04:05:39.068143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viperproject/prusti-dev"}, {"content_hash": "9fd1f55457fab01667e59dabb229471fb839e630abd4bdd1d0d4b25dc4db5971", "fetched_at": "2026-08-29T11:00:38.433038+00:00", "kind": "homepage", "missing": false, "url": "http://prusti.org"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:21:32.381457+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "914d7cfcbef137150d2a38f4260e9970a99bd60cde6e519d6eb04b123f0fdfb5", "fetched_at": "2026-08-28T04:05:39.068143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viperproject/prusti-dev"}, {"content_hash": "9fd1f55457fab01667e59dabb229471fb839e630abd4bdd1d0d4b25dc4db5971", "fetched_at": "2026-08-29T11:00:38.433038+00:00", "kind": "homepage", "missing": false, "url": "http://prusti.org"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:21:32.381457+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "914d7cfcbef137150d2a38f4260e9970a99bd60cde6e519d6eb04b123f0fdfb5", "fetched_at": "2026-08-28T04:05:39.068143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viperproject/prusti-dev"}, {"content_hash": "9fd1f55457fab01667e59dabb229471fb839e630abd4bdd1d0d4b25dc4db5971", "fetched_at": "2026-08-29T11:00:38.433038+00:00", "kind": "homepage", "missing": false, "url": "http://prusti.org"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:21:32.381457+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "914d7cfcbef137150d2a38f4260e9970a99bd60cde6e519d6eb04b123f0fdfb5", "fetched_at": "2026-08-28T04:05:39.068143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viperproject/prusti-dev"}, {"content_hash": "9fd1f55457fab01667e59dabb229471fb839e630abd4bdd1d0d4b25dc4db5971", "fetched_at": "2026-08-29T11:00:38.433038+00:00", "kind": "homepage", "missing": false, "url": "http://prusti.org"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.068143+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:21:32.381457+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "914d7cfcbef137150d2a38f4260e9970a99bd60cde6e519d6eb04b123f0fdfb5", "fetched_at": "2026-08-28T04:05:39.068143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viperproject/prusti-dev"}, {"content_hash": "9fd1f55457fab01667e59dabb229471fb839e630abd4bdd1d0d4b25dc4db5971", "fetched_at": "2026-08-29T11:00:38.433038+00:00", "kind": "homepage", "missing": false, "url": "http://prusti.org"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:21:32.381457+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "914d7cfcbef137150d2a38f4260e9970a99bd60cde6e519d6eb04b123f0fdfb5", "fetched_at": "2026-08-28T04:05:39.068143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viperproject/prusti-dev"}, {"content_hash": "9fd1f55457fab01667e59dabb229471fb839e630abd4bdd1d0d4b25dc4db5971", "fetched_at": "2026-08-29T11:00:38.433038+00:00", "kind": "homepage", "missing": false, "url": "http://prusti.org"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:21:32.381457+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "914d7cfcbef137150d2a38f4260e9970a99bd60cde6e519d6eb04b123f0fdfb5", "fetched_at": "2026-08-28T04:05:39.068143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viperproject/prusti-dev"}, {"content_hash": "9fd1f55457fab01667e59dabb229471fb839e630abd4bdd1d0d4b25dc4db5971", "fetched_at": "2026-08-29T11:00:38.433038+00:00", "kind": "homepage", "missing": false, "url": "http://prusti.org"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:21:32.381457+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "914d7cfcbef137150d2a38f4260e9970a99bd60cde6e519d6eb04b123f0fdfb5", "fetched_at": "2026-08-28T04:05:39.068143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viperproject/prusti-dev"}, {"content_hash": "9fd1f55457fab01667e59dabb229471fb839e630abd4bdd1d0d4b25dc4db5971", "fetched_at": "2026-08-29T11:00:38.433038+00:00", "kind": "homepage", "missing": false, "url": "http://prusti.org"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2660, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}