TenantAtlas/apps/platform/tests/Unit
ahmido c86b399b43
Some checks failed
Main Confidence / confidence (push) Failing after 53s
feat(219): Finding ownership semantics + LEAN-001 constitution + backup_set unification (#256)
## Summary

This PR delivers three related improvements:

### 1. Finding Ownership Semantics (Spec 219)
- Add responsibility/accountability labels to findings and finding exceptions
- `owner_user_id` = accountable party (governance owner)
- `assignee_user_id` = responsible party (technical implementer)
- Expose Assign/Reassign actions in FindingResource with audit logging
- Add ownership columns and filters to finding list
- Propagate owner from finding to exception on creation
- Tests: ownership semantics, assignment audit, workflow actions

### 2. Constitution v2.7.0 — LEAN-001 Pre-Production Lean Doctrine
- New principle forbidding legacy aliases, migration shims, dual-write logic, and compatibility fixtures in a pre-production codebase
- AI-agent 4-question verification gate before adding any compatibility path
- Review rule: compatibility shims without answering the gate questions = merge blocker
- Exit condition: LEAN-001 expires at first production deployment
- Spec template: added default "Compatibility posture" block
- Agent instructions: added "Pre-production compatibility check" section

### 3. Backup Set Operation Type Unification
- Unified `backup_set.add_policies` and `backup_set.remove_policies` into single canonical `backup_set.update`
- Removed all legacy aliases, constants, and test fixtures
- Added lifecycle coverage for `backup_set.update` in config
- Updated all 14+ test files referencing legacy types

### Spec Artifacts
- `specs/219-finding-ownership-semantics/` — full spec, plan, tasks, research, data model, contracts, checklist

### Tests
- All affected tests pass (OperationCatalog, backup set, finding workflow, ownership semantics)

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #256
2026-04-20 17:54:33 +00:00
..
Alerts Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Audit Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Auth Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BackupScheduling Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Badge Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Badges feat: add workspace baseline compare matrix (#221) 2026-04-11 10:20:25 +00:00
Baselines Spec 204: harden platform core vocabulary (#234) 2026-04-14 06:09:42 +00:00
DirectoryGroups Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Evidence Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Factories Spec 207: implement shared test fixture slimming (#240) 2026-04-16 17:29:25 +00:00
Filament Spec 185: workspace recovery posture visibility (#216) 2026-04-09 12:57:19 +00:00
Findings feat: harden governance action semantics (#229) 2026-04-12 21:21:44 +00:00
Hardening Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Intune Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Inventory Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Onboarding Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Operations feat(219): Finding ownership semantics + LEAN-001 constitution + backup_set unification (#256) 2026-04-20 17:54:33 +00:00
OpsUx Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Policies Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Providers feat: unify provider-backed action dispatch gating (#255) 2026-04-20 06:52:38 +00:00
Settings Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
SettingsFoundation Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Support feat(219): Finding ownership semantics + LEAN-001 constitution + backup_set unification (#256) 2026-04-20 17:54:33 +00:00
TenantReview Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
Tenants feat: finalize global shell context contract (#246) 2026-04-18 14:00:49 +00:00
Ui/GovernanceActions feat: harden governance action semantics (#229) 2026-04-12 21:21:44 +00:00
AppProtectionPolicyNormalizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
AssignmentBackupServiceTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
AssignmentFetcherTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
AssignmentFilterResolverTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
AssignmentRestoreServiceTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
AuditContextSanitizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BackupItemTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkActionPermissionTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkBackupSetDeleteJobTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkBackupSetForceDeleteJobTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkBackupSetRestoreJobTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkOperationAbortMethodTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkOperationRunProgressTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkOperationRunStatusBucketTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkPolicyDeleteJobTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkPolicyExportJobTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkPolicyVersionForceDeleteJobTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkPolicyVersionPruneJobTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkPolicyVersionRestoreJobTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkRestoreRunDeleteJobTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
BulkRestoreRunRestoreJobTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
CircuitBreakerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
CompliancePolicyNormalizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
CoverageCapabilitiesResolverTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
DefaultPolicyNormalizerDiffTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
DependencyExtractionServiceTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
DependencyTargetResolverTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
DeviceConfigurationPolicyNormalizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
EntraAdminRolesReportServiceTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
ExampleTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
FoundationMappingServiceTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
FoundationSnapshotServiceTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
GraphClientEndpointResolutionTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
GraphClientScopeTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
GraphContractFallbackTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
GraphContractRegistryActualDataTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
GraphContractRegistryOnboardingProbesTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
GraphContractRegistrySettingsApplySanitizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
GraphContractRegistrySettingsWriteStrategyTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
GraphContractRegistryTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
GroupResolverTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
IntuneRoleAssignmentNormalizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
IntuneRoleDefinitionNormalizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
InventoryLinkTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
ManagedDeviceAppConfigurationNormalizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
MicrosoftGraphClientListPoliciesSelectTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
MicrosoftGraphClientRetryPolicyTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
MicrosoftGraphClientTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
ODataTypeValidationTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
PolicyCaptureOrchestratorTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
PolicyNormalizerRoutingTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
PolicyNormalizerSettingsCatalogFlattenTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
PolicyNormalizerSettingsCatalogTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
PolicyNormalizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
PolicyPickerOptionLabelTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
PolicySnapshotServiceTest.php Spec 188: canonical provider connection state cleanup (#219) 2026-04-10 11:22:56 +00:00
PolicyVersionEligibilityTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
RbacOnboardingServiceTest.php Spec 188: canonical provider connection state cleanup (#219) 2026-04-10 11:22:56 +00:00
RequiredPermissionsLinksTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
RestoreRunDeletableTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
RestoreRunTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
RunIdempotencyTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
ScopeTagResolverTest.php Spec 188: canonical provider connection state cleanup (#219) 2026-04-10 11:22:56 +00:00
ScriptsPolicyNormalizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
SettingsCatalogPolicyNormalizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
TenantCurrentTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
TenantPermissionCheckClustersTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
TenantPermissionServiceTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
TenantRequiredPermissionsCopyPayloadTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
TenantRequiredPermissionsFeatureImpactTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
TenantRequiredPermissionsFilteringTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
TenantRequiredPermissionsFreshnessTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
TenantRequiredPermissionsOverallStatusTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
TenantResourceConsentUrlTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
TenantScopeTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
VerificationAssistViewModelBuilderTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
VerificationLinkBehaviorTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
VerificationReportSanitizerEvidenceKindsTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
VerificationReportSanitizerNextStepsUrlTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
VersionDiffTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00
WindowsDriverUpdateProfileNormalizerTest.php Spec 182: relocate Laravel platform to apps/platform (#213) 2026-04-08 08:40:47 +00:00