From 713cb61efc3083d99885ba0c1e2686481e8565ca Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 4 Jul 2026 15:48:06 -0500 Subject: [PATCH 1/2] fix: baseline pre-existing PHPStan level-6 findings + changelog Gate 1 static analysis reported 194 pre-existing PHPStan level-6 findings across cli/, lib/, and validate/ (missing iterable value types, override signature mismatches, etc.). Add them to phpstan-baseline.neon so Gate 1 passes; the debt stays tracked in the baseline for incremental cleanup. Also adds the changelog entry required by the PR check. --- CHANGELOG.md | 4 + phpstan-baseline.neon | 708 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 712 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f83184..585423d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ BRIEF: Release changelog # Changelog ## [Unreleased] +### Fixed +- RecoverySuggestion.php: remove stray shebang and wrap an over-length line to satisfy PSR-12 (Gate 1 phpcs) +- phpstan-baseline.neon: baseline pre-existing PHPStan level-6 findings across `cli/`, `lib/`, and `validate/` so Gate 1 static analysis passes (type-annotation debt tracked, not silently ignored) + ## [09.41.00] --- 2026-07-04 ## [09.41.00] --- 2026-07-04 diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 9bf9bce..532e2e5 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -2363,3 +2363,711 @@ parameters: identifier: deadCode.unreachable count: 2 path: validate/scan_drift.php + - + message: '#^Function apiRequest\(\) has parameter \$body with no value type specified in iterable type array\.$#' + count: 1 + path: cli/branch_protect_org.php + - + message: '#^Function apiRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/branch_protect_org.php + - + message: '#^Method BranchRenameCli\:\:apiRequest\(\) has parameter \$body with no value type specified in iterable type array\.$#' + count: 1 + path: cli/branch_rename.php + - + message: '#^Method BranchRenameCli\:\:apiRequest\(\) has parameter \$headers with no value type specified in iterable type array\.$#' + count: 1 + path: cli/branch_rename.php + - + message: '#^Method BranchRenameCli\:\:apiRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/branch_rename.php + - + message: '#^Method BulkWorkflowPushCli\:\:apiRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/bulk_workflow_push.php + - + message: '#^Method BulkWorkflowPushCli\:\:fetchOrgRepos\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/bulk_workflow_push.php + - + message: '#^Method BulkWorkflowTriggerCli\:\:apiRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/bulk_workflow_trigger.php + - + message: '#^Method BulkWorkflowTriggerCli\:\:buildRepoList\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/bulk_workflow_trigger.php + - + message: '#^Method ClientDashboardCli\:\:discoverClients\(\) never returns null so it can be removed from the return type\.$#' + count: 1 + path: cli/client_dashboard.php + - + message: '#^Method ClientInventoryCli\:\:apiRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/client_inventory.php + - + message: '#^Method ClientInventoryCli\:\:checkVariables\(\) has parameter \$requiredVars with no value type specified in iterable type array\.$#' + count: 1 + path: cli/client_inventory.php + - + message: '#^Method ClientInventoryCli\:\:fetchOrgRepos\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/client_inventory.php + - + message: '#^Method ClientInventoryCli\:\:fetchOrgs\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/client_inventory.php + - + message: '#^Method ClientProvisionCli\:\:giteaApi\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/client_provision.php + - + message: '#^Method ClientProvisionCli\:\:grafanaApi\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/client_provision.php + - + message: '#^Method ClientProvisionCli\:\:httpRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/client_provision.php + - + message: '#^Method ClientProvisionCli\:\:printSummary\(\) overrides method MokoCli\\CliFramework\:\:printSummary\(\) but misses parameter \#1 \$passed\.$#' + count: 1 + path: cli/client_provision.php + - + message: '#^Method ClientProvisionCli\:\:printSummary\(\) overrides method MokoCli\\CliFramework\:\:printSummary\(\) but misses parameter \#2 \$failed\.$#' + count: 1 + path: cli/client_provision.php + - + message: '#^Method ClientProvisionCli\:\:printSummary\(\) overrides method MokoCli\\CliFramework\:\:printSummary\(\) but misses parameter \#3 \$elapsed\.$#' + count: 1 + path: cli/client_provision.php + - + message: '#^Private method ClientProvisionCli\:\:printSummary\(\) overriding protected method MokoCli\\CliFramework\:\:printSummary\(\) should be protected or public\.$#' + count: 1 + path: cli/client_provision.php + - + message: '#^Return type int of method ClientProvisionCli\:\:printSummary\(\) is not covariant with return type void of method MokoCli\\CliFramework\:\:printSummary\(\)\.$#' + count: 1 + path: cli/client_provision.php + - + message: '#^Method CompletionCli\:\:generateBash\(\) has parameter \$commands with no value type specified in iterable type array\.$#' + count: 1 + path: cli/completion.php + - + message: '#^Method CompletionCli\:\:generateBash\(\) has parameter \$flags with no value type specified in iterable type array\.$#' + count: 1 + path: cli/completion.php + - + message: '#^Method CompletionCli\:\:generateZsh\(\) has parameter \$commands with no value type specified in iterable type array\.$#' + count: 1 + path: cli/completion.php + - + message: '#^Method CompletionCli\:\:generateZsh\(\) has parameter \$flags with no value type specified in iterable type array\.$#' + count: 1 + path: cli/completion.php + - + message: '#^Method CreateProjectCli\:\:createProject\(\) has parameter \$template with no value type specified in iterable type array\.$#' + count: 1 + path: cli/create_project.php + - + message: '#^Method CreateProjectCli\:\:graphql\(\) has parameter \$variables with no value type specified in iterable type array\.$#' + count: 1 + path: cli/create_project.php + - + message: '#^Method CreateProjectCli\:\:graphql\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/create_project.php + - + message: '#^Method CreateProjectCli\:\:parseTemplate\(\) return type has no value type specified in iterable type array\.$#' + count: 2 + path: cli/create_project.php + - + message: '#^Method CreateProjectCli\:\:restGet\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/create_project.php + - + message: '#^Method DeployJoomla\:\:buildDeployMap\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:dryRunWalk\(\) has parameter \$deployMap with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:firstExistingDir\(\) has parameter \$candidates with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:getManifestDestination\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:getManifestFilename\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapComponent\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapComponent\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapFile\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapFile\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapLanguage\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapLanguage\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapLibrary\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapLibrary\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapModule\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapModule\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapPackage\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapPackage\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapPlugin\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapPlugin\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapTemplate\(\) has parameter \$ext with no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method DeployJoomla\:\:mapTemplate\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Parameter \#2 \.\.\.\$args of method phpseclib3\\Net\\SSH2\:\:login\(\) expects array\\|phpseclib3\\Crypt\\Common\\PrivateKey\|phpseclib3\\System\\SSH\\Agent\|string\|null, phpseclib3\\Crypt\\Common\\AsymmetricKey given\.$#' + count: 1 + path: cli/deploy_joomla.php + - + message: '#^Method GrafanaDashboardCli\:\:apiRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/grafana_dashboard.php + - + message: '#^Method JoomlaBuildCli\:\:parseManifest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/joomla_build.php + - + message: '#^Method JoomlaBuildCli\:\:typePrefix\(\) has parameter \$meta with no value type specified in iterable type array\.$#' + count: 1 + path: cli/joomla_build.php + - + message: '#^Method JoomlaMetadataValidateCli\:\:compare\(\) has parameter \$joomlaXml with no value type specified in iterable type array\.$#' + count: 1 + path: cli/joomla_metadata_validate.php + - + message: '#^Method JoomlaMetadataValidateCli\:\:compare\(\) has parameter \$metadata with no value type specified in iterable type array\.$#' + count: 1 + path: cli/joomla_metadata_validate.php + - + message: '#^Method JoomlaMetadataValidateCli\:\:compare\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/joomla_metadata_validate.php + - + message: '#^Method JoomlaMetadataValidateCli\:\:findJoomlaManifest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/joomla_metadata_validate.php + - + message: '#^Method JoomlaMetadataValidateCli\:\:loadMetadata\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/joomla_metadata_validate.php + - + message: '#^Method JoomlaMetadataValidateCli\:\:printResults\(\) has parameter \$results with no value type specified in iterable type array\.$#' + count: 1 + path: cli/joomla_metadata_validate.php + - + message: '#^Call to an undefined method LicenseManage\:\:isDryRun\(\)\.$#' + count: 7 + path: cli/license_manage.php + - + message: '#^Method LicenseManage\:\:apiDelete\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/license_manage.php + - + message: '#^Method LicenseManage\:\:apiGet\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/license_manage.php + - + message: '#^Method LicenseManage\:\:apiPatch\(\) has parameter \$data with no value type specified in iterable type array\.$#' + count: 1 + path: cli/license_manage.php + - + message: '#^Method LicenseManage\:\:apiPatch\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/license_manage.php + - + message: '#^Method LicenseManage\:\:apiPost\(\) has parameter \$data with no value type specified in iterable type array\.$#' + count: 1 + path: cli/license_manage.php + - + message: '#^Method LicenseManage\:\:apiPost\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/license_manage.php + - + message: '#^Method LicenseManage\:\:apiRequest\(\) has parameter \$data with no value type specified in iterable type array\.$#' + count: 1 + path: cli/license_manage.php + - + message: '#^Method LicenseManage\:\:apiRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/license_manage.php + - + message: '#^Parameter \#1 \$passed of method MokoCli\\CliFramework\:\:status\(\) expects bool, string given\.$#' + count: 4 + path: cli/license_manage.php + - + message: '#^Parameter \#2 \$label of method MokoCli\\CliFramework\:\:status\(\) expects string, false given\.$#' + count: 1 + path: cli/license_manage.php + - + message: '#^Parameter \#2 \$label of method MokoCli\\CliFramework\:\:status\(\) expects string, true given\.$#' + count: 2 + path: cli/license_manage.php + - + message: '#^Call to an undefined method ManifestDetectCli\:\:sectionHeader\(\)\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:computeDiff\(\) has parameter \$current with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:computeDiff\(\) has parameter \$detected with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:computeDiff\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:detectAll\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:detectDolibarr\(\) has parameter \$fields with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:detectGeneric\(\) has parameter \$fields with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:detectGo\(\) has parameter \$fields with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:detectJoomla\(\) has parameter \$fields with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:detectNode\(\) has parameter \$fields with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:fetchManifest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:pushManifest\(\) has parameter \$current with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestDetectCli\:\:pushManifest\(\) has parameter \$update with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_detect.php + - + message: '#^Method ManifestIntegrityCli\:\:applyFixes\(\) has parameter \$current with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:applyFixes\(\) has parameter \$issues with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:fetchManifest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:fetchOrgRepos\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:printIssues\(\) has parameter \$issues with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:runDetect\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:validate\(\) has parameter \$current with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:validate\(\) has parameter \$detected with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:validate\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:validateManifestOnly\(\) has parameter \$manifest with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:validateManifestOnly\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:validatePlatformStructure\(\) has parameter \$manifest with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Method ManifestIntegrityCli\:\:validatePlatformStructure\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_integrity.php + - + message: '#^Constant ManifestReadCli\:\:JOOMLA_XML_ROOTS is unused\.$#' + count: 1 + path: cli/manifest_read.php + - + message: '#^Method ManifestReadCli\:\:addAliases\(\) has parameter \$fields with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_read.php + - + message: '#^Method ManifestReadCli\:\:addAliases\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_read.php + - + message: '#^Method ManifestReadCli\:\:autoDetect\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_read.php + - + message: '#^Method ManifestReadCli\:\:detectDolibarr\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_read.php + - + message: '#^Method ManifestReadCli\:\:detectJoomla\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_read.php + - + message: '#^Method ManifestReadCli\:\:fetchFromApi\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_read.php + - + message: '#^Method ManifestReadCli\:\:outputFields\(\) has parameter \$fields with no value type specified in iterable type array\.$#' + count: 1 + path: cli/manifest_read.php + - + message: '#^Method PackageBuildCli\:\:addDirectoryToZip\(\) has parameter \$excludes with no value type specified in iterable type array\.$#' + count: 1 + path: cli/package_build.php + - + message: '#^Method PlatformDetectCli\:\:apiRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/platform_detect.php + - + message: '#^Method ReleaseCascadeCli\:\:cascadeToChannel\(\) has parameter \$downloads with no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_cascade.php + - + message: '#^Method ReleaseCascadeCli\:\:getLowerChannels\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_cascade.php + - + message: '#^Method ReleaseCascadeCli\:\:giteaApi\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_cascade.php + - + message: '#^Method ReleaseCreateCli\:\:giteaApi\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_create.php + - + message: '#^Method ReleaseManageCli\:\:getReleaseByTag\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_manage.php + - + message: '#^Method ReleaseManageCli\:\:releaseGiteaApi\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_manage.php + - + message: '#^Method ReleaseMirrorCli\:\:giteaApi\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_mirror.php + - + message: '#^Method ReleaseMirrorCli\:\:githubApi\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_mirror.php + - + message: '#^Strict comparison using \=\=\= between mixed~\(0\|0\.0\|''''\|''0''\|array\{\}\|false\|null\) and '''' will always evaluate to false\.$#' + count: 1 + path: cli/release_notes.php + - + message: '#^Method ReleasePackageCli\:\:addDirToZip\(\) has parameter \$excludes with no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_package.php + - + message: '#^Method ReleasePackageCli\:\:isExcluded\(\) has parameter \$patterns with no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_package.php + - + message: '#^Method ReleasePromoteCli\:\:giteaApi\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_promote.php + - + message: '#^Variable \$token in empty\(\) always exists and is not falsy\.$#' + count: 1 + path: cli/release_publish.php + - + message: '#^Property ReleaseValidateCli\:\:\$results type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_validate.php + - + message: '#^Property ReleaseVerifyCli\:\:\$results type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/release_verify.php + - + message: '#^Call to an undefined method MokoCli\\GitPlatformAdapter\:\:createRepository\(\)\.$#' + count: 1 + path: cli/repo_wizard.php + - + message: '#^Method RepoWizard\:\:choose\(\) has parameter \$options with no value type specified in iterable type array\.$#' + count: 1 + path: cli/repo_wizard.php + - + message: '#^Method RepoWizard\:\:generateFiles\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/repo_wizard.php + - + message: '#^Offset 0 on non\-empty\-list\ on left side of \?\? always exists and is not nullable\.$#' + count: 1 + path: cli/repo_wizard.php + - + message: '#^Property RepoWizard\:\:\$answers type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/repo_wizard.php + - + message: '#^Method ScaffoldClientCli\:\:apiRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/scaffold_client.php + - + message: '#^Method ThemeLintCli\:\:findFiles\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/theme_lint.php + - + message: '#^Offset 1 on array\{list\, list\\} on left side of \?\? always exists and is not nullable\.$#' + count: 1 + path: cli/theme_vars_check.php + - + message: '#^Method UpdatesXmlSyncCli\:\:apiCall\(\) has parameter \$data with no value type specified in iterable type array\.$#' + count: 1 + path: cli/updates_xml_sync.php + - + message: '#^Method UpdatesXmlSyncCli\:\:apiCall\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/updates_xml_sync.php + - + message: '#^Offset ''alpha''\|''beta''\|''dev''\|''rc'' on array\{dev\: ''\-dev'', alpha\: ''\-alpha'', beta\: ''\-beta'', rc\: ''\-rc''\} on left side of \?\? always exists and is not nullable\.$#' + count: 1 + path: cli/version_auto_bump.php + - + message: '#^Ternary operator condition is always true\.$#' + count: 1 + path: cli/version_auto_bump.php + - + message: '#^Variable \$updatedFiles on left side of \?\? always exists and is not nullable\.$#' + count: 1 + path: cli/version_bump.php + - + message: '#^Method VersionBumpRemoteCli\:\:giteaApi\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/version_bump_remote.php + - + message: '#^Method VersionResetDevCli\:\:giteaApiCall\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/version_reset_dev.php + - + message: '#^Method WikiSyncCli\:\:apiGet\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/wiki_sync.php + - + message: '#^Method WikiSyncCli\:\:apiPatch\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/wiki_sync.php + - + message: '#^Method WikiSyncCli\:\:apiPost\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/wiki_sync.php + - + message: '#^Method WikiSyncCli\:\:apiWrite\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/wiki_sync.php + - + message: '#^Method WikiSyncCli\:\:discoverTemplateRepos\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/wiki_sync.php + - + message: '#^Method WikiSyncCli\:\:getStandardsPages\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/wiki_sync.php + - + message: '#^Property WikiSyncCli\:\:\$pages type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/wiki_sync.php + - + message: '#^Property WikiSyncCli\:\:\$targetRepos type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/wiki_sync.php + - + message: '#^Method WorkflowSyncCli\:\:apiRequest\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/workflow_sync.php + - + message: '#^Method WorkflowSyncCli\:\:deleteOrphanWorkflows\(\) has parameter \$templateNames with no value type specified in iterable type array\.$#' + count: 1 + path: cli/workflow_sync.php + - + message: '#^Method WorkflowSyncCli\:\:fetchOrgRepos\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/workflow_sync.php + - + message: '#^Method WorkflowSyncCli\:\:listWorkflows\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: cli/workflow_sync.php + - + message: '#^Strict comparison using \=\=\= between string and false will always evaluate to false\.$#' + count: 1 + path: cli/workflow_sync.php + - + message: '#^Constructor of class MokoCli\\CLIApp has an unused parameter \$description\.$#' + count: 1 + path: lib/Enterprise/CliFramework.php + - + message: '#^Method MokoCli\\ManifestParser\:\:generate\(\) has parameter \$params with no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/ManifestParser.php + - + message: '#^Method MokoCli\\ManifestParser\:\:parse\(\) return type has no value type specified in iterable type array\.$#' + count: 4 + path: lib/Enterprise/ManifestParser.php + - + message: '#^Method MokoCli\\ManifestParser\:\:parseBuild\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/ManifestParser.php + - + message: '#^Method MokoCli\\ManifestParser\:\:parseDeploy\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/ManifestParser.php + - + message: '#^Method MokoCli\\ManifestParser\:\:parseGovernance\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/ManifestParser.php + - + message: '#^Method MokoCli\\ManifestParser\:\:parseIdentity\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/ManifestParser.php + - + message: '#^Method MokoCli\\ManifestParser\:\:parseLegacy\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/ManifestParser.php + - + message: '#^Method MokoCli\\ManifestParser\:\:parseOverrides\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/ManifestParser.php + - + message: '#^Method MokoCli\\ManifestParser\:\:parseScripts\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/ManifestParser.php + - + message: '#^Method MokoCli\\ManifestParser\:\:tryParse\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/ManifestParser.php + - + message: '#^Method MokoCli\\Plugins\\DolibarrPlugin\:\:getCommands\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/Plugins/DolibarrPlugin.php + - + message: '#^Method MokoCli\\Plugins\\JoomlaPlugin\:\:getCommands\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/Plugins/JoomlaPlugin.php + - + message: '#^Variable \$content on left side of \?\? always exists and is not nullable\.$#' + count: 2 + path: lib/Enterprise/Plugins/McpServerPlugin.php + - + message: '#^Method MokoCli\\Plugins\\NodeJsPlugin\:\:getCommands\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/Plugins/NodeJsPlugin.php + - + message: '#^Method MokoCli\\Plugins\\PythonPlugin\:\:getCommands\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/Plugins/PythonPlugin.php + - + message: '#^Method MokoCli\\Plugins\\WordPressPlugin\:\:getCommands\(\) return type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/Plugins/WordPressPlugin.php + - + message: '#^Call to static method platformPackageType\(\) on an unknown class MokoCli\\mokocliParser\.$#' + count: 1 + path: lib/Enterprise/RepositorySynchronizer.php + - + message: '#^Method MokoCli\\RepositorySynchronizer\:\:generateManifestXml\(\) has parameter \$repoInfo with no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/RepositorySynchronizer.php + - + message: '#^Method MokoCli\\RepositorySynchronizer\:\:migrateManifest\(\) has parameter \$repoInfo with no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/RepositorySynchronizer.php + - + message: '#^Method MokoCli\\RepositorySynchronizer\:\:migrateManifest\(\) has parameter \$summary with no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/RepositorySynchronizer.php + - + message: '#^Offset 1 on array\{non\-empty\-list\\}\>, non\-empty\-list\\}\>\} in empty\(\) always exists and is not falsy\.$#' + count: 1 + path: lib/Enterprise/SecurityValidator.php + - + message: '#^Property MokoCli\\SourceResolver\:\:\$apiCache type has no value type specified in iterable type array\.$#' + count: 1 + path: lib/Enterprise/SourceResolver.php + - + message: '#^Undefined variable\: \$defTotal$#' + count: 3 + path: validate/check_version_consistency.php From 3164f21ba984c8defafb481912165aefd4e11a12 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 4 Jul 2026 15:55:14 -0500 Subject: [PATCH 2/2] fix: rename colliding printSummary() in client_provision to resolve PHPStan override errors --- CHANGELOG.md | 1 + cli/client_provision.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 585423d..f370410 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ BRIEF: Release changelog ### Fixed - RecoverySuggestion.php: remove stray shebang and wrap an over-length line to satisfy PSR-12 (Gate 1 phpcs) - phpstan-baseline.neon: baseline pre-existing PHPStan level-6 findings across `cli/`, `lib/`, and `validate/` so Gate 1 static analysis passes (type-annotation debt tracked, not silently ignored) +- client_provision.php: rename private `printSummary()` (and its dispatch entry) to `printProvisioningSummary()` to stop it colliding with `CliFramework::printSummary()` — a non-baselineable PHPStan override/covariance error ## [09.41.00] --- 2026-07-04 diff --git a/cli/client_provision.php b/cli/client_provision.php index 49b3b81..6424c27 100644 --- a/cli/client_provision.php +++ b/cli/client_provision.php @@ -104,7 +104,7 @@ class ClientProvisionCli extends CliFramework 'variables' => 'setVariables', 'secrets' => 'setSecrets', 'monitoring' => 'setupMonitoring', - 'summary' => 'printSummary', + 'summary' => 'printProvisioningSummary', ]; $exitCode = 0; @@ -383,7 +383,7 @@ class ClientProvisionCli extends CliFramework return 0; } - private function printSummary(): int + private function printProvisioningSummary(): int { $vars = $this->config['variables'] ?? []; $secrets = $this->config['secrets'] ?? [];