TenantAtlas/specs/131-cross-resource-navigation/quickstart.md
2026-03-10 17:05:07 +01:00

5.3 KiB

Quickstart: Cross-Resource Navigation & Drill-Down Cohesion

Feature: 131-cross-resource-navigation | Date: 2026-03-10

Scope

This feature standardizes operator navigation across related governance, monitoring, inventory, and backup resources by:

  • defining one explicit navigation matrix for the highest-value resource relationships,
  • routing all run-related drill-downs through canonical operations destinations,
  • adding structured related-context sections to key detail pages,
  • adding limited, high-value row-level drill-down actions on list pages,
  • rendering missing or unauthorized relations as clear unavailable states.

Implementation order

  1. Create the shared relation-navigation support layer and encode the initial navigation matrix.
  2. Refactor in-scope run-related links to flow through the canonical OperationRunLinks helper consistently.
  3. Add structured related-context sections to Finding, BaselineSnapshot, PolicyVersion, BackupSet, and canonical operation-run detail pages.
  4. Add or normalize list-level related drill-down actions on findings, policy versions, backup sets, and operations-related surfaces.
  5. Align explicit back-link and context-preservation behavior on canonical operations pages with the existing operate-hub shell patterns.
  6. Add graceful unavailable-state rendering for missing, unresolved, and unauthorized relations.
  7. Add focused Pest unit and feature coverage for the shared navigation layer, canonical routing, UI visibility, and authorization-aware degradation.
  8. Run focused Sail-based tests.
  9. Run Pint on dirty files.

Reference files

  • app/Support/OperationRunLinks.php
  • routes/web.php
  • app/Filament/Pages/Monitoring/Operations.php
  • app/Filament/Pages/Operations/TenantlessOperationRunViewer.php
  • app/Filament/Resources/OperationRunResource.php
  • app/Filament/Resources/FindingResource.php
  • app/Filament/Resources/BaselineSnapshotResource.php
  • app/Filament/Resources/BaselineProfileResource.php
  • app/Filament/Resources/PolicyResource.php
  • app/Filament/Resources/PolicyVersionResource.php
  • app/Filament/Resources/BackupSetResource.php
  • app/Filament/Resources/BackupSetResource/RelationManagers/BackupItemsRelationManager.php
  • app/Policies/OperationRunPolicy.php
  • app/Policies/FindingPolicy.php
  • tests/Feature/Monitoring/OperationsCanonicalUrlsTest.php
  • tests/Feature/Operations/TenantlessOperationRunViewerTest.php
  • tests/Feature/Findings/FindingWorkflowViewActionsTest.php
  • tests/Feature/Findings/FindingWorkflowRowActionsTest.php
  • tests/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php
  • tests/Feature/Filament/PolicyVersionBaselineEvidenceVisibilityTest.php
  • tests/Feature/Filament/BackupSetUiEnforcementTest.php

Suggested new tests

  • tests/Feature/Findings/FindingRelatedNavigationTest.php
  • tests/Feature/Filament/BaselineSnapshotRelatedContextTest.php
  • tests/Feature/Filament/PolicyVersionRelatedNavigationTest.php
  • tests/Feature/Filament/BackupSetRelatedNavigationTest.php
  • tests/Feature/Monitoring/OperationsRelatedNavigationTest.php
  • tests/Feature/Rbac/CrossResourceNavigationAuthorizationTest.php
  • tests/Unit/Support/RelatedContextResolverTest.php
  • tests/Unit/Support/CanonicalNavigationContextTest.php

Suggested validation commands

vendor/bin/sail artisan test --compact tests/Feature/Monitoring/OperationsCanonicalUrlsTest.php
vendor/bin/sail artisan test --compact tests/Feature/Operations/TenantlessOperationRunViewerTest.php
vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingWorkflowViewActionsTest.php
vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingWorkflowRowActionsTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/PolicyVersionBaselineEvidenceVisibilityTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/BackupSetUiEnforcementTest.php
vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingRelatedNavigationTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/BaselineSnapshotRelatedContextTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/PolicyVersionRelatedNavigationTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/BackupSetRelatedNavigationTest.php
vendor/bin/sail artisan test --compact tests/Feature/Monitoring/OperationsRelatedNavigationTest.php
vendor/bin/sail artisan test --compact tests/Feature/Rbac/CrossResourceNavigationAuthorizationTest.php
vendor/bin/sail artisan test --compact tests/Unit/Support/RelatedContextResolverTest.php
vendor/bin/sail artisan test --compact tests/Unit/Support/CanonicalNavigationContextTest.php
vendor/bin/sail bin pint --dirty --format agent

Expected outcome

  • Findings, snapshots, policy versions, backup sets, and operation runs stop behaving like isolated records.
  • Canonical operations routes become the single authoritative destination for run-oriented drill-downs.
  • Related records appear through structured context sections and limited high-value actions instead of raw IDs and ad hoc links.
  • Missing or inaccessible relations degrade clearly without broken links or route leakage.
  • The shared navigation pattern is reusable for future artifacts without rewriting every resource page manually.