## Summary - add Intune RBAC role definitions and role assignments as foundation-backed inventory, backup, and versioned snapshot types - add RBAC-specific normalization, coverage, permission-warning handling, and preview-only restore safety behavior across existing Filament and service surfaces - add spec 127 artifacts, contracts, audits, and focused regression coverage for inventory, backup, versioning, verification, and authorization behavior ## Testing - `vendor/bin/sail bin pint --dirty --format agent` - `vendor/bin/sail artisan test --compact tests/Feature/Inventory/InventorySyncServiceTest.php tests/Feature/Filament/InventoryCoverageTableTest.php tests/Feature/FoundationBackupTest.php tests/Feature/Filament/RestoreExecutionTest.php tests/Feature/RestoreUnknownPolicyTypeSafetyTest.php tests/Unit/GraphContractRegistryTest.php tests/Unit/FoundationSnapshotServiceTest.php tests/Feature/Verification/IntuneRbacPermissionCoverageTest.php tests/Unit/IntuneRoleDefinitionNormalizerTest.php tests/Unit/IntuneRoleAssignmentNormalizerTest.php` ## Notes - tasks in `specs/127-rbac-inventory-backup/tasks.md` are complete except `T041`, which is the documented manual QA validation step Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #155
43 lines
1.1 KiB
JSON
43 lines
1.1 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://tenantpilot.local/contracts/inventory-coverage-rbac.schema.json",
|
|
"title": "Inventory Coverage RBAC Foundation Extension",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["foundation_types"],
|
|
"properties": {
|
|
"foundation_types": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["intuneRoleDefinition", "intuneRoleAssignment"],
|
|
"properties": {
|
|
"intuneRoleDefinition": {
|
|
"$ref": "#/$defs/coverageRow"
|
|
},
|
|
"intuneRoleAssignment": {
|
|
"$ref": "#/$defs/coverageRow"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"$defs": {
|
|
"coverageRow": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["status"],
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["succeeded", "failed", "skipped"]
|
|
},
|
|
"item_count": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"error_code": {
|
|
"type": ["string", "null"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |