TenantAtlas/specs/123-operations-auto-refresh/contracts/polling-contracts.yaml
ahmido 4db73e872e Spec 123: operations auto-refresh pass (#149)
## Summary
- add conditional polling support for the tenantless operation run viewer and tenant review pack card
- add focused Pest coverage for active vs terminal polling behavior and related review pack access regressions
- add the full Spec Kit artifacts for Spec 123, including spec, plan, research, data model, contracts, quickstart, tasks, and checklist

## Testing
- `vendor/bin/sail artisan test --compact tests/Feature/OpsUx/RunDetailPollingStopsOnTerminalTest.php tests/Feature/Operations/TenantlessOperationRunViewerTest.php tests/Feature/ReviewPack/ReviewPackWidgetTest.php tests/Feature/ReviewPack/ReviewPackGenerationTest.php tests/Feature/ReviewPack/ReviewPackRbacTest.php`
- `vendor/bin/sail bin pint --dirty --format agent`

## Notes
- Manual QA task `T014` in the Spec Kit checklist remains to be completed outside this automated flow.
- Livewire v4.0+ compliance is unchanged.
- No panel provider changes were made; provider registration remains in `bootstrap/providers.php`.
- No global-search behavior was changed.
- No destructive actions were added or modified.
- No new Filament assets were introduced; existing deployment expectations for `php artisan filament:assets` remain unchanged.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #149
2026-03-08 11:11:26 +00:00

56 lines
1.7 KiB
YAML

schema_version: 1
feature: operations-auto-refresh-pass
contracts:
- name: tenantless-operation-run-viewer
kind: ui-surface
surface_class: App\Filament\Pages\Operations\TenantlessOperationRunViewer
host_route: /admin/operations/{run}
method: GET
authorization:
scope: workspace-canonical monitoring view
unchanged_from_existing: true
polling:
source_of_truth: App\Support\OpsUx\RunDetailPolling::interval
active_states:
- queued
- running
terminal_states:
- succeeded
- partial
- failed
cadence:
- age_lt_10s: 1s
- age_lt_60s: 5s
- steady_state: 10s
suppression_conditions:
- browser_tab_hidden
- filament_actions_mounted
response_shape:
content_type: text/html
behavior: renders run detail and emits polling only while the run remains active
- name: tenant-review-pack-card
kind: ui-component
surface_class: App\Filament\Widgets\Tenant\TenantReviewPackCard
host_route: intentionally reusable tenant-scoped embedded widget surfaces (component-scoped; no standalone route is owned by the widget itself)
method: GET
authorization:
scope: tenant-scoped review pack surface
unchanged_from_existing: true
polling:
source_of_truth: latest ReviewPack status for current tenant
active_states:
- queued
- generating
terminal_states:
- ready
- failed
- expired
cadence:
- steady_state: 10s
suppression_conditions:
- no_review_pack_exists
response_shape:
content_type: text/html
behavior: renders widget state and emits polling only while review pack generation is active