From bc27f34b70bb3833ff6b9c81fbe2b0bcc6f6cfbe Mon Sep 17 00:00:00 2001 From: "pulse-triage[bot]" <249995291+pulse-triage[bot]@users.noreply.github.com> Date: Sun, 25 Oct 2026 10:02:45 +0000 Subject: [PATCH] Align Recovery verification-policy regression coverage Keep the seven remaining settings shells under framing proof, and assert transfer-specific membership for Recovery, its dialogs and its flow. Confirm dedicated proofs match and generic settings architecture cannot satisfy transfer safety. This repairs PR 3249's reproducible governance-test failure without changing the guard or weakening the registry. Change-source: pulse-maintainer --- .../canonical_completion_guard_test.py | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/scripts/release_control/canonical_completion_guard_test.py b/scripts/release_control/canonical_completion_guard_test.py index 3d61bd6e41..872efd6c8f 100644 --- a/scripts/release_control/canonical_completion_guard_test.py +++ b/scripts/release_control/canonical_completion_guard_test.py @@ -2997,6 +2997,46 @@ None yet. self.assertEqual(requirements[0]["exact_files"], [proof]) self.assertFalse(requirements[0]["allow_same_subsystem_tests"]) + def test_configuration_transfer_surfaces_use_their_own_behavioral_proofs(self): + rule = next(rule for rule in load_subsystem_rules() if rule["id"] == "frontend-primitives") + proofs = [ + "frontend-modern/src/components/Settings/__tests__/BackupTransferDialogs.test.tsx", + "frontend-modern/src/components/Settings/__tests__/RecoverySettingsPanel.test.tsx", + "frontend-modern/src/components/Settings/__tests__/useBackupTransferFlow.test.ts", + ] + for runtime in [ + "frontend-modern/src/components/Settings/BackupTransferDialogs.tsx", + "frontend-modern/src/components/Settings/RecoverySettingsPanel.tsx", + "frontend-modern/src/components/Settings/useBackupTransferFlow.ts", + ]: + with self.subTest(runtime=runtime): + requirements = build_verification_requirements(rule, [runtime]) + self.assertEqual( + requirements, + [{ + "id": "settings-configuration-transfer", + "label": "configuration transfer target and dispatch proof", + "touched_runtime_files": [runtime], + "allow_same_subsystem_tests": False, + "test_prefixes": [], + "exact_files": proofs, + }], + ) + for proof in proofs: + self.assertEqual( + staged_verification_files_for_requirement(rule, requirements[0], [proof]), + [proof], + ) + # Generic settings framing must not stand in for transfer safety. + self.assertEqual( + staged_verification_files_for_requirement( + rule, + requirements[0], + ["frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts"], + ), + [], + ) + def test_frontend_primitive_remaining_settings_shells_use_specific_guardrails(self): rule = next(rule for rule in load_subsystem_rules() if rule["id"] == "frontend-primitives") runtime_files = [ @@ -3005,7 +3045,6 @@ None yet. "frontend-modern/src/components/Settings/AuditLogPanel.tsx", "frontend-modern/src/components/Settings/AuditWebhookPanel.tsx", "frontend-modern/src/components/Settings/GeneralSettingsPanel.tsx", - "frontend-modern/src/components/Settings/RecoverySettingsPanel.tsx", "frontend-modern/src/components/Settings/SecurityOverviewPanel.tsx", "frontend-modern/src/components/Settings/SSOProvidersPanel.tsx", ]