Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [
"hacktoberfest",
"security-updates-only"
],
"is_fork": false,
"size_kb": 1907,
"has_wiki": false,
"homepage": "https://docs.laminas.dev/laminas-uri/",
"languages": {
"PHP": 121391
},
"pushed_at": "2025-12-05T10:03:18Z",
"created_at": "2019-12-31T22:31:35Z",
"owner_type": "Organization",
"updated_at": "2025-12-05T10:02:16Z",
"description": "A component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)",
"is_archived": false,
"is_disabled": false,
"license_spdx": "BSD-3-Clause",
"default_branch": "2.15.x",
"license_spdx_raw": "BSD-3-Clause",
"primary_language": "PHP",
"significant_languages": [
"PHP"
]
},
"owner": {
"blog": "https://www.getlaminas.org/",
"name": "Laminas Project",
"type": "Organization",
"login": "laminas",
"company": null,
"location": null,
"followers": 448,
"avatar_url": "https://avatars.githubusercontent.com/u/47865178?v=4",
"created_at": "2019-02-21T17:39:06Z",
"is_verified": null,
"public_repos": 137,
"account_age_days": 2716
},
"license": {
"state": "standard",
"spdx_id": "BSD-3-Clause",
"raw_spdx": "BSD-3-Clause",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "2.14.0",
"kind": "minor",
"published_at": "2025-12-05T10:02:42Z"
},
{
"tag": "2.13.0",
"kind": "minor",
"published_at": "2024-12-03T12:28:26Z"
},
{
"tag": "2.12.0",
"kind": "minor",
"published_at": "2024-08-03T21:24:21Z"
},
{
"tag": "2.11.0",
"kind": "minor",
"published_at": "2023-10-18T09:57:26Z"
},
{
"tag": "2.10.0",
"kind": "minor",
"published_at": "2022-10-16T15:03:55Z"
},
{
"tag": "2.9.1",
"kind": "patch",
"published_at": "2021-09-09T18:38:20Z"
},
{
"tag": "2.9.0",
"kind": "minor",
"published_at": "2021-09-09T13:58:03Z"
},
{
"tag": "2.8.1",
"kind": "patch",
"published_at": "2021-02-17T21:55:22Z"
},
{
"tag": "2.8.0",
"kind": "minor",
"published_at": "2020-10-31T20:20:13Z"
}
],
"recent_commits": [
{
"oid": "e804288f4540988903dc0ede386ce5eec87198df",
"body": "Remove support for PHP 8.1, add support for PHP 8.5",
"is_bot": false,
"headline": "Merge pull request #26 from sandesh-as/PHP8.5-support",
"author_name": "George Steel",
"author_login": "gsteel",
"committed_at": "2025-12-05T10:02:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f1577785d86050c2712d5c517345b3469606df77",
"body": "Signed-off-by: sandesh.as <cod48668@adobe.com>",
"is_bot": false,
"headline": "Allow Php 8.5 support",
"author_name": "sandesh.as",
"author_login": "sandesh-as",
"committed_at": "2025-12-05T07:11:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a57ffc21afa73a66504a4743f41b30bb9a1a9df3",
"body": "Signed-off-by: sandesh.as <cod48668@adobe.com>",
"is_bot": false,
"headline": "Allow Php 8.5 support",
"author_name": "sandesh.as",
"author_login": "sandesh-as",
"committed_at": "2025-12-05T07:07:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a01e20fc08874adf18fe99bd6bd17295e6760288",
"body": "Signed-off-by: sandesh.as <cod48668@adobe.com>",
"is_bot": false,
"headline": "Allow PHP 8.5 Support",
"author_name": "sandesh.as",
"author_login": "sandesh-as",
"committed_at": "2025-11-04T08:22:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f274bc313baa42c35357c08586b1e7bc01a8f52f",
"body": "Signed-off-by: sandesh.as <cod48668@adobe.com>",
"is_bot": false,
"headline": "Allow PHP 8.5 Support",
"author_name": "sandesh.as",
"author_login": "sandesh-as",
"committed_at": "2025-10-28T10:54:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a2a81639e3999e7f55c038ba12241d126684c49",
"body": "Signed-off-by: sandesh.as <cod48668@adobe.com>",
"is_bot": false,
"headline": "Allow PHP 8.5 Support",
"author_name": "sandesh.as",
"author_login": "sandesh-as",
"committed_at": "2025-10-28T10:54:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2da74fd574460085ed2b08295e566e49e142586",
"body": "Update docs-build workflow",
"is_bot": false,
"headline": "Merge pull request #25 from Xerkus/gh/docs",
"author_name": "Aleksei Khudiakov",
"author_login": "Xerkus",
"committed_at": "2025-10-15T13:03:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ec2e133234f565ea23e5dfd34c07fba2ef6be44",
"body": "Signed-off-by: Aleksei Khudiakov <aleksey@xerkus.pro>",
"is_bot": false,
"headline": "Update docs-build workflow",
"author_name": "Aleksei Khudiakov",
"author_login": "Xerkus",
"committed_at": "2025-10-15T13:02:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de53600ae8153b3605bb6edce8aeeef524eaafba",
"body": "Allow Laminas validator 3",
"is_bot": false,
"headline": "Merge pull request #24 from marcelthole/laminas-validator-3",
"author_name": "George Steel",
"author_login": "gsteel",
"committed_at": "2024-12-03T12:27:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cab4d9d2ed88318b46df9df040b648862b9d663c",
"body": "Signed-off-by: Marcel Thole <marcel@marcelthole.de>",
"is_bot": false,
"headline": "Remove unavailable setOptions method call for IP Validator V3",
"author_name": "Marcel Thole",
"author_login": "marcelthole",
"committed_at": "2024-12-03T08:44:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "930aa7c92c62eafce0d6ae1a6f63b34bb19539f7",
"body": "Signed-off-by: Marcel Thole <marcel@marcelthole.de>",
"is_bot": false,
"headline": "Allow laminas/laminas-validator 3.0",
"author_name": "Marcel Thole",
"author_login": "marcelthole",
"committed_at": "2024-12-03T08:43:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95a41a7592bacf4c648648a88b7c94b0c5c22b9e",
"body": "Allow PHP 8.4",
"is_bot": false,
"headline": "Merge pull request #22 from fezfez/php8.4",
"author_name": "George Steel",
"author_login": "gsteel",
"committed_at": "2024-08-03T21:22:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6c1bd617900da98918621dae70cf25e8e7f8b28",
"body": "Signed-off-by: Stéphane Demonchaux <demonchaux.stephane@gmail.com>",
"is_bot": false,
"headline": "Fix md lint",
"author_name": "Stéphane Demonchaux",
"author_login": "fezfez",
"committed_at": "2024-08-03T18:55:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0e54f0dec2c1a3fdd576a4396e5f3d9b1e35a335",
"body": "Signed-off-by: Stéphane Demonchaux <demonchaux.stephane@gmail.com>",
"is_bot": false,
"headline": "Allow PHP 8.4",
"author_name": "Stéphane Demonchaux",
"author_login": "fezfez",
"committed_at": "2024-08-03T18:44:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e662c685125061d3115906e5eb30f966842cc226",
"body": "PHP 8.3 support added",
"is_bot": false,
"headline": "Merge pull request #21 from glo71317/php_8.3",
"author_name": "Marco Pivetta",
"author_login": "Ocramius",
"committed_at": "2023-10-18T09:56:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "49b128809096fd5c7f80a65a6f6fd2440be9c4a9",
"body": null,
"is_bot": false,
"headline": "PHP 8.3 support added",
"author_name": "Rajesh Kumar",
"author_login": "glo71317",
"committed_at": "2023-10-11T11:56:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ff41a455c0790d24f30191002f6e5d880cf1248",
"body": null,
"is_bot": false,
"headline": "PHP 8.3 support added",
"author_name": "Rajesh Kumar",
"author_login": "glo71317",
"committed_at": "2023-10-11T11:51:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "663b050294945c7345cc3a61f3ca661d5f9e1f80",
"body": "Drop support php 7, add php 8.2 support",
"is_bot": false,
"headline": "Merge pull request #20 from fezfez/php8.2",
"author_name": "Marco Pivetta",
"author_login": "Ocramius",
"committed_at": "2022-10-16T15:02:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "829f29029547eca3c01c33df49c6c7f5e20f6b19",
"body": "Signed-off-by: Stéphane Demonchaux <demonchaux.stephane@gmail.com>",
"is_bot": false,
"headline": "Drop support php 7, add php 8.2 support",
"author_name": "Stéphane Demonchaux",
"author_login": "fezfez",
"committed_at": "2022-10-16T14:59:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b553be02ac95ffe9c1a503a9ed20d863c64b00d1",
"body": "🇷🇺 Русским гражданам\n\nМы, участники Laminas, родились и живем в разных странах. У многих из нас есть друзья, родственники и коллеги как в России, так и в Украине. Некоторые из нас родились в России. Некоторые из нас живут в России. У некоторых бабушки и дедушки сражались с фашистами во Второй мирово\n[…]\n that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say \"stop the war!\"\n\nSigned-off-by: Michał Bundyra <contact@webimpress.com>",
"is_bot": false,
"headline": "Message against the war, in Russian and English",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2022-03-08T15:58:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "83d1ebdd029305cc08a73eb59eaf05e1b9c3eca3",
"body": "Merge release 2.9.1 into 2.10.x",
"is_bot": false,
"headline": "Merge pull request #18 from laminas/2.9.x-merge-up-into-2.10.x_yXMvnJ2r",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-09-09T18:39:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e837dc15c8fd3949df7d1213246fd7c8640032b",
"body": "…tring\n\nEnsure UriFactory works under PHP 8.1 when provided with a relative URI",
"is_bot": false,
"headline": "Merge pull request #17 from weierophinney/hotfix/cast-null-to-empty-s…",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-09-09T18:37:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df4cdbb0efc03b67c0d11ccb71e217bf050d6845",
"body": "…ive URI\n\nA call to `$uri->getScheme()` can return a `null`.\nThe `UriFactory::factory()` method calls that method on the generated URI to determine the scheme, if any, in order to provide a more specific URI instance.\nTo do so, it passes the return value to `strtolower()`.\nThis raises a deprecation in PHP 8.1, as passing `null` to that function is now deprecated.\n\nSigned-off-by: Matthew Weier O'Phinney <matthew@weierophinney.net>",
"is_bot": false,
"headline": "fix: ensure UriFactory works under PHP 8.1 when provided with a relat…",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-09-09T18:11:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34c9386b7058bd52b3ea3b150bb34e0c97812c55",
"body": "Provide PHP 8.1 support",
"is_bot": false,
"headline": "Merge pull request #16 from weierophinney/feature/php-8.1-support",
"author_name": "Marco Pivetta",
"author_login": "Ocramius",
"committed_at": "2021-09-09T13:57:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6bb3b565c0051b51c3db5ca0abbf238101553559",
"body": "- Argument 2 to `preg_split()` must be a string; use null coalesce to provide an empty string\n- Argument 3 to `preg_split()` must be an integer; use default value of `-1`\n- `str*()` arguments must be strings; check for null before using them\n\nSigned-off-by: Matthew Weier O'Phinney <matthew@weierophinney.net>",
"is_bot": false,
"headline": "fix: ensure Uri class works with PHP 8.1",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-09-09T13:43:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98f0dc23edefe7aea4fd5bb57f6af47362fb6ffe",
"body": "Signed-off-by: Matthew Weier O'Phinney <matthew@weierophinney.net>",
"is_bot": false,
"headline": "qa: update phpunit config to latest schema",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-09-09T13:39:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e913c46d390f6bb571248e23656ce9e15e235d6c",
"body": "Primarily removes file-level docblocks.\n\nSigned-off-by: Matthew Weier O'Phinney <matthew@weierophinney.net>",
"is_bot": false,
"headline": "qa: apply laminas-coding-standard 2.2 rules",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-09-09T13:38:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0f001582eb5db1c6d8425865a76c9f4ffe004051",
"body": "- Add `~8.1.0` to list of PHP constraints\n- Change how package replaces zend-uri\n - Rename \"replace\" section to \"conflict\"\n - Change zend-uri constraint to \"*\"\n - Remove dependency on laminas-zendframework-bridge\n- Ignore PHP platform requirement when testing against PHP 8.1\n- Bump laminas-escaper and laminas-validator requirements to versions known to work with PHP 8.1\n- Bump laminas-coding-standard to 2.2 series\n\nSigned-off-by: Matthew Weier O'Phinney <matthew@weierophinney.net>",
"is_bot": false,
"headline": "feat: prepare for PHP 8.1 support",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-09-09T13:32:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ecf1c1afbfaf2c9785151a1ba47924bac6cfd4f",
"body": "Signed-off-by: Matthew Weier O'Phinney <matthew@weierophinney.net>",
"is_bot": false,
"headline": "qa: use org admin token for auto-close workflow",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-03-04T19:42:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d36c1155badc23960674240a78af530cb2c6e9e7",
"body": null,
"is_bot": false,
"headline": "Marking repository security-only",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-02-23T22:16:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd28593e25248b8fb5e561f67fb5e1dda5e3a5cd",
"body": "…b501f87.76788585\n\nMerge release 2.8.1 into 2.9.x",
"is_bot": false,
"headline": "Merge pull request #15 from laminas/2.8.x-merge-up-into-2.9.x_602d90c…",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-02-17T21:58:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7850548efa03e4dd973ba667268b7f24e68c09ce",
"body": "Signed-off-by: Matthew Weier O'Phinney <matthew@weierophinney.net>",
"is_bot": false,
"headline": "docs: update README badges",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-02-17T21:56:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44bf452aca19de0f908963bde9db3fbccf9c77ae",
"body": "Changelogs will be kept in milestone descriptions and propagated to tag and release notes.\n\nSigned-off-by: Matthew Weier O'Phinney <matthew@weierophinney.net>",
"is_bot": false,
"headline": "docs: removing changelog file",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-02-17T21:56:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c8184c66798574cc2cdcb202269d9467b0a3990",
"body": "- Removes `.travis.yml`\n- Adds continuous integration workflow\n- Adds composer lockfile\n\nSigned-off-by: Matthew Weier O'Phinney <matthew@weierophinney.net>",
"is_bot": false,
"headline": "qa: switch from Travis to GHA",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2021-02-17T21:56:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b74431a3b4c926b6f22159a9487d2426712eb537",
"body": "Updates the CHANGELOG.md file to add a changelog entry for a new 2.9.0 version.",
"is_bot": false,
"headline": "Bumps changelog version to 2.9.0",
"author_name": "Laminas Bot",
"author_login": "laminas-bot",
"committed_at": "2020-10-31T20:20:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8651611b6285529f25a4cb9a466c686d9b31468e",
"body": "Updates the CHANGELOG.md to set the release date.",
"is_bot": false,
"headline": "2.8.0 readiness",
"author_name": "Laminas Bot",
"author_login": "laminas-bot",
"committed_at": "2020-10-31T20:20:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9b08e04a9cc7feea4ef59c4d1eb2e3374578b940",
"body": null,
"is_bot": false,
"headline": "Merge pull request #12 from vpn/master",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T18:48:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4eed92b0db9db0d2214620528c84fedf61af923e",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "Added `CHANGELOG` entry",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T18:48:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9e5d6acf40ef41de29ec15ed1ff615fbd230f6a",
"body": "This supposed to be a problem in PHP 8.0+\n\nSigned-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "bugfix: avoid using `strrpos` on empty string",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T18:45:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b283f9b94107779fa75921ea0f06de1f1c8799ea",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "qa: fix codestyle",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T18:40:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b2ff20898f78371d4b54aea63e49f21148146a3",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "qa: add phpunit result cache to `.gitignore`",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T18:36:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a60b379e24d59e1090baa474c0eba56e94e3f672",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "Remove deprecated phpunit assertions",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T18:35:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3fac911680a5baf6b9f734891f2a5a9f8e3021d4",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "Optimize travis matrix to reflect all supported PHP versions",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T18:29:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e4d3df03c0b2007f46f4a9597666f857c13c79da",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "Applied coding-standard v2",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T18:26:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "453081bd8ef283f941ebb6890fb605d9f13f7218",
"body": "Signed-off-by: Patrick McGranaghan <patrick@stuf.io>",
"is_bot": false,
"headline": "Removed support for PHP versions lower than 7.3",
"author_name": "Patrick McGranaghan",
"author_login": "vpn",
"committed_at": "2020-10-31T18:24:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c6aa6032afa635fe25dbed606ec852d6d058d709",
"body": "Signed-off-by: Patrick McGranaghan <patrick@stuf.io>",
"is_bot": false,
"headline": "Added Support for PHP 8.0",
"author_name": "Patrick McGranaghan",
"author_login": "vpn",
"committed_at": "2020-10-31T18:24:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd473f8e1e73ed3e94196b797c43b6b9bb12ab84",
"body": null,
"is_bot": false,
"headline": "Merge pull request #13 from boesing/feature/laminas-coding-standard-v2",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T18:23:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d60af3a5419e9a2440667c7803e931a779f1995a",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "Introducing laminas-coding-standard v2",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T16:51:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "02ae1774122d20996b6378e76378a07e3910f299",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "Bump minor version",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T16:19:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "832fecd01bcb9e0d5f0af8235785d06ec0de2f05",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "Update docs-build for new release process",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T16:16:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ebdd74ed87acb1daf5a41e82cec2b62ee21ea69",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "Adds automatic-releases workflow",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T16:15:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "55af8f15cead04b0fb443af735b5b543396a0325",
"body": "Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>",
"is_bot": false,
"headline": "Remove branch aliases from package",
"author_name": "Maximilian Bösing",
"author_login": "boesing",
"committed_at": "2020-10-31T16:14:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a50f4cf0e5ab780cdd3139c6ec61d5d1a7527584",
"body": null,
"is_bot": false,
"headline": "Merge branch 'copyright-update'",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-04-15T19:34:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c9d3549638adbad4e1d3cd8d514fefd7b3e8b8bc",
"body": "Signed-off-by: Michał Bundyra <contact@webimpress.com>",
"is_bot": false,
"headline": "Updates copyright notes",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-04-15T19:34:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2f3480d1e1c8de1d9eb7f039c428ddd5376b2709",
"body": null,
"is_bot": false,
"headline": "Merge branch 'hotfix/composer-replace'",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-03-29T11:34:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8099aa901c7286ca1cab96824578e3f69c6a8d3a",
"body": "Signed-off-by: Michał Bundyra <contact@webimpress.com>",
"is_bot": false,
"headline": "Set version constraint for replaced repository in composer.json",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-03-29T11:34:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69dc4f9440580ffe6ce16cf3ef7096a446cc13ce",
"body": null,
"is_bot": false,
"headline": "Merge branch 'qa/github-workflow'",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-03-28T09:04:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "29745d8e654bad6a76241c5971de84bd8676b10d",
"body": "Signed-off-by: Michał Bundyra <contact@webimpress.com>",
"is_bot": false,
"headline": "Adds .github directory into .gitattributes",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-03-28T09:04:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7a968b713a50c9de211d1daef537fcdcec062d5a",
"body": "Signed-off-by: Michał Bundyra <contact@webimpress.com>",
"is_bot": false,
"headline": "Require specific repository_dispatch event type - docs-build",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-03-28T09:04:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2fab92c1428aca1365665663ecb8b0a3def0b662",
"body": null,
"is_bot": false,
"headline": "Merge branch 'qa/docs-build'",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-01-08T12:35:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3422094ce9c949fd5b7c5507fc4d114096a3a92b",
"body": null,
"is_bot": false,
"headline": "Adds github workflow to build documentation",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-01-08T12:35:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad863c9fdf5e59591d5eeb837888be230e85c7e6",
"body": null,
"is_bot": false,
"headline": "Removes redundant extra.project_url configuration",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-01-08T12:35:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fffd04783d83c739e8dc5df21b6efa1a92d7a183",
"body": null,
"is_bot": false,
"headline": "Update copyright year: 2020",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-01-08T12:35:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d1ff0f62846e6c6b33a1e846a1838eef38fbc76",
"body": "Close #7",
"is_bot": false,
"headline": "Merge branch 'qa/7'",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-01-06T18:52:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e99fbe02efbc0ee05c5ca67d4718f276b7062466",
"body": "Fix FileTest::testCanCreateUriObjectFromWindowsPath",
"is_bot": false,
"headline": "Merge pull request #7 from Fahl-Design/patch-1",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-01-06T18:52:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dd2561ed82692212fca4d71ec94a58bae04a1524",
"body": "with data set #0 ('C:\\Program Files\\Laminas\\README', 'C:/Program%20Files/Laminas%20...README')\r\nFailed asserting that two strings are equal.\r\n--- Expected\r\n+++ Actual\r\n-'C:/Program%20Files/Laminas%20Framework/README'\r\n+'C:/Program%20Files/Laminas/README'\r\nlaminas/laminas-uri/test/FileTest.php:201",
"is_bot": false,
"headline": "Fix FileTest::testCanCreateUriObjectFromWindowsPath",
"author_name": "Fahl-Design",
"author_login": "Fahl-Design",
"committed_at": "2020-01-06T18:49:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "683b5558ea2b7b202ec1dabae0d394b58ca393af",
"body": null,
"is_bot": false,
"headline": "Update build status badge",
"author_name": "Aleksei Khudiakov",
"author_login": "Xerkus",
"committed_at": "2020-01-06T04:14:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ff28b00bf975b63802df38340d2b91cf9226b48d",
"body": null,
"is_bot": false,
"headline": "Fixes formatting in mkdocs.yml",
"author_name": "Michał Bundyra",
"author_login": "michalbundyra",
"committed_at": "2020-01-02T22:35:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab8dd63c3075981060cdc9cb2a6868cacc547772",
"body": null,
"is_bot": false,
"headline": "Adds project and project_url to mkdocs.yml",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-12-31T20:09:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b6e4833d1fbd85316a1dc3a73a912eadef07132e",
"body": null,
"is_bot": false,
"headline": "Rewriting as Laminas Project package",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-12-31T17:55:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2d44d3666f8adc83685d0b70b3006491d26db4ed",
"body": null,
"is_bot": false,
"headline": "Bumped to next dev version (2.7.2)",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-10-07T13:39:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfc4a5b9a309711e968d7c72afae4ac50c650083",
"body": null,
"is_bot": false,
"headline": "Merge branch 'release/2.7.1'",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-10-07T13:35:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51a5467c2b656e8e727be6adcb7d13e25771db67",
"body": null,
"is_bot": false,
"headline": "release: 2.7.1 readiness",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-10-07T13:35:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23146377964ff7ab503debb51015281e72c0f68d",
"body": "Installation, Documentation and Support sections",
"is_bot": false,
"headline": "Update README.md template",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-10-07T13:34:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "205e5469c2af0a702c057b10dc4398f10a6f4844",
"body": null,
"is_bot": false,
"headline": "Update copyright year in LICENSE.md",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-10-07T13:34:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7a7d624e46afe60cce218fe3ddf8da3b1d4fe4c2",
"body": "- remove unused docs/book/index.html\n- update mkdocs.yml\n - remove copyright as it is pulled from template\n - pages => nav (as the first one is deprecated)\n - add Home page title for index\n - update description\n - Intro => Introduction",
"is_bot": false,
"headline": "Update mkdocs configuration",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-10-07T13:34:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6053be40efaf10220a76a47c7898e172eda394a8",
"body": "Close #34\nFix #33",
"is_bot": false,
"headline": "Merge branch 'hotfix/34'",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-10-07T13:26:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9778845a34ba21c797159258c74a56ad6c8e97a0",
"body": null,
"is_bot": false,
"headline": "Adds CHANGELOG entry for #34",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-10-07T13:25:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e53de00d1fb9f26ce7041a14726d76c9a3d126f",
"body": "URI with ending colon without port",
"is_bot": false,
"headline": "Merge pull request #34 from mtagliab/develop",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-10-07T13:21:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1cb32bea7e46e395d68313f029dd93f73bb284e8",
"body": null,
"is_bot": false,
"headline": "Use better assertion",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-10-07T13:13:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c6a0127a9d78120b34238664ba205282b0827bac",
"body": null,
"is_bot": false,
"headline": "Removed strict compare",
"author_name": "Matteo",
"author_login": "mtagliab",
"committed_at": "2019-10-07T13:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9055a4c19038bc2920fdd6873c6cb7fcfb505d07",
"body": null,
"is_bot": false,
"headline": "Inverted order of parameters",
"author_name": "Matteo",
"author_login": "mtagliab",
"committed_at": "2019-10-07T13:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "212c81d6d270a6d0a2129290f0e9c2c1bc81e349",
"body": "https://www.php.net/manual/en/migration70.incompatible.php#119151\r\n\r\nsubstr behavior has changed from PHP 5.6 to PHP 7.0",
"is_bot": false,
"headline": "Fixed problem with substr backwards compatibility",
"author_name": "Matteo",
"author_login": "mtagliab",
"committed_at": "2019-10-07T13:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8cc05d9a9ed2f80a4a3fd71bed6b1d8d458a1d5a",
"body": null,
"is_bot": false,
"headline": "Fix indentation",
"author_name": "Matteo",
"author_login": "mtagliab",
"committed_at": "2019-10-07T13:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a11fde29ef71d209b22c0c6f04dbe976ba011030",
"body": null,
"is_bot": false,
"headline": "Fix indentation",
"author_name": "Matteo",
"author_login": "mtagliab",
"committed_at": "2019-10-07T13:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5ae77d3ef1937bb6e128b6582b7ff27273338765",
"body": null,
"is_bot": false,
"headline": "Fix - removed double port assign",
"author_name": "Matteo",
"author_login": "mtagliab",
"committed_at": "2019-10-07T13:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3383c18e423884171a78b905c299e4b175831be7",
"body": null,
"is_bot": false,
"headline": "Added test to check colon is correctly removed",
"author_name": "Matteo",
"author_login": "mtagliab",
"committed_at": "2019-10-07T13:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df8828ec8c697e77f57eb569d76b677acde49246",
"body": null,
"is_bot": false,
"headline": "Remove ending colon from URI without port",
"author_name": "Matteo",
"author_login": "mtagliab",
"committed_at": "2019-10-07T13:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81af14a26da7f57805a96e8f05ffcaf158ce0fd5",
"body": null,
"is_bot": false,
"headline": "Fixed formatting in CHANGELOG.md",
"author_name": "webimpress",
"author_login": "michalbundyra",
"committed_at": "2019-02-28T19:30:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71c2fe2a9c2458cd6996e30622e9f2a52c6123cd",
"body": null,
"is_bot": false,
"headline": "Bumped to next dev version (2.7.1)",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-27T21:39:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b2785cd38fe379a784645449db86f21b7739b1ee",
"body": null,
"is_bot": false,
"headline": "Merging develop to master in preparation for 2.7.0 release.",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-27T21:39:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df9b1e76bca47cee7e6bfc7461d06d181a179cfe",
"body": "- Updates branch aliases:\n - dev-master => 2.7.x-dev\n - dev-develop => 2.8.x-dev\n- Updates CHANGELOG:\n - Removes empty 2.6.3 release stub.\n - Adds date for 2.7.0 release.",
"is_bot": false,
"headline": "release: 2.7.0 readiness",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-27T21:38:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "39c3b3902157d2bdde1ca4851fb321115ec7a301",
"body": null,
"is_bot": false,
"headline": "Adds CHANGELOG entry for #29",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-27T21:36:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d5e9fb6ea05855845ffbafd276e295cf71eef5b",
"body": null,
"is_bot": false,
"headline": "docs: Adds note about host lowercasing to docs",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-27T21:35:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd7411e039dc0c3dac7b19145f66c92ef6c9e879",
"body": "make host lowercase",
"is_bot": false,
"headline": "Merge pull request #29 from samsonasik/lowercase-host",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-27T21:32:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "57d36bca86155ce0659c931f792bda2fa0428497",
"body": "Conflicts:\n\tCHANGELOG.md",
"is_bot": false,
"headline": "Merge branch 'version/bump' into develop",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-26T21:08:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e2a89d3c6f4cb741e3ba202141b84ee3bafb9be",
"body": null,
"is_bot": false,
"headline": "Bumped to next dev version (2.6.3)",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-26T21:07:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e30d45e5b38fd8075e7912cd964012fba94e081",
"body": "Forward port #28\n\nConflicts:\n\tCHANGELOG.md",
"is_bot": false,
"headline": "Merge branch 'hotfix/28' into develop",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-26T21:06:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b0bc8b999b9b417f2c59e14511e669aa4b6286f",
"body": "Close #28",
"is_bot": false,
"headline": "Merge branch 'hotfix/28'",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-26T21:06:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "718958017f85e36ba644d973f63729c7f0bdf2f2",
"body": null,
"is_bot": false,
"headline": "docs: sets date for 2.6.2 release",
"author_name": "Matthew Weier O'Phinney",
"author_login": "weierophinney",
"committed_at": "2019-02-26T21:06:04Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 9,
"commits_last_year": 8,
"latest_release_at": "2025-12-05T10:02:42Z",
"latest_release_tag": "2.14.0",
"releases_from_tags": false,
"days_since_last_push": 237,
"active_weeks_last_year": 4,
"days_since_latest_release": 237,
"mean_days_between_releases": 232.6
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 87,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "laminas/laminas-uri",
"exists": true,
"license": "BSD-3-Clause",
"keywords": [
"uri",
"laminas"
],
"ecosystem": "packagist",
"matches_repo": true,
"registry_url": "https://packagist.org/packages/laminas/laminas-uri",
"is_deprecated": false,
"latest_version": "2.14.0",
"repository_url": "https://github.com/laminas/laminas-uri",
"versions_count": 78,
"total_downloads": 38580598,
"dependents_count": 76,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 962885,
"first_published_at": null,
"latest_published_at": "2025-12-05T10:02:11Z",
"latest_version_yanked": null,
"days_since_latest_publish": 237
}
]
},
"popularity": {
"forks": 14,
"stars": 38,
"watchers": 14,
"fork_history": {
"days": [
{
"date": "2020-01-03",
"count": 1
},
{
"date": "2020-01-06",
"count": 1
},
{
"date": "2020-01-09",
"count": 1
},
{
"date": "2020-07-24",
"count": 1
},
{
"date": "2020-10-05",
"count": 1
},
{
"date": "2021-07-10",
"count": 1
},
{
"date": "2022-10-16",
"count": 1
},
{
"date": "2023-10-10",
"count": 1
},
{
"date": "2024-06-14",
"count": 1
},
{
"date": "2024-10-02",
"count": 1
},
{
"date": "2024-10-08",
"count": 1
},
{
"date": "2025-08-04",
"count": 1
},
{
"date": "2025-10-28",
"count": 1
},
{
"date": "2026-03-18",
"count": 1
}
],
"complete": true,
"collected": 14,
"total_forks": 14
},
"star_history": null,
"open_issues_and_prs": 1
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 39883,
"source_files_sampled": 15,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"composer.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "phpunit/phpunit",
"direct": false,
"version": "11.5.45",
"severity": "high",
"ecosystem": "packagist",
"cvss_score": 7.8,
"advisory_ids": [
"GHSA-vvj3-c3rp-c85p"
],
"fixed_version": "12.5.8",
"advisory_count": 1,
"oldest_advisory_days": 184
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 1
},
"advisory_count": 1,
"affected_count": 1,
"assessed_count": 43,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"packagist"
],
"dependencies": [
{
"name": "laminas/laminas-escaper",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.9"
},
{
"name": "laminas/laminas-validator",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.39 || ^3.0"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "laminas/laminas-escaper",
"direct": true,
"version": "2.18.0",
"ecosystem": "packagist"
},
{
"name": "laminas/laminas-validator",
"direct": true,
"version": "3.9.0",
"ecosystem": "packagist"
},
{
"name": "brick/varexporter",
"direct": false,
"version": "0.6.0",
"ecosystem": "packagist"
},
{
"name": "dealerdirect/phpcodesniffer-composer-installer",
"direct": false,
"version": "0.7.2",
"ecosystem": "packagist"
},
{
"name": "laminas/laminas-coding-standard",
"direct": false,
"version": "2.4.0",
"ecosystem": "packagist"
},
{
"name": "laminas/laminas-servicemanager",
"direct": false,
"version": "4.5.0",
"ecosystem": "packagist"
},
{
"name": "laminas/laminas-stdlib",
"direct": false,
"version": "3.21.0",
"ecosystem": "packagist"
},
{
"name": "laminas/laminas-translator",
"direct": false,
"version": "1.2.0",
"ecosystem": "packagist"
},
{
"name": "myclabs/deep-copy",
"direct": false,
"version": "1.13.4",
"ecosystem": "packagist"
},
{
"name": "nikic/php-parser",
"direct": false,
"version": "5.6.2",
"ecosystem": "packagist"
},
{
"name": "phar-io/manifest",
"direct": false,
"version": "2.0.4",
"ecosystem": "packagist"
},
{
"name": "phar-io/version",
"direct": false,
"version": "3.2.1",
"ecosystem": "packagist"
},
{
"name": "phpstan/phpdoc-parser",
"direct": false,
"version": "1.5.1",
"ecosystem": "packagist"
},
{
"name": "phpunit/php-code-coverage",
"direct": false,
"version": "11.0.11",
"ecosystem": "packagist"
},
{
"name": "phpunit/php-file-iterator",
"direct": false,
"version": "5.1.0",
"ecosystem": "packagist"
},
{
"name": "phpunit/php-invoker",
"direct": false,
"version": "5.0.1",
"ecosystem": "packagist"
},
{
"name": "phpunit/php-text-template",
"direct": false,
"version": "4.0.1",
"ecosystem": "packagist"
},
{
"name": "phpunit/php-timer",
"direct": false,
"version": "7.0.1",
"ecosystem": "packagist"
},
{
"name": "phpunit/phpunit",
"direct": false,
"version": "11.5.45",
"ecosystem": "packagist"
},
{
"name": "psr/container",
"direct": false,
"version": "2.0.2",
"ecosystem": "packagist"
},
{
"name": "psr/http-client",
"direct": false,
"version": "1.0.3",
"ecosystem": "packagist"
},
{
"name": "psr/http-factory",
"direct": false,
"version": "1.1.0",
"ecosystem": "packagist"
},
{
"name": "psr/http-message",
"direct": false,
"version": "2.0",
"ecosystem": "packagist"
},
{
"name": "sebastian/cli-parser",
"direct": false,
"version": "3.0.2",
"ecosystem": "packagist"
},
{
"name": "sebastian/code-unit",
"direct": false,
"version": "3.0.3",
"ecosystem": "packagist"
},
{
"name": "sebastian/code-unit-reverse-lookup",
"direct": false,
"version": "4.0.1",
"ecosystem": "packagist"
},
{
"name": "sebastian/comparator",
"direct": false,
"version": "6.3.2",
"ecosystem": "packagist"
},
{
"name": "sebastian/complexity",
"direct": false,
"version": "4.0.1",
"ecosystem": "packagist"
},
{
"name": "sebastian/diff",
"direct": false,
"version": "6.0.2",
"ecosystem": "packagist"
},
{
"name": "sebastian/environment",
"direct": false,
"version": "7.2.1",
"ecosystem": "packagist"
},
{
"name": "sebastian/exporter",
"direct": false,
"version": "6.3.2",
"ecosystem": "packagist"
},
{
"name": "sebastian/global-state",
"direct": false,
"version": "7.0.2",
"ecosystem": "packagist"
},
{
"name": "sebastian/lines-of-code",
"direct": false,
"version": "3.0.1",
"ecosystem": "packagist"
},
{
"name": "sebastian/object-enumerator",
"direct": false,
"version": "6.0.1",
"ecosystem": "packagist"
},
{
"name": "sebastian/object-reflector",
"direct": false,
"version": "4.0.1",
"ecosystem": "packagist"
},
{
"name": "sebastian/recursion-context",
"direct": false,
"version": "6.0.3",
"ecosystem": "packagist"
},
{
"name": "sebastian/type",
"direct": false,
"version": "5.1.3",
"ecosystem": "packagist"
},
{
"name": "sebastian/version",
"direct": false,
"version": "5.0.2",
"ecosystem": "packagist"
},
{
"name": "slevomat/coding-standard",
"direct": false,
"version": "7.2.1",
"ecosystem": "packagist"
},
{
"name": "squizlabs/php_codesniffer",
"direct": false,
"version": "3.13.4",
"ecosystem": "packagist"
},
{
"name": "staabm/side-effects-detector",
"direct": false,
"version": "1.0.5",
"ecosystem": "packagist"
},
{
"name": "theseer/tokenizer",
"direct": false,
"version": "1.3.1",
"ecosystem": "packagist"
},
{
"name": "webimpress/coding-standard",
"direct": false,
"version": "1.4.0",
"ecosystem": "packagist"
}
],
"collected": true,
"truncated": false,
"total_count": 43,
"direct_count": 2,
"indirect_count": 41
}
},
"maintainership": {
"issues": {
"open_prs": 1,
"merged_prs": 14,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 9,
"closed_unmerged_prs": 2
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "weierophinney",
"commits": 4491,
"avatar_url": "https://avatars.githubusercontent.com/u/25943?v=4"
},
{
"type": "User",
"login": "Maks3w",
"commits": 555,
"avatar_url": "https://avatars.githubusercontent.com/u/1301698?v=4"
},
{
"type": "User",
"login": "Ocramius",
"commits": 366,
"avatar_url": "https://avatars.githubusercontent.com/u/154256?v=4"
},
{
"type": "User",
"login": "EvanDotPro",
"commits": 155,
"avatar_url": "https://avatars.githubusercontent.com/u/5607?v=4"
},
{
"type": "User",
"login": "akrabat",
"commits": 120,
"avatar_url": "https://avatars.githubusercontent.com/u/33135?v=4"
},
{
"type": "User",
"login": "ezimuel",
"commits": 97,
"avatar_url": "https://avatars.githubusercontent.com/u/475967?v=4"
},
{
"type": "User",
"login": "ralphschindler",
"commits": 36,
"avatar_url": "https://avatars.githubusercontent.com/u/76674?v=4"
},
{
"type": "User",
"login": "marc-mabe",
"commits": 34,
"avatar_url": "https://avatars.githubusercontent.com/u/302689?v=4"
},
{
"type": "User",
"login": "michalbundyra",
"commits": 33,
"avatar_url": "https://avatars.githubusercontent.com/u/7423207?v=4"
},
{
"type": "User",
"login": "sgehrig",
"commits": 33,
"avatar_url": "https://avatars.githubusercontent.com/u/43394?v=4"
}
],
"contributors_sampled": 100,
"top_contributor_share": 0.716
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"auto-close.yml",
"continuous-integration.yml",
"docs-build.yml",
"release-on-milestone-closed.yml"
],
"has_docs_dir": true,
"linter_configs": [
"phpcs.xml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"composer.lock"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 1,
"reason": "1 out of 9 merged PRs checked by a CI test -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 5,
"reason": "Found 6/11 approved changesets -- score normalized to 5",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 78 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": null,
"reason": "no workflows found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": null,
"reason": "no dependencies found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": null,
"reason": "No tokens found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 9,
"reason": "1 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "e804288f4540988903dc0ede386ce5eec87198df",
"ran_at": "2026-07-30T22:37:02Z",
"aggregate_score": 4.5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2025-12-05T10:03:21Z",
"oldest_open_prs": [
{
"number": 23,
"created_at": "2024-10-02T21:36:55Z",
"last_comment_at": "2024-10-24T04:57:49Z",
"last_comment_author": "alexmerlin"
}
],
"last_merged_pr_at": "2025-12-05T10:02:11Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/laminas/laminas-uri",
"host": "github.com",
"name": "laminas-uri",
"owner": "laminas"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": "The weighted overall 60 is calibrated to 65 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 60,
"calibrated": 65,
"calibration": "2026-08-02"
}
}
],
"value": 65,
"inputs": {
"security": 56,
"vitality": 34,
"community": 72,
"governance": 70,
"calibration": "2026-08-02",
"engineering": 76,
"ai_readiness": 39,
"weighted_overall_raw": 60
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "at_risk",
"name": "Vitality",
"value": 34,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "critical",
"name": "Development activity",
"note": null,
"notes": [],
"value": 15,
"inputs": {
"commits_last_year": 8,
"human_commit_share": 1,
"days_since_last_push": 237,
"active_weeks_last_year": 4
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 237 days ago",
"points": 3.6,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 237
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "4/52 weeks with commits",
"points": 2.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 4
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "8 commits in the last year",
"points": 8.6,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 8
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "moderate",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 62,
"inputs": {
"releases_count": 9,
"latest_release_tag": "2.14.0",
"releases_from_tags": false,
"days_since_latest_release": 237,
"mean_days_between_releases": 232.6
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "9 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 9
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 237 days ago",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "release_recency",
"params": {
"days": 237
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~232.6 days",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 232.6
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "dormant",
"guards": [
"recent_release"
],
"signals": [
"scorecard_unmaintained"
],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": 1,
"unanswered_open_issues": 0,
"days_since_last_merged_pr": 242,
"days_since_last_human_commit": 242,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "no human commit for 242 days, with nothing left unanswered; held at dormant by a release within the year",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_quiet",
"params": {
"days": 242
}
},
{
"code": "abandonment_guarded",
"params": {
"guards": "a release within the year"
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 72,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "weak",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 41,
"inputs": {
"forks": 14,
"stars": 38,
"watchers": 14,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "38 stars",
"points": 25.4,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 38
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "14 forks",
"points": 9.3,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 14
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "14 watchers",
"points": 6.2,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 14
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": null,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"readme_badge_services": [],
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (BSD-3-Clause)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "BSD-3-Clause"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"packages": [
"laminas/laminas-uri"
],
"dependents": 76,
"ecosystems": "packagist",
"total_downloads": 38580598,
"monthly_downloads": 962885
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "962,885 downloads/month across packagist",
"points": 79.8,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 962885,
"ecosystems": "packagist"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "76 packages depend on it",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "registry_dependents",
"params": {
"count": 76
}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "good",
"name": "Sustainability & Governance",
"value": 70,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "weak",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 39,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 100,
"top_contributor_share": 0.716
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 72% of commits",
"points": 6.4,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 72
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "100 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 100
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 78 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 87,
"inputs": {
"merged_prs": 14,
"open_issues": 0,
"closed_issues": 9,
"prs_merged_7d": null,
"prs_decided_7d": null,
"prs_merged_30d": null,
"prs_decided_30d": null,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 2,
"first_time_authors_30d": null,
"first_time_prs_merged_30d": null,
"first_time_prs_decided_30d": null
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 42,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "14/16 decided PRs merged",
"points": 26.2,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 14,
"decided": 16
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 6/11 approved changesets -- score normalized to 5",
"points": 7.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"followers": 448,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "laminas",
"public_repos": 137,
"account_age_days": 2716
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "448 followers of laminas",
"points": 19.1,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 448,
"login": "laminas"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "137 public repos, account ~7 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 137
}
},
{
"code": "account_age_years",
"params": {
"years": 7
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 91,
"inputs": {
"packages": [
"laminas/laminas-uri"
],
"ecosystems": "packagist",
"any_deprecated": false,
"min_days_since_publish": 237
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on packagist",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "packagist"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 237 days ago",
"points": 26,
"status": "partial",
"details": [
{
"code": "publish_recency",
"params": {
"days": 237
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "78 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 78
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 76,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "4 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 4
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": "phpcs.xml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "phpcs.xml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "1 out of 9 merged PRs checked by a CI test -- score normalized to 1",
"points": 2,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"topics": [
"hacktoberfest",
"security-updates-only"
],
"has_wiki": false,
"homepage": "https://docs.laminas.dev/laminas-uri/",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://docs.laminas.dev/laminas-uri/",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "2 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 2
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 56,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "weak",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"dangerous_workflow",
"packaging",
"pinned_dependencies",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 45,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 12,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 6,
"scorecard_aggregate": 4.5
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "1 out of 9 merged PRs checked by a CI test -- score normalized to 1",
"points": 0.2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 6/11 approved changesets -- score normalized to 5",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 78 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no workflows found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "No tokens found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "1 existing vulnerabilities detected",
"points": 6.8,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "exceptional",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 43 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 43
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 1,
"affected_packages": 1,
"assessed_packages": 43,
"unassessed_packages": 0,
"affected_by_severity": "high 1",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "exceptional",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 43,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 29
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "weak",
"name": "AI Readiness",
"value": 39,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.37,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "37 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 19.7,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 37,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "weak",
"name": "Verify loop (build / test / typecheck)",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_pinned_dependencies"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 48,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"composer.lock"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": "phpcs.xml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "phpcs.xml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "PHP",
"largest_source_bytes": 39883,
"source_files_sampled": 15,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "PHP without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "PHP"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/15 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 15,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"top": [
"library"
],
"labels": [
"library"
],
"scores": {
"library": 6
},
"primary": "library",
"evidence": [
{
"tier": "distribution",
"label": "library",
"source": "registry:packagist",
"weight": 6
}
],
"artifacts": [],
"confidence": "medium",
"host_extension": false,
"runs_as_process": false,
"consumed_by_code": true
},
"metrics_version": "2.5.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-30T22:37:26.774489Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/l/laminas/laminas-uri.svg",
"full_name": "laminas/laminas-uri",
"license_state": "standard",
"license_spdx": "BSD-3-Clause"
}