Skip to content

Commit 404c5ac

Browse files
[cross-repo from server#284] Conformance blocker: make v1 to v2 migration guarantees measurable against current artifacts (#700)
1 parent df2aa54 commit 404c5ac

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

docs/architecture/platform-conformance-suite.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ column lists it *and* the category status is not `provisional`.
9090
Provisional categories ship an advisory result (warn but do not fail);
9191
they become required when promoted to `stable` in a later suite version.
9292

93+
Migration runtime coverage is intentionally absent from suite version
94+
12. It becomes a fixture category only after the docs-site static
95+
contract and public scenario manifest publish together; until then,
96+
implementations do not fail conformance for missing migration scenarios.
97+
9398
### Signals and queries runtime contract
9499

95100
The `signal_query_runtime_contract` category is stable and load-bearing.

tests/Unit/V2/PlatformConformanceSuiteTest.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,35 @@ public function testEveryFixtureCategoryAuthorityDocIsACustomerResolvableUrl():
165165
}
166166
}
167167

168+
public function testMigrationRuntimeContractIsDeferredUntilPublicScenarioManifestPublishes(): void
169+
{
170+
$manifest = PlatformConformanceSuite::manifest();
171+
172+
$this->assertSame(
173+
12,
174+
$manifest['version'],
175+
'the workflow mirror must stay aligned with the currently published platform conformance contract',
176+
);
177+
$this->assertArrayNotHasKey(
178+
'migration_runtime_contract',
179+
$manifest['fixture_catalog'],
180+
'migration conformance becomes a fixture category only after its public scenario manifest exists',
181+
);
182+
$this->assertNotContains(
183+
'migration_runtime_contract',
184+
$manifest['pass_fail_rules']['stable_runtime_scenario_coverage']['applies_to_categories'],
185+
'missing migration scenarios must not be part of stable runtime coverage while the source manifest is unpublished',
186+
);
187+
188+
foreach ($manifest['targets'] as $name => $target) {
189+
$this->assertNotContains(
190+
'migration_runtime_contract',
191+
$target['required_fixture_categories'],
192+
"$name must not require migration conformance before the public scenario manifest is published",
193+
);
194+
}
195+
}
196+
168197
public function testMcpDiscoveryCategoryNamesCurrentReferenceSurface(): void
169198
{
170199
$manifest = PlatformConformanceSuite::manifest();

0 commit comments

Comments
 (0)