{"adoption": {"forks": 61, "observed_at": "2026-08-28T04:04:12.901672+00:00", "stars": 1275}, "canonical_url": "https://ross.abutalabs.com/products/phpat", "card": {"archived": false, "artifact_type": "plugin", "description": "✔️ PHP Architecture Tester - Easy architecture testing for PHP ", "domain": ["testing", "developer-tools", "backend"], "enriched": true, "function": ["testing", "linter", "developer-tools"], "health_score": 96, "homepage": "https://phpat.dev", "language": "PHP", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["carlosas/phpat"], "name": "carlosas/phpat", "platform": ["php", "cli"], "pushed_at": "2026-08-10T07:02:55+00:00", "repo": "carlosas/phpat", "stars": 1275, "tags": ["phpstan", "phpstan-extension", "static-analysis", "architecture-testing", "architecture-rules", "dependency-rules", "clean-architecture", "ddd", "composer", "php"], "topics": ["php", "static-analysis", "testing", "architecture", "linter", "phpstan-extension"], "urls": [], "use_cases": ["enforce architecture rules in a php project", "prevent domain layer from depending on infrastructure in php", "verify php layer boundaries with phpstan", "check forbidden dependencies between php namespaces", "assert php classes are final, readonly, or enums", "guard ddd bounded context independence in php", "run architecture conformance tests in ci for php code"], "what_it_is": "PHP Architecture Tester (PHPat) is a PHPStan extension that verifies architectural requirements in PHP codebases, such as which namespaces or classes may depend on which. Rules are written in PHP with a fluent DSL of selectors and assertions, and are executed as part of a standard PHPStan analysis run.", "when_to_avoid": ["your codebase does not use PHPStan and you are unwilling to adopt it as a dependency", "you need runtime or behavioral testing of code rather than static structural checks", "you require a guaranteed-stable API, since pre-1.0 releases may introduce breaking changes in minor versions"], "when_to_choose": ["your project already uses PHPStan and you want architecture checks in the same analysis pipeline with baselines and caching", "you need to enforce layer boundaries like domain/application/infrastructure or hexagonal architecture rules", "you prefer writing readable fluent-PHP rules with selectors, regex matching, and because-explanations over config-file-only tools"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/phpat", "repo": "carlosas/phpat", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:03:00.832152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56c6b215ec7b0aa17105985d8edd28f77616649c91c6a6d7568169ae11ef04f0", "fetched_at": "2026-08-28T04:04:12.901672+00:00", "kind": "readme", "missing": false, "url": "https://github.com/carlosas/phpat"}, {"content_hash": "b26bce29ec9a9e456e3b75339844a286cee72be224fbce2562f9532d6e226f22", "fetched_at": "2026-08-29T12:14:08.623742+00:00", "kind": "homepage", "missing": false, "url": "https://phpat.dev"}, {"content_hash": "a902e6172a4a499e45fc60e5a85dc1819c6ad80b0072d9403a96542c1c8df039", "fetched_at": "2026-08-29T12:14:08.632820+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/getting-started"}, {"content_hash": "b7781f0bf200d74fcfe1d961550c79ca95aeffe4fbd8f7ec715f45fe794faa7b", "fetched_at": "2026-08-29T12:14:08.635599+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/rules"}, {"content_hash": "44d0510caba94ff437fc8e466f1f2bc6da42fb4f05ecb2d20b36d1e21a69d023", "fetched_at": "2026-08-29T12:14:08.638532+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/selectors"}, {"content_hash": "cd7205d8048a312e13517a4c8d1db0a41bcd1d443182bd04cd6b815c2604d2e7", "fetched_at": "2026-08-29T12:14:08.642354+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/assertions"}, {"content_hash": "f57734d1d1df5b0d3b0bd16e90f42a8fa17adad5cb83b4881d2c1cf71436ed67", "fetched_at": "2026-08-29T12:14:08.645172+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/configuration"}, {"content_hash": "bc2cd64b8b3f850ad713828fc2c9fedc485902e870aca53470ab567ecffc30d3", "fetched_at": "2026-08-29T12:14:08.647256+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/other"}, {"content_hash": "484da74cb9b90fd9fa279d102a89006f5bc42d4666bcba578dae60ecf61bc40c", "fetched_at": "2026-08-29T12:14:08.651459+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/about"}, {"content_hash": "72fb154626e8bce43361fa2f4e1217b41f9b5d2256dab8a0d8f6f2ade9fb4283", "fetched_at": "2026-08-29T12:14:08.649184+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/CHANGELOG"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:03:00.832152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56c6b215ec7b0aa17105985d8edd28f77616649c91c6a6d7568169ae11ef04f0", "fetched_at": "2026-08-28T04:04:12.901672+00:00", "kind": "readme", "missing": false, "url": "https://github.com/carlosas/phpat"}, {"content_hash": "b26bce29ec9a9e456e3b75339844a286cee72be224fbce2562f9532d6e226f22", "fetched_at": "2026-08-29T12:14:08.623742+00:00", "kind": "homepage", "missing": false, "url": "https://phpat.dev"}, {"content_hash": "a902e6172a4a499e45fc60e5a85dc1819c6ad80b0072d9403a96542c1c8df039", "fetched_at": "2026-08-29T12:14:08.632820+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/getting-started"}, {"content_hash": "b7781f0bf200d74fcfe1d961550c79ca95aeffe4fbd8f7ec715f45fe794faa7b", "fetched_at": "2026-08-29T12:14:08.635599+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/rules"}, {"content_hash": "44d0510caba94ff437fc8e466f1f2bc6da42fb4f05ecb2d20b36d1e21a69d023", "fetched_at": "2026-08-29T12:14:08.638532+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/selectors"}, {"content_hash": "cd7205d8048a312e13517a4c8d1db0a41bcd1d443182bd04cd6b815c2604d2e7", "fetched_at": "2026-08-29T12:14:08.642354+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/assertions"}, {"content_hash": "f57734d1d1df5b0d3b0bd16e90f42a8fa17adad5cb83b4881d2c1cf71436ed67", "fetched_at": "2026-08-29T12:14:08.645172+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/configuration"}, {"content_hash": "bc2cd64b8b3f850ad713828fc2c9fedc485902e870aca53470ab567ecffc30d3", "fetched_at": "2026-08-29T12:14:08.647256+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/other"}, {"content_hash": "484da74cb9b90fd9fa279d102a89006f5bc42d4666bcba578dae60ecf61bc40c", "fetched_at": "2026-08-29T12:14:08.651459+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/about"}, {"content_hash": "72fb154626e8bce43361fa2f4e1217b41f9b5d2256dab8a0d8f6f2ade9fb4283", "fetched_at": "2026-08-29T12:14:08.649184+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/CHANGELOG"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:03:00.832152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56c6b215ec7b0aa17105985d8edd28f77616649c91c6a6d7568169ae11ef04f0", "fetched_at": "2026-08-28T04:04:12.901672+00:00", "kind": "readme", "missing": false, "url": "https://github.com/carlosas/phpat"}, {"content_hash": "b26bce29ec9a9e456e3b75339844a286cee72be224fbce2562f9532d6e226f22", "fetched_at": "2026-08-29T12:14:08.623742+00:00", "kind": "homepage", "missing": false, "url": "https://phpat.dev"}, {"content_hash": "a902e6172a4a499e45fc60e5a85dc1819c6ad80b0072d9403a96542c1c8df039", "fetched_at": "2026-08-29T12:14:08.632820+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/getting-started"}, {"content_hash": "b7781f0bf200d74fcfe1d961550c79ca95aeffe4fbd8f7ec715f45fe794faa7b", "fetched_at": "2026-08-29T12:14:08.635599+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/rules"}, {"content_hash": "44d0510caba94ff437fc8e466f1f2bc6da42fb4f05ecb2d20b36d1e21a69d023", "fetched_at": "2026-08-29T12:14:08.638532+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/selectors"}, {"content_hash": "cd7205d8048a312e13517a4c8d1db0a41bcd1d443182bd04cd6b815c2604d2e7", "fetched_at": "2026-08-29T12:14:08.642354+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/assertions"}, {"content_hash": "f57734d1d1df5b0d3b0bd16e90f42a8fa17adad5cb83b4881d2c1cf71436ed67", "fetched_at": "2026-08-29T12:14:08.645172+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/configuration"}, {"content_hash": "bc2cd64b8b3f850ad713828fc2c9fedc485902e870aca53470ab567ecffc30d3", "fetched_at": "2026-08-29T12:14:08.647256+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/other"}, {"content_hash": "484da74cb9b90fd9fa279d102a89006f5bc42d4666bcba578dae60ecf61bc40c", "fetched_at": "2026-08-29T12:14:08.651459+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/about"}, {"content_hash": "72fb154626e8bce43361fa2f4e1217b41f9b5d2256dab8a0d8f6f2ade9fb4283", "fetched_at": "2026-08-29T12:14:08.649184+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/CHANGELOG"}], "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:12.901672+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:03:00.832152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56c6b215ec7b0aa17105985d8edd28f77616649c91c6a6d7568169ae11ef04f0", "fetched_at": "2026-08-28T04:04:12.901672+00:00", "kind": "readme", "missing": false, "url": "https://github.com/carlosas/phpat"}, {"content_hash": "b26bce29ec9a9e456e3b75339844a286cee72be224fbce2562f9532d6e226f22", "fetched_at": "2026-08-29T12:14:08.623742+00:00", "kind": "homepage", "missing": false, "url": "https://phpat.dev"}, {"content_hash": "a902e6172a4a499e45fc60e5a85dc1819c6ad80b0072d9403a96542c1c8df039", "fetched_at": "2026-08-29T12:14:08.632820+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/getting-started"}, {"content_hash": "b7781f0bf200d74fcfe1d961550c79ca95aeffe4fbd8f7ec715f45fe794faa7b", "fetched_at": "2026-08-29T12:14:08.635599+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/rules"}, {"content_hash": "44d0510caba94ff437fc8e466f1f2bc6da42fb4f05ecb2d20b36d1e21a69d023", "fetched_at": "2026-08-29T12:14:08.638532+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/selectors"}, {"content_hash": "cd7205d8048a312e13517a4c8d1db0a41bcd1d443182bd04cd6b815c2604d2e7", "fetched_at": "2026-08-29T12:14:08.642354+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/assertions"}, {"content_hash": "f57734d1d1df5b0d3b0bd16e90f42a8fa17adad5cb83b4881d2c1cf71436ed67", "fetched_at": "2026-08-29T12:14:08.645172+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/configuration"}, {"content_hash": "bc2cd64b8b3f850ad713828fc2c9fedc485902e870aca53470ab567ecffc30d3", "fetched_at": "2026-08-29T12:14:08.647256+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/other"}, {"content_hash": "484da74cb9b90fd9fa279d102a89006f5bc42d4666bcba578dae60ecf61bc40c", "fetched_at": "2026-08-29T12:14:08.651459+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/about"}, {"content_hash": "72fb154626e8bce43361fa2f4e1217b41f9b5d2256dab8a0d8f6f2ade9fb4283", "fetched_at": "2026-08-29T12:14:08.649184+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/CHANGELOG"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:03:00.832152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56c6b215ec7b0aa17105985d8edd28f77616649c91c6a6d7568169ae11ef04f0", "fetched_at": "2026-08-28T04:04:12.901672+00:00", "kind": "readme", "missing": false, "url": "https://github.com/carlosas/phpat"}, {"content_hash": "b26bce29ec9a9e456e3b75339844a286cee72be224fbce2562f9532d6e226f22", "fetched_at": "2026-08-29T12:14:08.623742+00:00", "kind": "homepage", "missing": false, "url": "https://phpat.dev"}, {"content_hash": "a902e6172a4a499e45fc60e5a85dc1819c6ad80b0072d9403a96542c1c8df039", "fetched_at": "2026-08-29T12:14:08.632820+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/getting-started"}, {"content_hash": "b7781f0bf200d74fcfe1d961550c79ca95aeffe4fbd8f7ec715f45fe794faa7b", "fetched_at": "2026-08-29T12:14:08.635599+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/rules"}, {"content_hash": "44d0510caba94ff437fc8e466f1f2bc6da42fb4f05ecb2d20b36d1e21a69d023", "fetched_at": "2026-08-29T12:14:08.638532+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/selectors"}, {"content_hash": "cd7205d8048a312e13517a4c8d1db0a41bcd1d443182bd04cd6b815c2604d2e7", "fetched_at": "2026-08-29T12:14:08.642354+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/assertions"}, {"content_hash": "f57734d1d1df5b0d3b0bd16e90f42a8fa17adad5cb83b4881d2c1cf71436ed67", "fetched_at": "2026-08-29T12:14:08.645172+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/configuration"}, {"content_hash": "bc2cd64b8b3f850ad713828fc2c9fedc485902e870aca53470ab567ecffc30d3", "fetched_at": "2026-08-29T12:14:08.647256+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/other"}, {"content_hash": "484da74cb9b90fd9fa279d102a89006f5bc42d4666bcba578dae60ecf61bc40c", "fetched_at": "2026-08-29T12:14:08.651459+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/about"}, {"content_hash": "72fb154626e8bce43361fa2f4e1217b41f9b5d2256dab8a0d8f6f2ade9fb4283", "fetched_at": "2026-08-29T12:14:08.649184+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/CHANGELOG"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:03:00.832152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56c6b215ec7b0aa17105985d8edd28f77616649c91c6a6d7568169ae11ef04f0", "fetched_at": "2026-08-28T04:04:12.901672+00:00", "kind": "readme", "missing": false, "url": "https://github.com/carlosas/phpat"}, {"content_hash": "b26bce29ec9a9e456e3b75339844a286cee72be224fbce2562f9532d6e226f22", "fetched_at": "2026-08-29T12:14:08.623742+00:00", "kind": "homepage", "missing": false, "url": "https://phpat.dev"}, {"content_hash": "a902e6172a4a499e45fc60e5a85dc1819c6ad80b0072d9403a96542c1c8df039", "fetched_at": "2026-08-29T12:14:08.632820+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/getting-started"}, {"content_hash": "b7781f0bf200d74fcfe1d961550c79ca95aeffe4fbd8f7ec715f45fe794faa7b", "fetched_at": "2026-08-29T12:14:08.635599+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/rules"}, {"content_hash": "44d0510caba94ff437fc8e466f1f2bc6da42fb4f05ecb2d20b36d1e21a69d023", "fetched_at": "2026-08-29T12:14:08.638532+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/selectors"}, {"content_hash": "cd7205d8048a312e13517a4c8d1db0a41bcd1d443182bd04cd6b815c2604d2e7", "fetched_at": "2026-08-29T12:14:08.642354+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/assertions"}, {"content_hash": "f57734d1d1df5b0d3b0bd16e90f42a8fa17adad5cb83b4881d2c1cf71436ed67", "fetched_at": "2026-08-29T12:14:08.645172+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/configuration"}, {"content_hash": "bc2cd64b8b3f850ad713828fc2c9fedc485902e870aca53470ab567ecffc30d3", "fetched_at": "2026-08-29T12:14:08.647256+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/other"}, {"content_hash": "484da74cb9b90fd9fa279d102a89006f5bc42d4666bcba578dae60ecf61bc40c", "fetched_at": "2026-08-29T12:14:08.651459+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/about"}, {"content_hash": "72fb154626e8bce43361fa2f4e1217b41f9b5d2256dab8a0d8f6f2ade9fb4283", "fetched_at": "2026-08-29T12:14:08.649184+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/CHANGELOG"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.901672+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:03:00.832152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56c6b215ec7b0aa17105985d8edd28f77616649c91c6a6d7568169ae11ef04f0", "fetched_at": "2026-08-28T04:04:12.901672+00:00", "kind": "readme", "missing": false, "url": "https://github.com/carlosas/phpat"}, {"content_hash": "b26bce29ec9a9e456e3b75339844a286cee72be224fbce2562f9532d6e226f22", "fetched_at": "2026-08-29T12:14:08.623742+00:00", "kind": "homepage", "missing": false, "url": "https://phpat.dev"}, {"content_hash": "a902e6172a4a499e45fc60e5a85dc1819c6ad80b0072d9403a96542c1c8df039", "fetched_at": "2026-08-29T12:14:08.632820+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/getting-started"}, {"content_hash": "b7781f0bf200d74fcfe1d961550c79ca95aeffe4fbd8f7ec715f45fe794faa7b", "fetched_at": "2026-08-29T12:14:08.635599+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/rules"}, {"content_hash": "44d0510caba94ff437fc8e466f1f2bc6da42fb4f05ecb2d20b36d1e21a69d023", "fetched_at": "2026-08-29T12:14:08.638532+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/selectors"}, {"content_hash": "cd7205d8048a312e13517a4c8d1db0a41bcd1d443182bd04cd6b815c2604d2e7", "fetched_at": "2026-08-29T12:14:08.642354+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/assertions"}, {"content_hash": "f57734d1d1df5b0d3b0bd16e90f42a8fa17adad5cb83b4881d2c1cf71436ed67", "fetched_at": "2026-08-29T12:14:08.645172+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/configuration"}, {"content_hash": "bc2cd64b8b3f850ad713828fc2c9fedc485902e870aca53470ab567ecffc30d3", "fetched_at": "2026-08-29T12:14:08.647256+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/other"}, {"content_hash": "484da74cb9b90fd9fa279d102a89006f5bc42d4666bcba578dae60ecf61bc40c", "fetched_at": "2026-08-29T12:14:08.651459+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/about"}, {"content_hash": "72fb154626e8bce43361fa2f4e1217b41f9b5d2256dab8a0d8f6f2ade9fb4283", "fetched_at": "2026-08-29T12:14:08.649184+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/CHANGELOG"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:03:00.832152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56c6b215ec7b0aa17105985d8edd28f77616649c91c6a6d7568169ae11ef04f0", "fetched_at": "2026-08-28T04:04:12.901672+00:00", "kind": "readme", "missing": false, "url": "https://github.com/carlosas/phpat"}, {"content_hash": "b26bce29ec9a9e456e3b75339844a286cee72be224fbce2562f9532d6e226f22", "fetched_at": "2026-08-29T12:14:08.623742+00:00", "kind": "homepage", "missing": false, "url": "https://phpat.dev"}, {"content_hash": "a902e6172a4a499e45fc60e5a85dc1819c6ad80b0072d9403a96542c1c8df039", "fetched_at": "2026-08-29T12:14:08.632820+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/getting-started"}, {"content_hash": "b7781f0bf200d74fcfe1d961550c79ca95aeffe4fbd8f7ec715f45fe794faa7b", "fetched_at": "2026-08-29T12:14:08.635599+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/rules"}, {"content_hash": "44d0510caba94ff437fc8e466f1f2bc6da42fb4f05ecb2d20b36d1e21a69d023", "fetched_at": "2026-08-29T12:14:08.638532+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/selectors"}, {"content_hash": "cd7205d8048a312e13517a4c8d1db0a41bcd1d443182bd04cd6b815c2604d2e7", "fetched_at": "2026-08-29T12:14:08.642354+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/assertions"}, {"content_hash": "f57734d1d1df5b0d3b0bd16e90f42a8fa17adad5cb83b4881d2c1cf71436ed67", "fetched_at": "2026-08-29T12:14:08.645172+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/configuration"}, {"content_hash": "bc2cd64b8b3f850ad713828fc2c9fedc485902e870aca53470ab567ecffc30d3", "fetched_at": "2026-08-29T12:14:08.647256+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/other"}, {"content_hash": "484da74cb9b90fd9fa279d102a89006f5bc42d4666bcba578dae60ecf61bc40c", "fetched_at": "2026-08-29T12:14:08.651459+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/about"}, {"content_hash": "72fb154626e8bce43361fa2f4e1217b41f9b5d2256dab8a0d8f6f2ade9fb4283", "fetched_at": "2026-08-29T12:14:08.649184+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/CHANGELOG"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:03:00.832152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56c6b215ec7b0aa17105985d8edd28f77616649c91c6a6d7568169ae11ef04f0", "fetched_at": "2026-08-28T04:04:12.901672+00:00", "kind": "readme", "missing": false, "url": "https://github.com/carlosas/phpat"}, {"content_hash": "b26bce29ec9a9e456e3b75339844a286cee72be224fbce2562f9532d6e226f22", "fetched_at": "2026-08-29T12:14:08.623742+00:00", "kind": "homepage", "missing": false, "url": "https://phpat.dev"}, {"content_hash": "a902e6172a4a499e45fc60e5a85dc1819c6ad80b0072d9403a96542c1c8df039", "fetched_at": "2026-08-29T12:14:08.632820+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/getting-started"}, {"content_hash": "b7781f0bf200d74fcfe1d961550c79ca95aeffe4fbd8f7ec715f45fe794faa7b", "fetched_at": "2026-08-29T12:14:08.635599+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/rules"}, {"content_hash": "44d0510caba94ff437fc8e466f1f2bc6da42fb4f05ecb2d20b36d1e21a69d023", "fetched_at": "2026-08-29T12:14:08.638532+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/selectors"}, {"content_hash": "cd7205d8048a312e13517a4c8d1db0a41bcd1d443182bd04cd6b815c2604d2e7", "fetched_at": "2026-08-29T12:14:08.642354+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/assertions"}, {"content_hash": "f57734d1d1df5b0d3b0bd16e90f42a8fa17adad5cb83b4881d2c1cf71436ed67", "fetched_at": "2026-08-29T12:14:08.645172+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/configuration"}, {"content_hash": "bc2cd64b8b3f850ad713828fc2c9fedc485902e870aca53470ab567ecffc30d3", "fetched_at": "2026-08-29T12:14:08.647256+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/other"}, {"content_hash": "484da74cb9b90fd9fa279d102a89006f5bc42d4666bcba578dae60ecf61bc40c", "fetched_at": "2026-08-29T12:14:08.651459+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/about"}, {"content_hash": "72fb154626e8bce43361fa2f4e1217b41f9b5d2256dab8a0d8f6f2ade9fb4283", "fetched_at": "2026-08-29T12:14:08.649184+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/CHANGELOG"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:03:00.832152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56c6b215ec7b0aa17105985d8edd28f77616649c91c6a6d7568169ae11ef04f0", "fetched_at": "2026-08-28T04:04:12.901672+00:00", "kind": "readme", "missing": false, "url": "https://github.com/carlosas/phpat"}, {"content_hash": "b26bce29ec9a9e456e3b75339844a286cee72be224fbce2562f9532d6e226f22", "fetched_at": "2026-08-29T12:14:08.623742+00:00", "kind": "homepage", "missing": false, "url": "https://phpat.dev"}, {"content_hash": "a902e6172a4a499e45fc60e5a85dc1819c6ad80b0072d9403a96542c1c8df039", "fetched_at": "2026-08-29T12:14:08.632820+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/getting-started"}, {"content_hash": "b7781f0bf200d74fcfe1d961550c79ca95aeffe4fbd8f7ec715f45fe794faa7b", "fetched_at": "2026-08-29T12:14:08.635599+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/rules"}, {"content_hash": "44d0510caba94ff437fc8e466f1f2bc6da42fb4f05ecb2d20b36d1e21a69d023", "fetched_at": "2026-08-29T12:14:08.638532+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/selectors"}, {"content_hash": "cd7205d8048a312e13517a4c8d1db0a41bcd1d443182bd04cd6b815c2604d2e7", "fetched_at": "2026-08-29T12:14:08.642354+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/assertions"}, {"content_hash": "f57734d1d1df5b0d3b0bd16e90f42a8fa17adad5cb83b4881d2c1cf71436ed67", "fetched_at": "2026-08-29T12:14:08.645172+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/configuration"}, {"content_hash": "bc2cd64b8b3f850ad713828fc2c9fedc485902e870aca53470ab567ecffc30d3", "fetched_at": "2026-08-29T12:14:08.647256+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/documentation/other"}, {"content_hash": "484da74cb9b90fd9fa279d102a89006f5bc42d4666bcba578dae60ecf61bc40c", "fetched_at": "2026-08-29T12:14:08.651459+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/about"}, {"content_hash": "72fb154626e8bce43361fa2f4e1217b41f9b5d2256dab8a0d8f6f2ade9fb4283", "fetched_at": "2026-08-29T12:14:08.649184+00:00", "kind": "site_page", "missing": false, "url": "https://www.phpat.dev/CHANGELOG"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 75}, "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": 2550, "days_push": 23, "days_rel": 169, "gap_med": 23, "n_releases_24m": 18}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}