{"adoption": {"forks": 72, "observed_at": "2026-08-28T04:03:36.355290+00:00", "stars": 1105}, "canonical_url": "https://ross.abutalabs.com/products/pose", "card": {"archived": false, "artifact_type": "library", "description": "Replace any .NET method (including static and non-virtual) with a delegate", "domain": ["testing", "developer-tools"], "enriched": true, "function": ["mocking", "testing"], "health_score": 20, "homepage": null, "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["tonerdo/pose"], "name": "tonerdo/pose", "platform": ["dotnet", "cross-platform", "windows"], "pushed_at": "2022-09-23T12:14:55+00:00", "repo": "tonerdo/pose", "stars": 1105, "tags": ["shims", "isolation-framework", "reflection-emit", "static-method-mocking", "csharp", "unit-testing", "linux", "macos"], "topics": ["testing", "testing-framework", "isolation-framework", "dotnet", "dotnet-core", "csharp", "mocking"], "urls": [], "use_cases": ["mock static methods in c# unit tests", "replace datetime.now in tests", "shim non-virtual instance methods in .net", "isolate code under test from console and system dependencies", "mock constructors in dotnet tests", "alternative to microsoft fakes without unmanaged apis"], "what_it_is": "Pose is a .NET isolation/mocking library that lets you replace any method—including static, non-virtual, and constructors—with a delegate at runtime. It is implemented entirely in managed code via Reflection Emit, requiring no profiling APIs or rewritten assemblies, and targets .NET Standard 2.0.", "when_to_avoid": ["you only need to mock interfaces or virtual methods—a standard mocking library like Moq is simpler", "your project targets modern .NET versions beyond what Pose supports", "you need actively maintained tooling with ongoing support"], "when_to_choose": ["you need to mock static, non-virtual, or sealed methods in .NET tests", "you want a Microsoft Fakes alternative that works cross-platform without profiling APIs", "you test legacy .NET code that cannot be refactored for dependency injection"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pose", "repo": "tonerdo/pose", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:44:35.852119+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e83027fb7bd11eea59e49e26da6dcc003225548e7efa07b7b6a79f1d449f20d6", "fetched_at": "2026-08-28T04:03:36.355290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonerdo/pose"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:44:35.852119+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e83027fb7bd11eea59e49e26da6dcc003225548e7efa07b7b6a79f1d449f20d6", "fetched_at": "2026-08-28T04:03:36.355290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonerdo/pose"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:44:35.852119+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e83027fb7bd11eea59e49e26da6dcc003225548e7efa07b7b6a79f1d449f20d6", "fetched_at": "2026-08-28T04:03:36.355290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonerdo/pose"}], "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:03:36.355290+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:44:35.852119+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e83027fb7bd11eea59e49e26da6dcc003225548e7efa07b7b6a79f1d449f20d6", "fetched_at": "2026-08-28T04:03:36.355290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonerdo/pose"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:44:35.852119+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e83027fb7bd11eea59e49e26da6dcc003225548e7efa07b7b6a79f1d449f20d6", "fetched_at": "2026-08-28T04:03:36.355290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonerdo/pose"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:44:35.852119+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e83027fb7bd11eea59e49e26da6dcc003225548e7efa07b7b6a79f1d449f20d6", "fetched_at": "2026-08-28T04:03:36.355290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonerdo/pose"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:36.355290+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:44:35.852119+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e83027fb7bd11eea59e49e26da6dcc003225548e7efa07b7b6a79f1d449f20d6", "fetched_at": "2026-08-28T04:03:36.355290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonerdo/pose"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:44:35.852119+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e83027fb7bd11eea59e49e26da6dcc003225548e7efa07b7b6a79f1d449f20d6", "fetched_at": "2026-08-28T04:03:36.355290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonerdo/pose"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:44:35.852119+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e83027fb7bd11eea59e49e26da6dcc003225548e7efa07b7b6a79f1d449f20d6", "fetched_at": "2026-08-28T04:03:36.355290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonerdo/pose"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:44:35.852119+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e83027fb7bd11eea59e49e26da6dcc003225548e7efa07b7b6a79f1d449f20d6", "fetched_at": "2026-08-28T04:03:36.355290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonerdo/pose"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3319, "days_push": 1440, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}