refactor(compat): Prüfbausteine nach src/Compatibility, Matrix und ManifestCheck generisch

Requirement, Call, ConstantRequirement, Mirror, Problem, FeatureStatus, CompatibilityMatrix, Manifest, ManifestCheck sowie Fingerprints und LineDiff liegen jetzt im divi-freien Kern. Neu: GlobalRequirement, CompatibilityMatrix::fromProblems(), ManifestCheck-Option signatures, DiviManifestCheck::create() und DiviAreas. Divi-Verhalten unverändert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jan-Niclas Loosen
2026-11-06 12:03:30 +01:00
co-authored by Claude Opus 5.5
parent 9beb55e228
commit b511ef6348
92 changed files with 1185 additions and 636 deletions
+4 -4
View File
@@ -4,11 +4,11 @@ declare(strict_types=1);
namespace LIT\MCP\Tests\Support;
use LIT\MCP\Integrations\Divi\Release\CompatibilityMatrix;
use LIT\MCP\Compatibility\ReleaseState;
use LIT\MCP\Compatibility\CompatibilityMatrix;
use LIT\MCP\Integrations\Divi\Release\DiviFeature;
use LIT\MCP\Integrations\Divi\Release\FeatureStatus;
use LIT\MCP\Compatibility\FeatureStatus;
use LIT\MCP\Integrations\Divi\Release\ReleaseGate;
use LIT\MCP\Integrations\Divi\Release\ReleaseState;
use LIT\MCP\Integrations\Divi\Release\ReleaseStatus;
/** A release status in which single Divi capabilities are locked – for guard and tool tests. */
@@ -37,7 +37,7 @@ final class DiviFeatureFixtures
}
}
$status = new ReleaseStatus($overall, $version, null, [], null, matrix: new CompatibilityMatrix($features));
$status = new ReleaseStatus($overall, $version, null, [], null, matrix: new CompatibilityMatrix(DiviFeature::cases(), $features));
ReleaseGate::useResolver(static fn (): ReleaseStatus => $status);
}
+5 -5
View File
@@ -4,10 +4,10 @@ declare(strict_types=1);
namespace LIT\MCP\Tests\Support;
use LIT\MCP\Integrations\Divi\Release\CompatibilityMatrix;
use LIT\MCP\Compatibility\ReleaseState;
use LIT\MCP\Compatibility\CompatibilityMatrix;
use LIT\MCP\Integrations\Divi\Release\DiviFeature;
use LIT\MCP\Integrations\Divi\Release\FeatureStatus;
use LIT\MCP\Integrations\Divi\Release\ReleaseState;
use LIT\MCP\Compatibility\FeatureStatus;
/** Compatibility matrices for tests: every feature released, with single features replaced. */
final class MatrixFixtures
@@ -22,10 +22,10 @@ final class MatrixFixtures
$features[$feature->value] = new FeatureStatus($feature, ReleaseState::Released, [], $source);
}
foreach ($replace as $status) {
$features[$status->feature->value] = $status;
$features[$status->feature->id()] = $status;
}
return new CompatibilityMatrix($features);
return new CompatibilityMatrix(DiviFeature::cases(), $features);
}
/** @param string ...$problems */
+6 -6
View File
@@ -4,10 +4,10 @@ declare(strict_types=1);
namespace LIT\MCP\Tests\Support;
use LIT\MCP\Integrations\Divi\Release\CompatibilityMatrix;
use LIT\MCP\Compatibility\ReleaseState;
use LIT\MCP\Compatibility\CompatibilityMatrix;
use LIT\MCP\Integrations\Divi\Release\DiviFeature;
use LIT\MCP\Integrations\Divi\Release\FeatureStatus;
use LIT\MCP\Integrations\Divi\Release\ReleaseState;
use LIT\MCP\Compatibility\FeatureStatus;
use LIT\MCP\Integrations\Divi\Release\ReleaseStatus;
/**
@@ -30,7 +30,7 @@ final class ReleaseMatrices
: new FeatureStatus($feature, ReleaseState::Released, [], ReleaseStatus::SOURCE_CODE);
}
return new CompatibilityMatrix($features);
return new CompatibilityMatrix(DiviFeature::cases(), $features);
}
/** @param list<DiviFeature> $locked */
@@ -52,7 +52,7 @@ final class ReleaseMatrices
string $source = ReleaseStatus::SOURCE_CODE,
?array $release = null
): ReleaseStatus {
return ReleaseStatus::of($version, CompatibilityMatrix::allReleased($source), $release);
return ReleaseStatus::of($version, CompatibilityMatrix::allReleased(DiviFeature::cases(), $source), $release);
}
/**
@@ -62,6 +62,6 @@ final class ReleaseMatrices
*/
public static function uniform(ReleaseState $state, string $version = '5.3.0', array $problems = []): ReleaseStatus
{
return ReleaseStatus::of($version, CompatibilityMatrix::uniform($state, $problems));
return ReleaseStatus::of($version, CompatibilityMatrix::uniform(DiviFeature::cases(), $state, $problems));
}
}