{"adoption": {"forks": 98, "observed_at": "2026-08-28T04:04:20.988209+00:00", "stars": 1317}, "canonical_url": "https://ross.abutalabs.com/products/crosshair", "card": {"archived": false, "artifact_type": "library", "description": "An analysis tool for Python that blurs the line between testing and type systems.", "domain": ["testing", "developer-tools", "programming-languages"], "enriched": true, "function": ["testing", "fuzzing", "type-system", "linter"], "health_score": 99, "homepage": null, "language": "Python", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["pschanely/CrossHair"], "name": "pschanely/CrossHair", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2026-08-19T15:15:09+00:00", "repo": "pschanely/CrossHair", "stars": 1317, "tags": ["symbolic-execution", "concolic-execution", "contracts", "smt-solver", "z3", "property-based-testing", "static-analysis", "counterexample-generation", "unit-test-generation", "algorithms"], "topics": ["python", "static-analysis", "testing-framework", "symbolic-execution", "type-systems", "fuzzing", "contracts", "dynamic-analysis", "testing", "z3", "concolic-execution", "hacktoberfest"], "urls": [], "use_cases": ["verify python functions against type annotations and contracts", "find counterexamples to function postconditions", "generate unit tests automatically from contracts", "find behavioral differences between two functions", "use symbolic execution as a hypothesis testing backend", "check preconditions and postconditions in python code"], "what_it_is": "CrossHair is a Python analysis tool that verifies functions against type annotations and contracts using symbolic execution backed by an SMT solver. It finds counterexamples, generates unit tests, and diffs behavior between functions.", "when_to_avoid": ["you need fast, lightweight linting without deep analysis", "your code is not type-annotated or contract-specified", "you need support for languages other than python"], "when_to_choose": ["you have type-annotated python code with contracts you want verified", "you want deeper path exploration than random property-based testing", "you want to generate unit tests or diff function behavior"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/crosshair", "repo": "pschanely/CrossHair", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:48:13.977318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90dd9d11d37039e1e4a5aca7c11225f400194c8da56cd62e58fb02fb4a3277aa", "fetched_at": "2026-08-28T04:04:20.988209+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pschanely/CrossHair"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:48:13.977318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90dd9d11d37039e1e4a5aca7c11225f400194c8da56cd62e58fb02fb4a3277aa", "fetched_at": "2026-08-28T04:04:20.988209+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pschanely/CrossHair"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:48:13.977318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90dd9d11d37039e1e4a5aca7c11225f400194c8da56cd62e58fb02fb4a3277aa", "fetched_at": "2026-08-28T04:04:20.988209+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pschanely/CrossHair"}], "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:04:20.988209+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:48:13.977318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90dd9d11d37039e1e4a5aca7c11225f400194c8da56cd62e58fb02fb4a3277aa", "fetched_at": "2026-08-28T04:04:20.988209+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pschanely/CrossHair"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:48:13.977318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90dd9d11d37039e1e4a5aca7c11225f400194c8da56cd62e58fb02fb4a3277aa", "fetched_at": "2026-08-28T04:04:20.988209+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pschanely/CrossHair"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:48:13.977318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90dd9d11d37039e1e4a5aca7c11225f400194c8da56cd62e58fb02fb4a3277aa", "fetched_at": "2026-08-28T04:04:20.988209+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pschanely/CrossHair"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.988209+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:48:13.977318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90dd9d11d37039e1e4a5aca7c11225f400194c8da56cd62e58fb02fb4a3277aa", "fetched_at": "2026-08-28T04:04:20.988209+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pschanely/CrossHair"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:48:13.977318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90dd9d11d37039e1e4a5aca7c11225f400194c8da56cd62e58fb02fb4a3277aa", "fetched_at": "2026-08-28T04:04:20.988209+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pschanely/CrossHair"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:48:13.977318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90dd9d11d37039e1e4a5aca7c11225f400194c8da56cd62e58fb02fb4a3277aa", "fetched_at": "2026-08-28T04:04:20.988209+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pschanely/CrossHair"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:48:13.977318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90dd9d11d37039e1e4a5aca7c11225f400194c8da56cd62e58fb02fb4a3277aa", "fetched_at": "2026-08-28T04:04:20.988209+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pschanely/CrossHair"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 98}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3291, "days_push": 14, "days_rel": 17, "gap_med": 10, "n_releases_24m": 40}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}