Skip to content

Update all non-major dependencies - #45

Open
renovate[bot] wants to merge 1 commit into
1.11.xfrom
renovate/all-minor-patch
Open

renovate[bot] wants to merge 1 commit into
1.11.xfrom
renovate/all-minor-patch

Conversation

@renovate

@renovate renovate Bot commented Mar 31, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
boundwize/structarmed ^0.18.10 → ^0.20.0 age adoption passing confidence
psalm/plugin-phpunit ^0.19.5 → ^0.21.0 age adoption passing confidence

Release Notes

boundwize/structarmed

v0.20.0: Released: StructArmed 0.20.0

Compare Source

ci build PHPStan

StructArmed 0.20.0 introduces a new Stability preset, modular architecture configuration, and an option to run analysis without persistent caching.

This release introduces:

  • the new Preset::STABILITY() for protecting public APIs from internal implementation details;
  • isApi and isInternal properties on ClassNode for custom rule development;
  • Architecture::import() for splitting architecture configuration across multiple files;
  • --no-cache for running analysis without persistent caching;
  • improved PSR-4 validation and cache cleanup safety.

New Stability Preset

StructArmed introduces a new preset for enforcing API stability:

Preset::STABILITY()

The preset includes two new rules:

  • ApiMayNotBeInternalRule — prevents declarations from being marked with both @api and @internal.
  • ApiMayNotExtendInternalRule — prevents @api classes and interfaces from extending @internal declarations, directly or through inheritance.

For example:

/** @internal */
class InternalService
{
}

/** @api */
class PublicService extends InternalService
{
}

The Stability preset reports an architecture violation because a public API extends an internal implementation.

Enable the preset with:

use Boundwize\StructArmed\Preset\Preset;

->withPreset(Preset::STABILITY())

Or initialize a new configuration:

vendor/bin/structarmed init --preset=stability
API and Internal Detection on ClassNode

ClassNode now exposes two new boolean properties:

  • $classNode->isApi — indicates whether the declaration has an @api PHPDoc tag.
  • $classNode->isInternal — indicates whether the declaration has an @internal PHPDoc tag.

These properties are available to custom architecture rules, making it easier to enforce project-specific API stability and visibility conventions.

For example:

public function appliesTo(ClassNode $classNode): bool
{
    return $classNode->isApi && ! $classNode->isInternal;
}

The properties are populated automatically during analysis for scanned class-like declarations, including classes, interfaces, traits, and enums.

Import Architecture Configuration

StructArmed now supports organizing architecture configuration across multiple files using Architecture::import().

For example:

use Boundwize\StructArmed\Architecture;

return Architecture::define()
    ->import(__DIR__ . '/module/Foo/structarmed.php')
    ->import(__DIR__ . '/module/Bar/structarmed.php');

Each imported file returns a callable that receives the root Architecture instance:

use Boundwize\StructArmed\Architecture;

return static function (Architecture $architecture): void {
    $architecture->layer('Foo', 'module/Foo/src/');
};

This allows architecture rules and layers to be organized by module while sharing the same configuration.

Imported configurations support:

  • nested imports with circular import protection;
  • paths resolved relative to the project root;
  • automatic analysis cache invalidation when imported files change.

This makes StructArmed easier to configure and maintain in modular applications and larger projects.

New --no-cache Option

StructArmed introduces a new CLI option:

vendor/bin/structarmed analyse --no-cache

This option runs analysis without reading from or writing to the persistent analysis cache.

It is useful for debugging, validating uncached analysis, and environments where persistent caching is not desired.

The option supports both sequential and parallel analysis.

--no-cache cannot be combined with --clear-cache.

Bug Fixes and Internal Improvements

  • Fix PSR-4 validation for .class.php files.
  • Report files that map to invalid PSR-4 class names.
  • Improve temporary cache directory cleanup after parallel --no-cache analysis.
  • Prevent cache directory removal races between concurrent runs.
  • Update documentation and test coverage.

What's Changed

  • Add --no-cache option in #​507.
  • Add the new Stability preset, API rules, and ClassNode API/internal detection in #​510.
  • Clean up temporary cache directories after parallel --no-cache analysis in #​513.
  • Fix PSR-4 validation for .class.php files in #​516.
  • Report invalid PSR-4 class names in #​517.
  • Add modular architecture configuration imports in #​522.
  • Fix concurrent cache directory cleanup in #​523.

Full Changelog: boundwize/structarmed@0.19.10...0.20.0

v0.19.10: Released: StructArmed 0.19.10

Compare Source

ci build PHPStan

What's Changed

  • perf: Wait for parallel workers with stream_select() when progress is disabled by @​samsonasik in #​520

Full Changelog: boundwize/structarmed@0.19.9...0.19.10

v0.19.9: Released: StructArmed 0.19.9

Compare Source

ci build PHPStan

What's Changed

Full Changelog: boundwize/structarmed@0.19.8...0.19.9

v0.19.8: Released: StructArmed 0.19.8

Compare Source

ci build PHPStan

What's Changed

Full Changelog: boundwize/structarmed@0.19.7...0.19.8

v0.19.7: Released: StructArmed 0.19.7

Compare Source

ci build PHPStan

What's Changed

  • fix: Sort violations by file and line so reports and baselines are stable across runs by @​samsonasik in #​512

Full Changelog: boundwize/structarmed@0.19.6...0.19.7

v0.19.6: Released: StructArmed 0.19.6

Compare Source

ci build PHPStan

What's Changed

Full Changelog: boundwize/structarmed@0.19.5...0.19.6

v0.19.5: Released: StructArmed 0.19.5

Compare Source

ci build PHPStan

What's Changed

  • perf: Optimize violation fixing by skipping non-fixable rules and avoiding array shifts by @​samsonasik in #​503
  • fix: Make AnalysisResultCache::clear() keep files it did not create by @​samsonasik in #​506

Full Changelog: boundwize/structarmed@0.19.4...0.19.5

v0.19.4: Released: StructArmed 0.19.4

Compare Source

ci build PHPStan

What's Changed

  • fix: File rules honour the user defined Source layer when a preset has no source paths by @​samsonasik in #​502

Full Changelog: boundwize/structarmed@0.19.3...0.19.4

v0.19.3: Released: StructArmed 0.19.3

Compare Source

ci build PHPStan

What's Changed

  • perf: Cluster large files into one worker and write node cache incrementally by @​samsonasik in #​501

Full Changelog: boundwize/structarmed@0.19.2...0.19.3

v0.19.2: Released: StructArmed 0.19.2

Compare Source

ci build PHPStan

What's Changed

Full Changelog: boundwize/structarmed@0.19.1...0.19.2

v0.19.1: Released: StructArmed 0.19.1

Compare Source

ci build PHPStan

What's Changed

  • perf: Halve coordinator memory by adding __unserialize() to analysis nodes by @​samsonasik in #​497

Full Changelog: boundwize/structarmed@0.19.0...0.19.1

v0.19.0: Released: StructArmed 0.19.0

Compare Source

ci build PHPStan

StructArmed 0.19.0 introduces configurable project base paths and a new architecture rule for restricting constant usage.

This release introduces:

  • --basepath and its -d alias for analysing projects from a separate working directory;
  • the new MayNotUseConstantRule for restricting constant usage within architecture layers;
  • additional DDD preset restrictions for STDIN, STDOUT, and STDERR;
  • dependency update and internal cleanup.

Configurable Project Base Path

StructArmed now supports specifying the project root through --basepath or its short alias -d.

This is useful when StructArmed is installed in a separate tools directory instead of the project's root directory.

For example:

composer.json
src/
tests/
tools/
└── structarmed/
    ├── composer.json
    ├── structarmed.php
    └── vendor/

From tools/structarmed, run:

vendor/bin/structarmed analyse --basepath=../../

Or use the shorter form:

vendor/bin/structarmed analyse -d ../../

The specified base path is used for resolving:

  • architecture layer paths;
  • scan paths;
  • the project's composer.json and PSR-4 mappings;
  • cache directories;
  • baseline paths.

Configuration discovery checks the current working directory first, followed by the specified base path. An explicit --config remains relative to the current working directory.

The option also works with cache clearing:

vendor/bin/structarmed --basepath=../../ --clear-cache

CLI options may be specified before or after the command.

This makes StructArmed easier to integrate into projects that keep development tools and their dependencies separate from the application.

New MayNotUseConstantRule

StructArmed introduces:

MayNotUseConstantRule

This rule prevents classes, traits, and enums in a specified architecture layer from using a forbidden constant.

For example:

use Boundwize\StructArmed\Rule\Rules\Usage\MayNotUseConstantRule;

->rule(
    'domain_no_php_eol',
    new MayNotUseConstantRule(
        layer: 'Domain',
        constant: 'PHP_EOL',
    ),
)

The rule supports global and namespaced constants:

new MayNotUseConstantRule(
    layer: 'Domain',
    constant: 'Vendor\\Config\\DEBUG',
)

Constant names are matched case-sensitively, while namespace names are matched case-insensitively.

The rule also handles PHP's runtime fallback behavior for unqualified constants inside namespaces.

DDD Preset Improvements

The DDD preset now prevents the Domain layer from directly using these constants:

  • STDIN
  • STDOUT
  • STDERR

These restrictions are enabled automatically through:

Preset::DDD()

This helps keep domain logic independent of direct console input and output.

Internal Improvements

  • Remove unused RuleViolationCollection::forLayer() and toJson() methods.
  • Update fidry/cpu-core-counter dependency to ^1.4.
  • Update the analysis cache format to accommodate constant usage information.
  • Temporarily exclude PHP 8.5 on macOS from CI due to runner setup issues.

What's Changed

  • Add MayNotUseConstantRule and DDD preset restrictions in #​495.
  • Add configurable project base paths using --basepath and -d in #​496.
  • Improve configuration discovery across working and project directories in #​496.
  • Remove unused RuleViolationCollection::forLayer() and toJson() methods in #​476.
  • Update fidry/cpu-core-counter to ^1.4 in #​490.

Full Changelog: boundwize/structarmed@0.18.11...0.19.0

psalm/psalm-plugin-phpunit (psalm/plugin-phpunit)

v0.21.1

Compare Source

What's Changed

Full Changelog: psalm/psalm-plugin-phpunit@0.21.0...0.21.1

v0.21.0

Compare Source

Supports Psalm 7 and psalm/psalm-plugin-api ^0.4.

v0.20.4

Compare Source

Bump plugin API to include ^0.3.

Full Changelog: psalm/psalm-plugin-phpunit@0.20.3...0.20.4

v0.20.3

Compare Source

Bumps the plugin api to include ^0.2.

Full Changelog: psalm/psalm-plugin-phpunit@0.20.2...0.20.3

v0.20.2

Compare Source

What's Changed

  • Fix #[Test] attribute detection for inherited and fully-qualified attributes by @​alies-dev in #​160

New Contributors

Full Changelog: psalm/psalm-plugin-phpunit@0.20.1...0.20.2

v0.20.1

Compare Source

v0.20.0

Compare Source

What's Changed

Full Changelog: psalm/psalm-plugin-phpunit@0.19.5...0.20.0


Configuration

📅 Schedule: (in timezone UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

Read more information about the use of Renovate Bot within Laminas.

@renovate

renovate Bot commented Mar 31, 2026 •

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: composer.lock
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires psalm/plugin-phpunit ^0.21.0 -> satisfiable by psalm/plugin-phpunit[0.21.1].
    - vimeo/psalm is locked to version 6.20.1 and an update of this package was not requested.
    - psalm/plugin-phpunit 0.21.1 requires psalm/psalm-plugin-api ^0.4 -> satisfiable by psalm/psalm-plugin-api[0.4.0, 0.4.1].
    - psalm/psalm-plugin-api[0.4.0, ..., 0.4.1] conflict with vimeo/psalm <7.0.0-rc3.

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 2cbb5bc to eeb6a9f Compare April 6, 2026 05:29
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from eeb6a9f to 2ab83e3 Compare April 13, 2026 05:30
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from 3403191 to 5d0d678 Compare April 27, 2026 05:16
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from f2a943b to 1e7401a Compare May 11, 2026 05:40
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from 0fd6342 to ec6615e Compare May 25, 2026 04:58
@renovate renovate Bot changed the title Update dependency psalm/plugin-phpunit to ^0.20.0 Update all non-major dependencies to ^0.20.0 Jun 2, 2026
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from ec6615e to 52c512d Compare June 8, 2026 05:00
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 52c512d to cc798ab Compare June 15, 2026 06:10
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from cc798ab to 3a9abf0 Compare June 22, 2026 06:43
@renovate renovate Bot changed the title Update all non-major dependencies to ^0.20.0 Update all non-major dependencies Jun 22, 2026
@renovate renovate Bot changed the title Update all non-major dependencies Update dependency psalm/plugin-phpunit to ^0.20.0 Jun 25, 2026
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from 94d980a to 2075fbc Compare July 6, 2026 06:51
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 2075fbc to a2ad04a Compare July 13, 2026 11:03
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from 338a342 to 1790784 Compare July 27, 2026 05:35
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 1790784 to 042f850 Compare August 3, 2026 04:46
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 042f850 to 0e076e2 Compare August 10, 2026 04:58
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 0e076e2 to 0e1a4e4 Compare August 17, 2026 05:01
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 0e1a4e4 to 4f955e5 Compare August 26, 2026 23:11
@renovate renovate Bot changed the title Update dependency psalm/plugin-phpunit to ^0.20.0 Update dependency psalm/plugin-phpunit to ^0.20.0 - autoclosed Aug 29, 2026
@renovate renovate Bot closed this Aug 29, 2026
@renovate
renovate Bot deleted the renovate/all-minor-patch branch August 29, 2026 03:04
@renovate renovate Bot changed the title Update dependency psalm/plugin-phpunit to ^0.20.0 - autoclosed Update dependency psalm/plugin-phpunit to ^0.20.0 Aug 29, 2026
@renovate renovate Bot reopened this Aug 29, 2026
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from ddbccff to 4f955e5 Compare August 29, 2026 10:30
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from ddbccff to a6c6458 Compare August 31, 2026 11:10
@renovate renovate Bot changed the title Update dependency psalm/plugin-phpunit to ^0.20.0 Update dependency psalm/plugin-phpunit to ^0.20.0 - autoclosed Sep 2, 2026
@renovate renovate Bot closed this Sep 2, 2026
@renovate renovate Bot changed the title Update dependency psalm/plugin-phpunit to ^0.20.0 - autoclosed Update dependency psalm/plugin-phpunit to ^0.20.0 Sep 3, 2026
@renovate renovate Bot reopened this Sep 3, 2026
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from a6c6458 to 580e578 Compare September 3, 2026 03:25
@renovate renovate Bot changed the title Update dependency psalm/plugin-phpunit to ^0.20.0 Update dependency psalm/plugin-phpunit to ^0.20.0 - autoclosed Sep 6, 2026
@renovate renovate Bot closed this Sep 6, 2026
@renovate renovate Bot changed the title Update dependency psalm/plugin-phpunit to ^0.20.0 - autoclosed Update dependency psalm/plugin-phpunit to ^0.20.0 Sep 7, 2026
@renovate renovate Bot reopened this Sep 7, 2026
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from d1a072a to 37b61ed Compare September 7, 2026 06:39
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from 64e335e to b6d131d Compare September 21, 2026 04:33
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 4 times, most recently from 1c5fde9 to f7105d2 Compare October 5, 2026 05:54
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from f7105d2 to fb9d413 Compare October 8, 2026 09:47
@renovate renovate Bot changed the title Update dependency psalm/plugin-phpunit to ^0.20.0 Update all non-major dependencies Oct 8, 2026
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from c284726 to 7bb5f17 Compare October 12, 2026 05:32
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from 09db560 to 0edef56 Compare October 21, 2026 20:21
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 0edef56 to 033b167 Compare October 26, 2026 06:32
| datasource | package               | from    | to     |
| ---------- | --------------------- | ------- | ------ |
| packagist  | boundwize/structarmed | 0.18.11 | 0.20.0 |
| packagist  | psalm/plugin-phpunit  | 0.19.7  | 0.21.1 |


Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 033b167 to e124743 Compare October 29, 2026 19:42

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants