Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Peridot Cloak Plugin Laravel Package

cloak/peridot-cloak-plugin

A Peridot plugin that brings Cloak into your PHP test suite, letting you wire up its features directly from your specs with minimal configuration. Install via Composer, enable the plugin, and keep your tests readable and expressive.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What this package actually is. cloak/peridot-cloak-plugin is a bridge between two niche PHP testing tools: Peridot (a BDD-style test runner) and Cloak (a code-coverage threshold enforcer). It is not a Laravel package. It has no service provider, no config publish tag, no facade, and no Laravel integration surface. Any framing of this as a "Laravel package" is inaccurate, and that misconception is itself the first evaluation finding.

Architecture fit. The plugin's role is narrow and test-time only: it hooks Peridot's lifecycle to start/stop coverage collection and assert a minimum coverage percentage against a Cloak config. That is a legitimate CI gate concern, but it sits entirely outside the application runtime. In a modern Laravel codebase the equivalent capability is already first-class: PHPUnit 9+ supports <coverage> thresholds in phpunit.xml, Pest exposes --coverage --min, and CI tools (SonarQube, Codecov, Coveralls) provide trend gating. The architectural value this package would add in 2025 is essentially zero.

Integration feasibility. Mechanically possible via Composer, but practically blocked. The last release is January 2015, the repository is archived, and there are zero dependents and zero stars. Cloak itself and Peridot both sit far outside mainstream PHP testing adoption, which means we would be integrating an abandoned bridge between two low-adoption tools. Feasibility is "technically installable, operationally unsupported."

Technical risk. High and concentrated in version drift:

  • PHP compatibility. A 2015-era package targets PHP 5.x/early 7.x idioms. PHP 8.x (typed properties, removed each(), string/array function signature changes, create_function removal) will very likely break it outright.
  • Xdebug API drift. Cloak-era coverage collection leans on xdebug_start_code_coverage / xdebug_get_code_coverage. Xdebug 3 changed defaults, modes (XDEBUG_MODE=coverage), and behaviors. This is a common silent-failure point.
  • Peridot abandonment. Peridot is effectively unmaintained; relying on it for a Laravel suite is already an outlier decision.
  • Supply chain. An archived, zero-dependent package receives no security review. Pinning it means owning a fork indefinitely.
  • Signal-to-noise. The provided opportunity: 5.87 score is inconsistent with the objective evidence (archived, 0 stars, 0 dependents, 10-year-old release). I would treat that score as unreliable and disqualifying evidence rather than a positive signal.

Key questions for the requesting team.

  1. Does any part of our estate actually run Peridot today, or is this a speculative evaluation?
  2. What is the underlying need — a hard coverage gate in CI, coverage trend reporting, or per-PR coverage deltas? (Each has a better-maintained answer.)
  3. What PHP versions and Xdebug versions are in the target environment?
  4. Is there a legacy application where Peridot cannot be migrated, or is this greenfield?
  5. Who would own a fork if we adopted it, and for how long?
  6. Are we prepared to accept an unpatched dependency in the build chain?

Integration Approach

Stack fit. Poor for Laravel. Laravel's testing convention is PHPUnit, with Pest as the modern expressive alternative. Peridot occupies a small, older slice of the PHP BDD landscape (competing historically with PHPSpec/Behat-style tooling). Introducing Peridot solely to use this plugin would be an inverted decision: adopting an abandoned runner to gain an abandoned coverage gate.

Recommended migration path (do not adopt). Replace the capability, not the package:

  1. Coverage gate → PHPUnit <coverage><report> with failOnWarning/threshold enforcement, or Pest's --coverage --min=NN, or a CI-side check against a Clover/Cobertura report.
  2. Trend and PR gating → Codecov, Coveralls, or SonarQube; these give delta coverage and annotations for free and are actively maintained.
  3. BDD expressiveness, if that is the actual driver → Pest offers a comparable describe/it/expect syntax on top of PHPUnit, with full Laravel integration and active maintenance.
  4. Legacy Peridot suites, if they exist → quarantine them, run them under a pinned PHP 7.x container, and plan a mechanical port of specs to PHPUnit/Pest. Do not extend them.

Compatibility. Assume incompatibility with PHP 8.x and Xdebug 3 without a fork. Even with a fork, Cloak's threshold semantics are trivially reproducible in ~30 lines of CI script, which undermines the case for maintaining a fork.

Sequencing.

  1. Confirm whether Peridot exists in the estate (day 1).
  2. If no → close the evaluation, document the decision, and standardize on the PHPUnit/Pest + CI coverage gate pattern.
  3. If yes → inventory specs, pin the runtime, and schedule a port; treat the Peridot stack as frozen and non-extensible in the interim.
  4. Publish an internal standard for coverage gating so future requests do not re-open this evaluation.

Operational Impact

Maintenance. Upstream maintenance is zero — the repository is archived and the last release is a decade old. Any adoption converts into an internal fork obligation: PHP version bumps, Xdebug API changes, and Composer resolution conflicts all become our problem. That is a permanent tax for a capability we can obtain from maintained tooling at no cost.

Support. No maintainer, no issue triage, no security advisories, no CVE response path. For a dependency in the build chain this is tolerable only if the blast radius is confined to CI, but it still represents unpatched code executing in our pipeline. Community knowledge is effectively nonexistent (0 stars, 0 dependents), so troubleshooting is entirely self-service.

Scaling. Runtime scaling is a non-issue — it executes only during tests. The scaling concern is matrix scaling: as PHP versions, Xdebug modes, and CI runners multiply, the probability of an incompatibility in a 2015 package approaches one. Coverage collection is also the slowest part of a test run; Cloak's era predates parallel coverage merging, so large suites would need bespoke handling that modern tools provide natively.

Failure modes.

  • Silent false-pass: coverage collection fails to start (wrong XDEBUG_MODE, missing extension) and the threshold check passes trivially — worse than no gate, because it creates false assurance.
  • Hard break on PHP upgrade: fatal errors on minor PHP bumps, blocking unrelated upgrades.
  • Composer resolution deadlock: abandoned package constrains shared dependency versions across the monorepo.
  • Fork divergence: internal patches accumulate and drift from any upstream intent.
  • Bus factor: one engineer understands the bespoke setup; departure removes the gate's institutional knowledge.

Ramp-up. Low for anyone who already knows PHPUnit-style coverage concepts, but Peridot itself is unfamiliar to most PHP engineers hired in the last several years, so onboarding cost is paid in an unusual framework plus a bespoke plugin. Contrast with PHPUnit/Pest, where ramp-up is near zero because the tooling is already in every Laravel engineer's muscle memory.

Recommendation. Decline adoption. The package is archived, unmaintained, decade-stale, non-Laravel, and duplicates a capability that is natively supported and actively maintained in the current Laravel testing stack. Record the decision and the standard replacement pattern so the request does not recur. If a legacy Peridot footprint genuinely exists, scope a port rather than an integration.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin