TenantAtlas/specs/196-hard-filament-nativity-cleanup/quickstart.md
ahmido a2a42d4e5f Spec 196: finalize hard Filament nativity cleanup artifacts (#231)
## 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
2026-04-13 10:26:27 +00:00

7.7 KiB

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.

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.