refactor: Übergangs-API der Gesamtsperre entfernt (assertWritable, writable, refusal, writeFeatures, released); DiviLocked verlangt die gesperrten Fähigkeiten, Tests bauen Zustände über ReleaseMatrices

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jan-Niclas Loosen
2026-10-18 22:53:00 +02:00
co-authored by Claude Opus 5.5
parent c036a92b60
commit d0d3488df8
21 changed files with 129 additions and 239 deletions
+27 -1
View File
@@ -10,7 +10,10 @@ use LIT\MCP\Integrations\Divi\Release\FeatureStatus;
use LIT\MCP\Integrations\Divi\Release\ReleaseState;
use LIT\MCP\Integrations\Divi\Release\ReleaseStatus;
/** Release statuses for tests: every feature released except the named ones. */
/**
* Release statuses for tests, built the way production builds them (ReleaseStatus::of() with a matrix): every feature
* released except the named ones, all released, or all in one state.
*/
final class ReleaseMatrices
{
/** @param list<DiviFeature> $locked */
@@ -38,4 +41,27 @@ final class ReleaseMatrices
): ReleaseStatus {
return ReleaseStatus::of($version, self::matrix($locked, $state));
}
/**
* Every feature released from $source (DiviReleases::TESTED = code, ReleaseStore = database, auto).
*
* @param array<string, mixed>|null $release The database entry of a SOURCE_DATABASE release.
*/
public static function released(
string $version = '5.2.1',
string $source = ReleaseStatus::SOURCE_CODE,
?array $release = null
): ReleaseStatus {
return ReleaseStatus::of($version, CompatibilityMatrix::allReleased($source), $release);
}
/**
* Every feature in $state with $problems (an unreleased or broken Divi as a whole).
*
* @param list<string> $problems
*/
public static function uniform(ReleaseState $state, string $version = '5.3.0', array $problems = []): ReleaseStatus
{
return ReleaseStatus::of($version, CompatibilityMatrix::uniform($state, $problems));
}
}