softrules/php
SoftRules for PHP offers a lightweight way to define and evaluate soft validation rules in Laravel apps, letting you flag or score issues without hard failures.
illuminate/* moved from 11.x to 12.x (Laravel 12), which is a platform-compatibility axis, not a capability. Plan for no roadmap impact; track it only as a compatibility check for teams still on Laravel 11.spaze/phpstan-disallowed-calls. That's a real quality gate for a small library — useful evidence of stewardship when justifying the dependency. Note also the Node bumps (express, cookie, elliptic) — likely a docs site, which hints at a small project footprint.Adopt when:
illuminate/http, support, and collections to 12.x; if you're committed to Laravel 11, verify the constraint before adopting — the floor may have moved.Look elsewhere when:
Gate to watch: the 1.0 milestone (or explicit semver stability statement) is the go/no-go for production-critical placement.
Executive summary: A lightweight, Laravel-native option for making business policy configurable instead of code-change-bound — faster iteration on eligibility, pricing tiers, and gating logic without engineering rework. It is pre-1.0, so we're recommending a contained pilot on internal surfaces, not a platform commitment. v0.3.0 was pure dependency maintenance: no new capability, no breaking changes, and the team kept its static-analysis and formatting toolchain current — a positive stewardship signal but not a reason to accelerate.
For engineering: Laravel-native consumers of illuminate/http, support, and collections; evaluated with PHPStan 2.x (incl. disallowed-calls), Rector, and Pint. Low integration cost. Recommendation is to adopt behind a thin internal interface so the dependency can be swapped or removed without touching call sites.
Risk statement: Dependency risk, not functional risk. The meaningful axis is Laravel major tracking — we're now on illuminate 12.x. Combined with 0.x semver, expect breaking minors.
The ask: one engineer-week spike — wrap the evaluator behind an internal abstraction, port two real rules, measure whether policy changes actually get faster. Decision date tied to the package's 1.0.
How can I help you explore Laravel packages today?