{"adoption": {"forks": 498, "observed_at": "2026-08-28T04:05:30.386462+00:00", "stars": 1742}, "canonical_url": "https://ross.abutalabs.com/products/testlib", "card": {"archived": false, "artifact_type": "library", "description": "C++ library to develop competitive programming problems", "domain": ["developer-tools", "education", "testing"], "enriched": true, "function": ["testing", "data-generation", "parser", "developer-tools"], "health_score": 82, "homepage": null, "language": "C++", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["MikeMirzayanov/testlib"], "name": "MikeMirzayanov/testlib", "platform": ["cpp", "cross-platform", "cli"], "pushed_at": "2026-08-23T01:28:24+00:00", "repo": "MikeMirzayanov/testlib", "stars": 1742, "tags": ["competitive-programming", "codeforces", "icpc", "ioi", "polygon", "checkers", "validators", "generators", "interactors", "test-data", "algorithms"], "topics": ["codeforces", "contests", "icpc", "ioi", "polygon"], "urls": [], "use_cases": ["write a checker to judge contestant output for a programming contest problem", "generate random test cases for a competitive programming problem", "validate that problem input files follow the stated constraints", "build an interactive problem where the solution communicates with an interactor", "prepare problems for Codeforces or Polygon", "compare participant answers with the jury answer while ignoring whitespace"], "what_it_is": "A C++ header-only library for building competitive programming problem infrastructure: checkers, validators, generators, and interactors. It is the de facto standard used by Codeforces, ICPC, and Polygon-based contest preparation.", "when_to_avoid": ["you need general-purpose software testing or unit test frameworks", "your project has nothing to do with competitive programming or contest judging", "you are not working in C++"], "when_to_choose": ["you are setting or preparing problems for a competitive programming contest", "you need standardized checkers, validators, generators, or interactors compatible with Codeforces/Polygon", "you want battle-tested judging components used by ICPC and national olympiads"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/testlib", "repo": "MikeMirzayanov/testlib", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:29:54.864690+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f127f6b7292e6b26eebc74f4d887535506d6e6fc84c2f51738f81de5121834fd", "fetched_at": "2026-08-28T04:05:30.386462+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MikeMirzayanov/testlib"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:29:54.864690+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f127f6b7292e6b26eebc74f4d887535506d6e6fc84c2f51738f81de5121834fd", "fetched_at": "2026-08-28T04:05:30.386462+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MikeMirzayanov/testlib"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:29:54.864690+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f127f6b7292e6b26eebc74f4d887535506d6e6fc84c2f51738f81de5121834fd", "fetched_at": "2026-08-28T04:05:30.386462+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MikeMirzayanov/testlib"}], "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:30.386462+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:29:54.864690+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f127f6b7292e6b26eebc74f4d887535506d6e6fc84c2f51738f81de5121834fd", "fetched_at": "2026-08-28T04:05:30.386462+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MikeMirzayanov/testlib"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:29:54.864690+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f127f6b7292e6b26eebc74f4d887535506d6e6fc84c2f51738f81de5121834fd", "fetched_at": "2026-08-28T04:05:30.386462+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MikeMirzayanov/testlib"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:29:54.864690+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f127f6b7292e6b26eebc74f4d887535506d6e6fc84c2f51738f81de5121834fd", "fetched_at": "2026-08-28T04:05:30.386462+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MikeMirzayanov/testlib"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:30.386462+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:29:54.864690+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f127f6b7292e6b26eebc74f4d887535506d6e6fc84c2f51738f81de5121834fd", "fetched_at": "2026-08-28T04:05:30.386462+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MikeMirzayanov/testlib"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:29:54.864690+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f127f6b7292e6b26eebc74f4d887535506d6e6fc84c2f51738f81de5121834fd", "fetched_at": "2026-08-28T04:05:30.386462+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MikeMirzayanov/testlib"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:29:54.864690+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f127f6b7292e6b26eebc74f4d887535506d6e6fc84c2f51738f81de5121834fd", "fetched_at": "2026-08-28T04:05:30.386462+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MikeMirzayanov/testlib"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:29:54.864690+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f127f6b7292e6b26eebc74f4d887535506d6e6fc84c2f51738f81de5121834fd", "fetched_at": "2026-08-28T04:05:30.386462+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MikeMirzayanov/testlib"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4109, "days_push": 11, "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}}