From 72faa384726bc5c52f8c301b9a8f00eacf58d664 Mon Sep 17 00:00:00 2001 From: Ahmed Darrazi Date: Sun, 8 Feb 2026 21:29:20 +0100 Subject: [PATCH] feat: require inspect affordance for lists - Replace view-only row buttons with clickable rows (recordUrl)\n- Update action-surface contract slot to InspectAffordance + validator support\n- Add golden guard tests + contract doc\n- Update SpecKit constitution/templates to include inspection affordance rule --- .github/agents/copilot-instructions.md | 3 +- .specify/memory/constitution.md | 12 +- .specify/templates/plan-template.md | 2 +- .specify/templates/spec-template.md | 4 +- .specify/templates/tasks-template.md | 1 + app/Filament/Resources/EntraGroupResource.php | 35 +- .../Resources/EntraGroupSyncRunResource.php | 22 +- .../Resources/InventoryItemResource.php | 22 +- .../Resources/InventorySyncRunResource.php | 22 +- .../Resources/OperationRunResource.php | 33 ++ app/Filament/Resources/PolicyResource.php | 21 +- .../PolicyResource/Pages/ListPolicies.php | 114 +++---- .../VersionsRelationManager.php | 14 + .../Resources/PolicyVersionResource.php | 19 +- .../ActionSurfaceDeclaration.php | 120 +++++++ .../ActionSurface/ActionSurfaceDefaults.php | 13 + .../ActionSurfaceDiscoveredComponent.php | 25 ++ .../ActionSurface/ActionSurfaceDiscovery.php | 292 +++++++++++++++++ .../ActionSurface/ActionSurfaceExemption.php | 21 ++ .../ActionSurface/ActionSurfaceExemptions.php | 69 ++++ .../ActionSurfaceProfileDefinition.php | 58 ++++ .../ActionSurfaceSlotRequirement.php | 38 +++ .../ActionSurfaceValidationIssue.php | 34 ++ .../ActionSurfaceValidationResult.php | 53 ++++ .../ActionSurface/ActionSurfaceValidator.php | 299 ++++++++++++++++++ .../Enums/ActionSurfaceComponentType.php | 12 + .../Enums/ActionSurfaceInspectAffordance.php | 12 + .../Enums/ActionSurfacePanelScope.php | 11 + .../Enums/ActionSurfaceProfile.php | 14 + .../ActionSurface/Enums/ActionSurfaceSlot.php | 15 + .../Enums/ActionSurfaceSlotStatus.php | 11 + docs/ui/action-surface-contract.md | 26 ++ .../checklists/requirements.md | 37 +++ .../action-surface-declaration.schema.json | 102 ++++++ .../082-action-surface-contract/data-model.md | 81 +++++ specs/082-action-surface-contract/plan.md | 108 +++++++ .../082-action-surface-contract/quickstart.md | 34 ++ specs/082-action-surface-contract/research.md | 104 ++++++ specs/082-action-surface-contract/spec.md | 191 +++++++++++ specs/082-action-surface-contract/tasks.md | 127 ++++++++ .../EntraGroupSyncRunResourceTest.php | 36 +++ .../Guards/ActionSurfaceContractTest.php | 209 ++++++++++++ .../Guards/ActionSurfaceValidatorTest.php | 153 +++++++++ .../Rbac/ActionSurfaceRbacSemanticsTest.php | 40 +++ 44 files changed, 2585 insertions(+), 84 deletions(-) create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceDeclaration.php create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceDefaults.php create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceDiscoveredComponent.php create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceDiscovery.php create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceExemption.php create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceExemptions.php create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceProfileDefinition.php create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceSlotRequirement.php create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceValidationIssue.php create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceValidationResult.php create mode 100644 app/Support/Ui/ActionSurface/ActionSurfaceValidator.php create mode 100644 app/Support/Ui/ActionSurface/Enums/ActionSurfaceComponentType.php create mode 100644 app/Support/Ui/ActionSurface/Enums/ActionSurfaceInspectAffordance.php create mode 100644 app/Support/Ui/ActionSurface/Enums/ActionSurfacePanelScope.php create mode 100644 app/Support/Ui/ActionSurface/Enums/ActionSurfaceProfile.php create mode 100644 app/Support/Ui/ActionSurface/Enums/ActionSurfaceSlot.php create mode 100644 app/Support/Ui/ActionSurface/Enums/ActionSurfaceSlotStatus.php create mode 100644 docs/ui/action-surface-contract.md create mode 100644 specs/082-action-surface-contract/checklists/requirements.md create mode 100644 specs/082-action-surface-contract/contracts/action-surface-declaration.schema.json create mode 100644 specs/082-action-surface-contract/data-model.md create mode 100644 specs/082-action-surface-contract/plan.md create mode 100644 specs/082-action-surface-contract/quickstart.md create mode 100644 specs/082-action-surface-contract/research.md create mode 100644 specs/082-action-surface-contract/spec.md create mode 100644 specs/082-action-surface-contract/tasks.md create mode 100644 tests/Feature/Guards/ActionSurfaceContractTest.php create mode 100644 tests/Feature/Guards/ActionSurfaceValidatorTest.php create mode 100644 tests/Feature/Rbac/ActionSurfaceRbacSemanticsTest.php diff --git a/.github/agents/copilot-instructions.md b/.github/agents/copilot-instructions.md index 1e4af7c..0e60843 100644 --- a/.github/agents/copilot-instructions.md +++ b/.github/agents/copilot-instructions.md @@ -21,6 +21,7 @@ ## Active Technologies - PHP 8.4.15 (Laravel 12) + Filament v5, Livewire v4, Tailwind v4 (080-workspace-managed-tenant-admin) - PostgreSQL (via Sail) (080-workspace-managed-tenant-admin) - PHP 8.4.15 + Laravel 12, Filament v5, Livewire v4, Socialite v5 (081-provider-connection-cutover) +- PHP 8.4.x + Laravel 12, Filament v5, Livewire v4 (082-action-surface-contract) - PHP 8.4.15 (feat/005-bulk-operations) @@ -40,9 +41,9 @@ ## Code Style PHP 8.4.15: Follow standard conventions ## Recent Changes +- 082-action-surface-contract: Added PHP 8.4.x + Laravel 12, Filament v5, Livewire v4 - 081-provider-connection-cutover: Added PHP 8.4.15 + Laravel 12, Filament v5, Livewire v4, Socialite v5 - 080-workspace-managed-tenant-admin: Added PHP 8.4.15 (Laravel 12) + Filament v5, Livewire v4, Tailwind v4 -- 078-operations-tenantless-canonical: Added PHP 8.4 (Laravel 12) + Filament v5, Livewire v4, Filament Infolists (schema-based) diff --git a/.specify/memory/constitution.md b/.specify/memory/constitution.md index 9c087ed..afba721 100644 --- a/.specify/memory/constitution.md +++ b/.specify/memory/constitution.md @@ -1,11 +1,10 @@