---
ui_doc_type: component
component_id: action-feedback
status: 구현됨
source_evidence:
  - type: code
    path: packages/flutter/oto_console/lib/src/oto_runners_surface.dart
    notes: "runner self-update result feedback"
  - type: code
    path: packages/flutter/oto_console/lib/src/oto_jobs_surface.dart
    notes: "job create result feedback"
  - type: code
    path: packages/flutter/oto_console/lib/src/oto_executions_surface.dart
    notes: "execution action result feedback"
  - type: code
    path: packages/flutter/oto_console/lib/src/oto_console_contract.dart
    notes: "OtoActionViewState 상태 모델"
---

# Action Feedback

Component ID: `action-feedback`

Status: `구현됨`

## Source Evidence

| Type | Path | Notes |
|------|------|-------|
| code | `packages/flutter/oto_console/lib/src/oto_runners_surface.dart` | runner self-update result feedback |
| code | `packages/flutter/oto_console/lib/src/oto_jobs_surface.dart` | job create result feedback |
| code | `packages/flutter/oto_console/lib/src/oto_executions_surface.dart` | execution action result feedback |
| code | `packages/flutter/oto_console/lib/src/oto_console_contract.dart` | `OtoActionViewState` |

## Purpose

write action 결과를 success, deferred, failed 상태로 짧게 표시한다.

## Used By

- `runners`: `runners.action-feedback`
- `pipelines`: `pipelines.action-feedback`
- `executions`: `executions.action-feedback`

## Anatomy

- tinted result container
- message text
- success/failure color
- deferred prefix where available

## Jenkins Reference Alignment

- Jenkins build abort/config save/plugin action 이후의 immediate feedback과 task UI 결과를 러프 참조로 삼는다.
- deferred 결과는 Jenkins background task처럼 사용자가 action accepted 상태를 이해할 수 있게 짧은 message로 표현한다.
- auth/permission 실패가 들어오면 Jenkins permission-denied 화면처럼 원인은 짧게, 민감 payload는 숨긴다.

## Target Layout Delta

- action feedback은 inline row message와 page/banner message 양쪽으로 쓸 수 있는 anatomy를 목표로 둔다.
- success/deferred/failed 외에 permission-denied를 `authorization-state`와 연결하는 방향을 둔다.
- 현재 surface별 feedback container는 목표 feedback pattern 반영이 완료되어 `구현됨` 상태다.

## Variants

- success
- deferred
- failed

## States

- succeeded
- deferred
- failed
- hidden when idle/submitting

## Rules

- 민감 error payload를 그대로 노출하지 않아야 한다.
- 권한 실패가 추가되면 forbidden/unauthorized 문구와 audit metadata 노출 기준을 SDD와 맞춘다.

## Decision History

- 2026-06-24: write action 결과 표시를 `action-feedback` component로 정의했다.
