| ui_doc_type |
view_id |
status |
frame |
source_evidence |
regions |
| view |
runners |
구현됨 |
null |
| type |
path |
notes |
| code |
packages/flutter/oto_console/lib/src/oto_runners_surface.dart |
OtoRunnersSurface 구현 |
|
| type |
path |
notes |
| code |
apps/client/lib/src/app/oto_client_app.dart |
runner snapshot과 self-update action 연결 |
|
| type |
path |
notes |
| docs |
agent-roadmap/sdd/control-plane-product-surface/control-plane-security-audit-surface/SDD.md |
runner self-update는 write action 감사 후보 |
|
| type |
path |
notes |
| user |
null |
agent-ui 생성 요청 |
|
|
| runners.header |
| runners.state-panel |
| runners.runner-list |
| runners.self-update-form |
| runners.action-feedback |
|
Runners
View ID: runners
Frame:
Status: 구현됨
Source Evidence
| Type |
Path |
Notes |
| code |
packages/flutter/oto_console/lib/src/oto_runners_surface.dart |
OtoRunnersSurface 구현 |
| code |
apps/client/lib/src/app/oto_client_app.dart |
runner snapshot과 self-update action 연결 |
| docs |
agent-roadmap/sdd/control-plane-product-surface/control-plane-security-audit-surface/SDD.md |
runner self-update write action 경계 |
| user |
없음 |
agent-ui 생성 요청 |
Purpose
등록된 runner 상태를 보고, runner별 self-update 요청을 제출하며, action 결과를 확인한다.
Primary Users
- operator/admin
- local developer
Primary Tasks
- runner registry 상태 확인
- active job/execution 확인
- self-update version과 HTTPS download URL 제출
- success/deferred/failed 결과 확인
Information Priority
- runner id와 status
- active job/execution context
- self-update form과 action feedback
Jenkins Reference Alignment
- Jenkins Nodes and Clouds/agent list를 OTO runner registry의 러프 참조로 삼는다.
- row는 agent/node처럼 id, alias, status, offline/online message, 현재 job/execution context를 우선 보여준다.
- Jenkins changelog의 "temporarily offline" 같은 agent 상태 혼동 방지 흐름을 참고해, runner 상태 label과 message는 분리해서 읽히게 유지한다.
- self-update는 Jenkins core plugin action과 동일시하지 않고 OTO 고유 write action으로 둔다. 다만 결과 feedback은 Jenkins 관리 action처럼 즉시 확인 가능해야 한다.
Target Layout Delta
- runner list는 Jenkins Nodes/Agents처럼 status, executor/work context, message를 먼저 스캔하는 dense row layout으로 재정렬한다.
- self-update form은 row 하단에 항상 펼쳐진 form이 아니라 관리 action 영역으로 묶는 방향을 목표로 둔다.
- empty/error state는 Jenkins monitor/banner 흐름처럼 다음 확인 지점을 드러내는 상태 panel로 정리한다.
- 현재 코드는 dense runner row와 관리 action 영역 반영이 완료되어
구현됨 상태다.
Regions
| Region ID |
Purpose |
Component |
Priority |
Notes |
runners.header |
화면 제목 |
없음 |
high |
Runners |
runners.state-panel |
loading/empty/error 표현 |
state-panel |
high |
snapshot state 기준 |
runners.runner-list |
runner row 목록 |
record-list |
high |
runner id, alias, message, current job/execution |
runners.self-update-form |
runner self-update draft 입력 |
runner-self-update-form |
high |
version, HTTPS download URL |
runners.action-feedback |
self-update 결과 표시 |
action-feedback |
medium |
success/deferred/failed |
Actions
| Action ID |
Trigger |
Result |
Guard |
runners.self-update |
Update button |
runner self-update draft submit |
version 값, HTTPS URL, handler 존재, not submitting |
States
- loading: 중앙 progress indicator.
- empty:
No runners connected state panel.
- error:
Error loading runners state panel과 snapshot error message.
- permission-denied: 계획
authorization-state component에서 operator/admin 권한 실패를 display-safe message로 표현한다.
Planned Extensions
authorization-state: self-update action의 허용/거부, disabled/error 상태.
audit-action-summary: self-update action의 actor/action/target/outcome/timestamp/reason metadata 요약.
Open Questions
Decision History
- 2026-06-24: runner list와 self-update form을 주요 region으로 정의했다.