Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 3m45s
Implemented the first version of review output resolve actions. Included a ReviewOutputResolveActionMapper, commands to seed browser fixtures, updated CustomerReviewWorkspace, EnvironmentReviewResource, UI enforcement, and related views. Also added extensive unit, feature, and browser tests, and updated the design coverage matrix.
5.2 KiB
5.2 KiB
Review Output Resolve Action Map: Spec 351
Status: preparation contract
Updated: 2026-06-03
Feature: specs/351-review-output-resolve-actions-v1/spec.md
This file records which candidate resolve actions are truly repo-backed today, where they come from, and what fallback the mapper must use when the execution surface is missing or unsafe.
Action Matrix
| Candidate action | Repo-backed today? | Current source | Capability / policy | Mutating? | Confirmation today? | Audit / OperationRun behavior |
Allowed UI contexts now | Fallback if unavailable |
|---|---|---|---|---|---|---|---|---|
| Open successor review | partial | existing Environment Review view route via EnvironmentReviewResource::environmentScopedUrl() when a target review is already known |
existing view policy |
no | n/a | no new audit / run | detail or workspace only when a concrete successor review target is known | Create next review or review/detail fallback |
| Create next review | yes | ViewEnvironmentReview::createNextReviewAction() -> EnvironmentReviewLifecycleService::createNextReview() |
Capabilities::ENVIRONMENT_REVIEW_MANAGE, EnvironmentReviewPolicy::createNextReview() |
yes | no current confirmation | audit: EnvironmentReviewSuccessorCreated; successor review creation reuses existing review composition OperationRun path |
detail today; workspace can reuse as page action | review/detail fallback |
| Refresh review | yes | ViewEnvironmentReview::refreshReviewAction() -> EnvironmentReviewService::refresh() |
Capabilities::ENVIRONMENT_REVIEW_MANAGE, EnvironmentReviewPolicy::refresh() |
yes | yes | audit: EnvironmentReviewRefreshed; review composition OperationRun path reused |
detail today; workspace can reuse as page action | Open evidence basis |
| Publish review | yes | ViewEnvironmentReview::publishReviewAction() -> EnvironmentReviewLifecycleService::publish() |
Capabilities::ENVIRONMENT_REVIEW_MANAGE, EnvironmentReviewPolicy::publish() |
yes | yes | audit: EnvironmentReviewPublished; no new run |
detail today; workspace can reuse as page action | open review / detail fallback |
| Open evidence basis | yes | existing Evidence Snapshot detail route from review surfaces | Capabilities::EVIDENCE_VIEW for link visibility |
no | n/a | none | workspace and detail today | open review / limitations fallback |
| Refresh evidence | yes, but outside review-output surfaces | ViewEvidenceSnapshot::refresh_evidence -> EvidenceSnapshotService::refresh() |
Capabilities::EVIDENCE_MANAGE |
yes | yes | evidence-owned audit/queue semantics | evidence detail only today | Open evidence basis |
| Open operation proof | yes | OperationRunLinks::tenantlessView() or scoped operation link |
current operation visibility | no | n/a | none | workspace and detail today when a run URL exists | review/detail fallback |
| Download internal review pack | yes | EnvironmentReviewResource::currentReviewPackDownloadUrlFor() |
Capabilities::REVIEW_PACK_VIEW |
no | n/a | current download audit path remains | workspace and detail today when pack is ready | review/detail fallback |
| Review section limitations | yes | current review detail URL | existing view policy |
no | n/a | none | workspace and detail today | review/detail fallback |
| Review PII / redaction state | yes as disclosure/navigation | current review detail URL and current output-guidance limitations | existing view policy |
no | n/a | none | workspace and detail today | review/detail fallback |
| Review output limitations | yes as disclosure/navigation | current review detail URL and current output-guidance limitations | existing view policy |
no | n/a | none | workspace and detail today | none |
Primary Ranking Rules For Spec 351
Use this order, but only when the action is truly safe and available on the current surface:
- Open successor review when a concrete successor review target is known.
- Create next review for blocked or limited published reviews.
- Refresh review for mutable blocked reviews.
- Publish review for ready mutable reviews.
- Open evidence basis when no stronger review lifecycle action is safely executable.
- Open operation proof or review/detail disclosure when the blocker is proof-owned or no execution path exists.
Hard Constraints
- Do not emit successor-review-open navigation unless a concrete target review ID is known.
- Do not emit executable actions that bypass existing confirmation, authorization, audit, or service-owned
OperationRunsemantics. - If a workspace viewer lacks the manage capability, downgrade executable review actions to truthful fallback navigation/disclosure.
- If
create_next_reviewis used as a dominant executable CTA, the implementation must add confirmation before reuse; otherwise it must degrade to truthful navigation/disclosure fallback. - Do not create a new generic action engine; reuse Filament page/record actions.
Deferred Actions
These are real or plausible adjacent actions, but they are outside the primary Spec 351 slice unless implementation proves they are needed without broadening scope:
- workspace-side
refresh_evidence - provider-readiness actions
- governance-inbox top recommendation reuse
- environment-dashboard resolve-action reuse