TenantAtlas/tests/Feature/Guards/Spec116OneEngineGuardTest.php
ahmido 7620144ab6 Spec 116: Baseline drift engine v1 (meta fidelity + coverage guard) (#141)
Implements Spec 116 baseline drift engine v1 (meta fidelity) with coverage guard, stable finding identity, and Filament UI surfaces.

Highlights
- Baseline capture/compare jobs and supporting services (meta contract hashing via InventoryMetaContract + DriftHasher)
- Coverage proof parsing + compare partial outcome behavior
- Filament pages/resources/widgets for baseline compare + drift landing improvements
- Pest tests for capture/compare/coverage guard and UI start surfaces
- Research report: docs/research/golden-master-baseline-drift-deep-analysis.md

Validation
- `vendor/bin/sail bin pint --dirty`
- `vendor/bin/sail artisan test --compact --filter="Baseline"`

Notes
- No destructive user actions added; compare/capture remain queued jobs.
- Provider registration unchanged (Laravel 11+/12 uses bootstrap/providers.php for panel providers; not touched here).

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #141
2026-03-02 22:02:58 +00:00

25 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
it('keeps baseline capture/compare hashing on the InventoryMetaContract engine', function (): void {
$compareJob = file_get_contents(base_path('app/Jobs/CompareBaselineToTenantJob.php'));
expect($compareJob)->toBeString();
expect($compareJob)->toContain('hashItemContent');
expect($compareJob)->not->toContain('->fingerprint(');
expect($compareJob)->not->toContain('::fingerprint(');
$captureJob = file_get_contents(base_path('app/Jobs/CaptureBaselineSnapshotJob.php'));
expect($captureJob)->toBeString();
expect($captureJob)->toContain('InventoryMetaContract');
expect($captureJob)->toContain('hashItemContent');
expect($captureJob)->not->toContain('->fingerprint(');
expect($captureJob)->not->toContain('::fingerprint(');
$identity = file_get_contents(base_path('app/Services/Baselines/BaselineSnapshotIdentity.php'));
expect($identity)->toBeString();
expect($identity)->toContain('InventoryMetaContract');
expect($identity)->toContain('hashNormalized');
expect($identity)->not->toContain('fingerprint(');
});