Align governance tests with subsystem registry

Update canonical completion and subsystem lookup expectations for shared ownership and current proof files.
This commit is contained in:
rcourtman
2026-07-23 22:46:25 +01:00
parent 3c6d933e9d
commit 582d250c6e
2 changed files with 156 additions and 20 deletions
@@ -189,9 +189,42 @@ class CanonicalCompletionGuardTest(unittest.TestCase):
self.assertIn("require_explicit_path_policy_coverage", rule["verification"])
self.assertIn("path_policies", rule["verification"])
def test_monitoring_runtime_change_requires_monitoring_contract(self):
def test_monitoring_runtime_change_requires_monitoring_and_agent_lifecycle_contracts(
self,
):
required = infer_impacted_subsystems(["internal/monitoring/monitor.go"])
self.assertEqual(set(required), {"monitoring"})
self.assertEqual(set(required), {"agent-lifecycle", "monitoring"})
lifecycle = required["agent-lifecycle"]
self.assertEqual(
lifecycle["contract"],
"docs/release-control/v6/internal/subsystems/agent-lifecycle.md",
)
self.assertEqual(
lifecycle["touched_runtime_files"],
["internal/monitoring/monitor.go"],
)
self.assertEqual(
lifecycle["verification_requirements"],
[
{
"id": "host-agent-server-lifecycle",
"label": "server-side host-agent deletion and re-enrollment lifecycle proof",
"touched_runtime_files": ["internal/monitoring/monitor.go"],
"allow_same_subsystem_tests": False,
"test_prefixes": [],
"exact_files": [
"internal/api/host_agent_removal_lifecycle_integration_test.go",
"internal/config/host_continuity_test.go",
"internal/monitoring/monitor_host_agent_removal_lifecycle_test.go",
"internal/monitoring/monitor_host_agents_test.go",
"scripts/installtests/agent_state_dir_lifecycle_test.go",
"scripts/installtests/install_ps1_test.go",
"scripts/installtests/install_sh_test.go",
],
}
],
)
monitoring = required["monitoring"]
self.assertEqual(monitoring["id"], "monitoring")
@@ -226,6 +259,7 @@ class CanonicalCompletionGuardTest(unittest.TestCase):
"kubernetes-native-agent-runtime",
"runtime-report-model",
"proxmox-zfs-runtime",
"proxmox-cluster-client-runtime",
"proxmox-ceph-runtime",
"proxmox-backup-identity-monitoring",
"container-entrypoint-runtime",
@@ -246,14 +280,21 @@ class CanonicalCompletionGuardTest(unittest.TestCase):
"allow_same_subsystem_tests": False,
"test_prefixes": [],
"exact_files": [
"internal/config/docker_metadata_test.go",
"internal/config/guest_metadata_test.go",
"internal/monitoring/availability_poller_test.go",
"internal/monitoring/availability_udp_test.go",
"internal/monitoring/canonical_guardrails_test.go",
"internal/monitoring/issue1485_unraid_lifecycle_test.go",
"internal/monitoring/issue1595_collection_trust_test.go",
"internal/monitoring/monitor_additional_test.go",
"internal/monitoring/monitor_alert_intent_test.go",
"internal/monitoring/monitor_alert_override_migration_test.go",
"internal/monitoring/monitor_backups_readstate_test.go",
"internal/monitoring/monitor_docker_test.go",
"internal/monitoring/monitor_host_agent_removal_lifecycle_test.go",
"internal/monitoring/monitor_host_agents_test.go",
"internal/monitoring/monitor_pve_cluster_refresh_test.go",
"internal/unifiedresources/code_standards_test.go",
],
}
@@ -322,9 +363,44 @@ class CanonicalCompletionGuardTest(unittest.TestCase):
],
)
def test_host_agent_ingest_runtime_change_requires_monitoring_contract(self):
def test_host_agent_ingest_runtime_change_requires_monitoring_and_agent_lifecycle_contracts(
self,
):
required = infer_impacted_subsystems(["internal/monitoring/monitor_agents.go"])
self.assertEqual(set(required), {"monitoring"})
self.assertEqual(set(required), {"agent-lifecycle", "monitoring"})
lifecycle = required["agent-lifecycle"]
self.assertEqual(
lifecycle["contract"],
"docs/release-control/v6/internal/subsystems/agent-lifecycle.md",
)
self.assertEqual(
lifecycle["touched_runtime_files"],
["internal/monitoring/monitor_agents.go"],
)
self.assertEqual(
lifecycle["verification_requirements"],
[
{
"id": "host-agent-server-lifecycle",
"label": "server-side host-agent deletion and re-enrollment lifecycle proof",
"touched_runtime_files": [
"internal/monitoring/monitor_agents.go"
],
"allow_same_subsystem_tests": False,
"test_prefixes": [],
"exact_files": [
"internal/api/host_agent_removal_lifecycle_integration_test.go",
"internal/config/host_continuity_test.go",
"internal/monitoring/monitor_host_agent_removal_lifecycle_test.go",
"internal/monitoring/monitor_host_agents_test.go",
"scripts/installtests/agent_state_dir_lifecycle_test.go",
"scripts/installtests/install_ps1_test.go",
"scripts/installtests/install_sh_test.go",
],
}
],
)
monitoring = required["monitoring"]
self.assertEqual(
@@ -345,7 +421,11 @@ class CanonicalCompletionGuardTest(unittest.TestCase):
"allow_same_subsystem_tests": False,
"test_prefixes": [],
"exact_files": [
"internal/config/host_continuity_test.go",
"internal/monitoring/issue1485_unraid_lifecycle_test.go",
"internal/monitoring/issue1595_collection_trust_test.go",
"internal/monitoring/monitor_docker_test.go",
"internal/monitoring/monitor_host_agent_removal_lifecycle_test.go",
"internal/monitoring/monitor_host_agents_test.go",
"internal/monitoring/monitor_package_updates_test.go",
"internal/unifiedresources/code_standards_test.go",
@@ -594,6 +674,7 @@ class CanonicalCompletionGuardTest(unittest.TestCase):
"test_prefixes": [],
"exact_files": [
"internal/agentupdate/coverage_test.go",
"internal/hostagent/agent_flushbuffer_test.go",
"internal/hostagent/agent_metrics_test.go",
"internal/hostagent/agent_new_test.go",
"internal/hostagent/command_client_test.go",
@@ -607,6 +688,8 @@ class CanonicalCompletionGuardTest(unittest.TestCase):
"internal/hostagent/send_report_test.go",
"internal/hostagent/smartctl_standby_guard_test.go",
"internal/hostagent/storage_cleanup_test.go",
"internal/hostagent/unraid_test.go",
"pkg/agents/host/report_test.go",
],
}
],
@@ -1072,8 +1155,11 @@ class CanonicalCompletionGuardTest(unittest.TestCase):
"test_prefixes": ["frontend-modern/src/api/__tests__/"],
"exact_files": [
"frontend-modern/src/types/api.ts",
"internal/api/ai_handlers_more_test.go",
"internal/api/ai_handlers_patrol_actions_additional_test.go",
"internal/api/contract_test.go",
"internal/api/host_agent_removal_lifecycle_integration_test.go",
"internal/api/metadata_handlers_test.go",
"internal/api/patrol_autopilot_test.go",
],
}
@@ -1999,11 +2085,18 @@ class CanonicalCompletionGuardTest(unittest.TestCase):
],
)
def test_monitoring_owned_runtime_does_not_require_unified_resources_contract(self):
def test_monitoring_owned_runtime_requires_each_shared_owner_contract(self):
required = required_contract_updates(["internal/monitoring/monitor.go"])
self.assertEqual(
required,
{
"docs/release-control/v6/internal/subsystems/agent-lifecycle.md": {
"subsystem": "agent-lifecycle",
"contract": "docs/release-control/v6/internal/subsystems/agent-lifecycle.md",
"reason": "owner",
"touched_runtime_files": ["internal/monitoring/monitor.go"],
"matched_references": [],
},
"docs/release-control/v6/internal/subsystems/monitoring.md": {
"subsystem": "monitoring",
"contract": "docs/release-control/v6/internal/subsystems/monitoring.md",
@@ -2978,12 +2978,11 @@ class SubsystemLookupTest(unittest.TestCase):
self.assertEqual(
api_match["matched_contract_references"],
[
{
"heading": "## Shared Boundaries",
"path": "internal/api/access_control_handlers.go",
"line": 1268,
"heading_line": 166,
}
_contract_reference(
"docs/release-control/v6/internal/subsystems/api-contracts.md",
"62. `internal/api/access_control_handlers.go` shared with `organization-settings`",
"internal/api/access_control_handlers.go",
),
],
)
@@ -4128,23 +4127,64 @@ class SubsystemLookupTest(unittest.TestCase):
],
)
def test_lookup_paths_assigns_host_agent_ingest_runtime_to_monitoring(self) -> None:
def test_lookup_paths_assigns_host_agent_ingest_runtime_to_shared_monitoring_and_agent_lifecycle(
self,
) -> None:
result = lookup_paths(["internal/monitoring/monitor_agents.go"])
self.assertEqual(result["unowned_runtime_files"], [])
file_entry = result["files"][0]
self.assertEqual(file_entry["classification"], "runtime")
self.assertEqual(len(file_entry["matches"]), 1)
match = file_entry["matches"][0]
self.assertEqual(match["subsystem"], "monitoring")
self.assertEqual(match["contract"], "docs/release-control/v6/internal/subsystems/monitoring.md")
self.assertEqual(match["lane_context"]["lane_id"], "L13")
self.assertEqual(match["verification_requirement"]["id"], "host-agent-ingest-runtime")
self.assertEqual(
match["verification_requirement"]["exact_files"],
file_entry["shared_ownership"]["subsystems"],
["agent-lifecycle", "monitoring"],
)
self.assertEqual(len(file_entry["matches"]), 2)
by_subsystem = {match["subsystem"]: match for match in file_entry["matches"]}
self.assertEqual(set(by_subsystem), {"agent-lifecycle", "monitoring"})
lifecycle_match = by_subsystem["agent-lifecycle"]
self.assertEqual(
lifecycle_match["contract"],
"docs/release-control/v6/internal/subsystems/agent-lifecycle.md",
)
self.assertEqual(lifecycle_match["lane_context"]["lane_id"], "L16")
self.assertEqual(
lifecycle_match["verification_requirement"]["id"],
"host-agent-server-lifecycle",
)
self.assertEqual(
lifecycle_match["verification_requirement"]["exact_files"],
[
"internal/api/host_agent_removal_lifecycle_integration_test.go",
"internal/config/host_continuity_test.go",
"internal/monitoring/monitor_host_agent_removal_lifecycle_test.go",
"internal/monitoring/monitor_host_agents_test.go",
"scripts/installtests/agent_state_dir_lifecycle_test.go",
"scripts/installtests/install_ps1_test.go",
"scripts/installtests/install_sh_test.go",
],
)
monitoring_match = by_subsystem["monitoring"]
self.assertEqual(
monitoring_match["contract"],
"docs/release-control/v6/internal/subsystems/monitoring.md",
)
self.assertEqual(monitoring_match["lane_context"]["lane_id"], "L13")
self.assertEqual(
monitoring_match["verification_requirement"]["id"],
"host-agent-ingest-runtime",
)
self.assertEqual(
monitoring_match["verification_requirement"]["exact_files"],
[
"internal/config/host_continuity_test.go",
"internal/monitoring/issue1485_unraid_lifecycle_test.go",
"internal/monitoring/issue1595_collection_trust_test.go",
"internal/monitoring/monitor_docker_test.go",
"internal/monitoring/monitor_host_agent_removal_lifecycle_test.go",
"internal/monitoring/monitor_host_agents_test.go",
"internal/monitoring/monitor_package_updates_test.go",
"internal/unifiedresources/code_standards_test.go",
@@ -4461,6 +4501,7 @@ class SubsystemLookupTest(unittest.TestCase):
match["verification_requirement"]["exact_files"],
[
"internal/agentupdate/coverage_test.go",
"internal/hostagent/agent_flushbuffer_test.go",
"internal/hostagent/agent_metrics_test.go",
"internal/hostagent/agent_new_test.go",
"internal/hostagent/command_client_test.go",
@@ -4474,6 +4515,8 @@ class SubsystemLookupTest(unittest.TestCase):
"internal/hostagent/send_report_test.go",
"internal/hostagent/smartctl_standby_guard_test.go",
"internal/hostagent/storage_cleanup_test.go",
"internal/hostagent/unraid_test.go",
"pkg/agents/host/report_test.go",
],
)