## Summary - add the complete Spec 196 artifact set for hard Filament nativity cleanup - include spec, requirements checklist, plan, research, data model, logical contract, quickstart, and executable tasks - update agent context after planning - resolve all cross-artifact consistency issues so the feature package is implementation-ready ## Included artifacts - specs/196-hard-filament-nativity-cleanup/spec.md - specs/196-hard-filament-nativity-cleanup/checklists/requirements.md - specs/196-hard-filament-nativity-cleanup/plan.md - specs/196-hard-filament-nativity-cleanup/research.md - specs/196-hard-filament-nativity-cleanup/data-model.md - specs/196-hard-filament-nativity-cleanup/contracts/filament-nativity-cleanup.logical.openapi.yaml - specs/196-hard-filament-nativity-cleanup/quickstart.md - specs/196-hard-filament-nativity-cleanup/tasks.md ## Notes - no runtime code paths were changed - no application tests were run because this change set is spec and planning documentation only - the artifact set was re-analyzed until no consistency issues remained Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #231
165 lines
7.7 KiB
Markdown
165 lines
7.7 KiB
Markdown
# Quickstart: Hard Filament Nativity Cleanup
|
|
|
|
## Goal
|
|
|
|
Implement Spec 196 by replacing three pseudo-native UI contracts with native Filament or Livewire interaction models while preserving current scope, summaries, empty states, and drilldown behavior.
|
|
|
|
## Implementation Sequence
|
|
|
|
### 1. Prepare shared test and guard scaffolding
|
|
|
|
Touch:
|
|
|
|
- `apps/platform/tests/Feature/Filament/InventoryItemDependencyEdgesTableTest.php`
|
|
- `apps/platform/tests/Feature/Filament/TenantRequiredPermissionsPageTest.php`
|
|
- `apps/platform/tests/Feature/Guards/FilamentTableStandardsGuardTest.php`
|
|
- `apps/platform/tests/Feature/Rbac/TenantRequiredPermissionsTrustedStateTest.php`
|
|
- `apps/platform/tests/Feature/Evidence/EvidenceOverviewPageTest.php`
|
|
|
|
Do:
|
|
|
|
- create the new focused surface-test entry points before story implementation starts
|
|
- add the shared guard expectations for new native page-table and faux-control regressions
|
|
- add the shared mount-only query-seeding regression coverage that later story work depends on
|
|
|
|
### 2. Replace the inventory dependency GET form with an embedded `TableComponent`
|
|
|
|
Touch:
|
|
|
|
- `apps/platform/app/Filament/Resources/InventoryItemResource.php`
|
|
- `apps/platform/app/Livewire/InventoryItemDependencyEdgesTable.php`
|
|
- `apps/platform/resources/views/filament/components/dependency-edges.blade.php`
|
|
|
|
Do:
|
|
|
|
- extend the focused dependency tests before landing implementation changes
|
|
- embed a native Filament `TableComponent` inside the existing inventory detail section
|
|
- move direction and relationship state into the component
|
|
- fetch dependency rows through current dependency services
|
|
- keep missing-target rendering and target-link behavior intact
|
|
|
|
Do not:
|
|
|
|
- create a new standalone route for dependencies
|
|
- convert the surface into a RelationManager
|
|
- keep `request()` as the primary interaction-state source
|
|
|
|
### 3. Convert `TenantRequiredPermissions` to a native page-owned filter and table contract
|
|
|
|
Touch:
|
|
|
|
- `apps/platform/app/Filament/Pages/TenantRequiredPermissions.php`
|
|
- `apps/platform/resources/views/filament/pages/tenant-required-permissions.blade.php`
|
|
- `apps/platform/app/Services/Intune/TenantRequiredPermissionsViewModelBuilder.php` only if a small adapter is needed
|
|
|
|
Do:
|
|
|
|
- extend the focused required-permissions tests before landing implementation changes
|
|
- add `HasTable` and `InteractsWithTable`
|
|
- replace pseudo-native filter controls with native filters and native search
|
|
- derive the summary, guidance, and copy payload blocks from the same normalized filter state that drives the table rows
|
|
- keep the route tenant authoritative and allow query values only as initial seed state
|
|
|
|
Do not:
|
|
|
|
- let query values redefine tenant scope
|
|
- split the page into a new resource or standalone workflow
|
|
- introduce a wrapper abstraction that merely hides the old filter bar
|
|
|
|
### 4. Convert `EvidenceOverview` to a native page-owned table
|
|
|
|
Touch:
|
|
|
|
- `apps/platform/app/Filament/Pages/Monitoring/EvidenceOverview.php`
|
|
- `apps/platform/resources/views/filament/pages/monitoring/evidence-overview.blade.php`
|
|
|
|
Do:
|
|
|
|
- extend the focused evidence overview tests before landing implementation changes
|
|
- add `HasTable` and `InteractsWithTable`
|
|
- move current row construction into a native table records callback
|
|
- convert the current tenant query prefilter into a native filter seeded from entitled query input only
|
|
- add native search across tenant-facing row labels
|
|
- keep row inspect behavior pointed at the existing tenant evidence drilldown
|
|
- keep empty-state behavior explicit and native
|
|
|
|
Do not:
|
|
|
|
- introduce a new read model or persistence layer
|
|
- widen the workspace-context route into a tenant-context route
|
|
- make remote calls during render
|
|
|
|
### 5. Run the final focused verification pack and formatting
|
|
|
|
Touch:
|
|
|
|
- `apps/platform/tests/Feature/InventoryItemDependenciesTest.php`
|
|
- `apps/platform/tests/Feature/Rbac/TenantRequiredPermissionsTrustedStateTest.php`
|
|
- `apps/platform/tests/Feature/Evidence/EvidenceOverviewPageTest.php`
|
|
- `apps/platform/tests/Feature/Filament/EvidenceOverviewDerivedStateMemoizationTest.php`
|
|
- `apps/platform/tests/Feature/Filament/InventoryItemDependencyEdgesTableTest.php`
|
|
- `apps/platform/tests/Feature/Filament/TenantRequiredPermissionsPageTest.php`
|
|
- `apps/platform/tests/Feature/Guards/FilamentTableStandardsGuardTest.php` if newly applicable
|
|
|
|
Do:
|
|
|
|
- preserve current scope and authorization assertions
|
|
- replace GET-form assumptions with native Livewire or table-state assertions
|
|
- keep DB-only and no-Graph render guarantees
|
|
- keep unit tests for permission filtering and copy payload logic as domain-truth guards
|
|
- run the full focused Sail pack and `pint` only after the three story slices are complete
|
|
|
|
### 6. Stop on scope boundaries
|
|
|
|
If implementation touches any of the following, stop and defer instead of half-solving them here:
|
|
|
|
- shared detail micro-UI contract work
|
|
- monitoring page-state architecture
|
|
- global context shell behavior
|
|
- verification report viewer families
|
|
- diff, settings, restore preview, or enterprise-detail layout families
|
|
|
|
### 7. Record the release close-out in this quickstart
|
|
|
|
When implementation is complete, update this file with a short close-out note that records:
|
|
|
|
- which surfaces were actually cleaned
|
|
- whether any optional same-class extra hit was included or explicitly rejected
|
|
- which related themes stayed out of scope and were deferred
|
|
- which follow-up specs or artifacts were touched
|
|
|
|
## Suggested Test Pack
|
|
|
|
Run the minimum targeted verification pack through Sail.
|
|
|
|
```bash
|
|
export PATH="/bin:/usr/bin:/usr/local/bin:$PATH"
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/InventoryItemDependenciesTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryItemDependencyEdgesTableTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Rbac/TenantRequiredPermissionsTrustedStateTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantRequiredPermissionsPageTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Evidence/EvidenceOverviewPageTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/EvidenceOverviewDerivedStateMemoizationTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Guards/FilamentTableStandardsGuardTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/TenantRequiredPermissionsFilteringTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/TenantRequiredPermissionsCopyPayloadTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/TenantRequiredPermissionsOverallStatusTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/TenantRequiredPermissionsFeatureImpactTest.php
|
|
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/TenantRequiredPermissionsFreshnessTest.php
|
|
cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent
|
|
```
|
|
|
|
## Manual Smoke Checklist
|
|
|
|
1. Open an inventory item detail page and confirm dependency direction and relationship changes happen without a foreign apply-and-reload workflow.
|
|
2. Open tenant required permissions and confirm the filter surface feels native, while summary counts, guidance, and copy flows remain correct.
|
|
3. Open evidence overview and confirm the table behaves like a native Filament report with clear empty state and row inspect behavior.
|
|
4. Confirm no cleaned surface leaks scope through query manipulation.
|
|
5. Confirm no implementation expanded into monitoring-state, shell, or shared micro-UI redesign work.
|
|
|
|
## Deployment Notes
|
|
|
|
- No migration is expected.
|
|
- No provider registration change is expected.
|
|
- No new assets are expected.
|
|
- Existing `cd apps/platform && php artisan filament:assets` deployment handling remains sufficient and unchanged. |