<!-- task=m-control-plane-jenkins-menu-ia-code-sync/01_definition_guardrails plan=0 tag=JENKINS_IA_DEF -->

# Code Review Reference - JENKINS_IA_DEF

> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.**
> The task is NOT complete until every implementation-owned section below is filled in.
> Complete the `구현 체크리스트`; the final checklist item is mandatory before saving.
> Fill implementation-owned sections, then stop with active files in place and report ready for review.
> If implementation is blocked by a selected Milestone `구현 잠금 > 결정 필요` item, fill `사용자 리뷰 요청` with linked evidence and stop with active files in place; code-review decides whether to write `USER_REVIEW.md`. Environment/secret/service blockers, generic scope changes, repeated failures, and evidence gaps that a follow-up agent can close are normal follow-up issues, not user-review blockers by themselves.
> Do not ask the user directly, present choices in chat, or call `request_user_input` during implementation; record only Milestone lock decisions in `사용자 리뷰 요청` and stop for code-review.
> Finalization (`코드리뷰 결과`, log rename, `complete.log`, archive moves, `코드리뷰 전용 체크리스트`) is review-agent-only, even after compaction/resume.
> Follow the ownership table at the bottom of this file for which sections you own.

## 개요

date=2026-07-03
task=m-control-plane-jenkins-menu-ia-code-sync/01_definition_guardrails, plan=0, tag=JENKINS_IA_DEF

## Roadmap Targets

- Milestone: `agent-roadmap/phase/control-plane-product-surface/milestones/control-plane-jenkins-menu-ia-code-sync.md`
- Task ids:
  - `definition-guardrail`: 화면정의서에 적용 가능한 Jenkins 메뉴 기준과 제외/후순위 메뉴가 명확히 남아 있고, 후속 코드 검증 label이 고정되어 있다.
- Completion mode: check-on-pass

## 이 파일을 읽는 리뷰 에이전트에게

> **[REVIEW AGENT ONLY]** 아래 종결 절차는 코드리뷰 에이전트 전용이다. 구현 에이전트는 이 섹션을 실행하지 않는다.

각 항목의 구현을 실제 소스 파일과 대조하고, `검증 결과` 섹션의 출력이 코드와 일치하는지 확인하세요.

1. 판정을 append한다.
2. `CODE_REVIEW-cloud-G07.md` -> `code_review_cloud_G07_N.log`, `PLAN-cloud-G07.md` -> `plan_cloud_G07_M.log`로 아카이브한다.
3. PASS이면 `complete.log` 작성 후 active task 디렉터리를 `agent-task/archive/YYYY/MM/m-control-plane-jenkins-menu-ia-code-sync/01_definition_guardrails/`로 이동한다.
4. 적용 가능한 `코드리뷰 전용 체크리스트` 항목을 최종 `.log` 위치에서 체크한 뒤 보고한다.

---

## 구현 항목별 완료 여부

| 항목 | 완료 여부 |
|------|---------|
| [JENKINS_IA_DEF-1] Tighten Agent UI Status And Baseline | [x] |
| [JENKINS_IA_DEF-2] Define Testable IA Primitives | [x] |

## 구현 체크리스트

- [x] [JENKINS_IA_DEF-1] `agent-ui/definition`의 Jenkins reference 기준을 rough alignment에서 structural acceptance로 강화하고, 현재 구현 status를 후속 구현 대기 상태로 정정한다.
- [x] [JENKINS_IA_DEF-2] 후속 구현자가 테스트로 검증할 Jenkins IA primitives와 Jenkins menu model primitives를 정의서에 명시한다.
- [x] `git diff --check`와 정의서 검색 검증을 실행한다.
- [x] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

## 코드리뷰 전용 체크리스트

> **[REVIEW AGENT ONLY]** 이 체크리스트는 코드리뷰 에이전트만 사용한다.
> 구현 에이전트는 이 섹션을 수정하거나 체크하지 않는다.

- [x] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다.
- [x] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다.
- [x] active `CODE_REVIEW-*-G??.md`를 `code_review_cloud_G07_N.log`로 아카이브한다.
- [x] active `PLAN-*-G??.md`를 `plan_cloud_G07_M.log`로 아카이브한다.
- [x] `.gitignore`의 Agent-Ops 관리 block이 `agent-task/**/*.md`와 `agent-task/**/*.log`를 unignore하고 `agent-roadmap/current.md`를 ignore하는지 확인한다.
- [ ] PASS이면 `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준으로 `complete.log`를 작성하고 active `.md` 파일을 남기지 않는다.
- [ ] PASS이면 active task 디렉터리 `agent-task/m-control-plane-jenkins-menu-ia-code-sync/01_definition_guardrails/`를 `agent-task/archive/YYYY/MM/m-control-plane-jenkins-menu-ia-code-sync/01_definition_guardrails/`로 이동하고 최종 archive 경로에서 이 체크리스트를 갱신한다.
- [ ] PASS split 작업이면 이동 후 빈 active parent `agent-task/m-control-plane-jenkins-menu-ia-code-sync/`를 제거하거나, 남은 sibling/file이 있어 유지했다고 확인한다.
- [x] WARN/FAIL이고 user-review gate가 트리거되지 않았으면 다음 active `PLAN-local-G03.md`와 `CODE_REVIEW-local-G03.md`를 작성하고 `complete.log`를 작성하지 않는다.

## 계획 대비 변경 사항

- 계획 `수정 파일 요약`은 index-level 3개 파일(`index.md`, `views/index.md`, `components/index.md`)을 명시했고, JENKINS_IA_DEF-2 체크리스트가 `components/console-rail/index.md`를 추가로 지정했다. 계획대로 이 4개 파일만 수정했다.
- 계획의 Before/After 예시 라인 번호(`57`, `64`)는 이후 커밋으로 파일이 이미 갱신되어 현재 파일과 일치하지 않았다. 예시 라인 번호가 아니라 계획의 의도(러프 정렬 → structural gate, `구현됨` → `변경 필요`)를 기준으로 실제 현재 문구를 대상으로 수정했다.
- 개별 sub-doc(`components/console-shell/index.md`, `components/section-surface/index.md`, `views/executions/index.md`, `views/settings/index.md`, `views/overview/index.md`)은 계획 파일 범위에 없어 status를 바꾸지 않았다. 이들 문서에는 아직 `future 후보`/`러프 참조`/`후속 조정 후보다` 문구와 component-level `구현됨` status가 남아 있다. index-level gate가 상위 기준이 되므로 상충은 아니지만, sub-doc status 정합은 후속 작업(02/03) 또는 별도 guardrail 후속 항목으로 남긴다. 요청 범위 초과를 피하려 이번에 확장하지 않았다.

## 주요 설계 결정

- `agent-ui/definition/index.md`의 `Target Layout Status`에 `### Jenkins IA gate` 표를 신설해 gate primitive(통합 header/breadcrumb/action, dashboard job table, run stage graph, node/manage 구조, global/context menu 모델)와 각 확인 대상·충족 기준을 고정했다. 이 표가 후속 `구현됨` 승격의 단일 acceptance 기준이 된다.
- Jenkins 정렬 대상 view/component status는 기존 `구현됨`에서 `변경 필요`로 정정했다. Jenkins parity 대상이 아닌 `agent`와 계획에서 제외된 `artifacts` view는 기존 status를 유지했다.
- JENKINS_IA_DEF-2는 후속 widget 테스트의 고정 label 기준을 명시하는 것이 목적이라, `views/index.md`에 `Required Visible Primitives` 표(view별 required primitive + global/context menu target), `components/index.md`에 `Jenkins IA Required Primitives` 표(component별 widget assertion target + menu target)를 추가했다. label(`New Item`, `Build History`, `Nodes`, `Artifacts`, `Manage OTO`, `Status`, `Console Output`, `Pipeline Overview`, `Stage Graph`)은 02/03 테스트 assertion 문자열로 그대로 사용할 수 있게 backtick으로 고정했다.
- 러프 표현(`Rough Alignment` 컬럼, `Rough Layout Rules` 섹션, executions `Stage graph는 후속 조정 후보`)은 `Structural Acceptance`/`Structural Layout Gate`/gate 필수 항목으로 치환해 loose 문구가 남지 않게 했다.

## 사용자 리뷰 요청

_기본값은 `없음`이다. 구현 중 새 결정이 필요해 보여도 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 이 섹션은 선택된 Milestone `구현 잠금 > 결정 필요` 항목이 실구현을 차단할 때만 채운다. 외부 환경/secret/서비스 준비, 검증 증거 공백, 반복 실패, 일반 범위 조정은 사용자 리뷰 요청이 아니며 `검증 결과`, `계획 대비 변경 사항`, 또는 code-review의 일반 follow-up plan으로 처리한다._

- 상태: 없음
- 사유 유형: 없음
- 연결 대상: 없음
- 결정 필요: 없음
- 차단 근거: 없음
- 실행한 검증/명령: 없음
- 자동 후속 불가 이유: 없음
- 재개 조건: 없음

## 리뷰어를 위한 체크포인트

- Jenkins IA gate가 `rough alignment`보다 강한 구조적 acceptance로 바뀌었는지 확인한다.
- 현재 구현을 무조건 `구현됨`으로 선언하는 문구가 남지 않았는지 확인한다.
- 02/03 후속 작업이 테스트할 primitive와 Jenkins menu model 이름이 정의서에 남았는지 확인한다.

## 검증 결과

_구현 에이전트가 각 중간 검증 및 최종 검증 명령 실행 후 출력을 여기에 붙여 넣는다._

환경: local `/config/workspace/oto`, branch `master`. 문서-only 변경이라 Flutter analyze/test는 이 단계 대상이 아니며 02/03에서 수행한다.

### JENKINS_IA_DEF-1 중간 검증
```bash
$ git diff --check
(no output; exit=0)

$ rg --sort path -n "Jenkins IA gate|통합 header|breadcrumb|stage graph|Manage (Jenkins|OTO)" agent-ui/definition
# exit=0. structural gate 문구 출력됨(발췌):
agent-ui/definition/index.md:45:이 화면정의서는 pixel parity가 아니라 정보 구조를 Jenkins 최신 UI 기준으로 맞추는 structural gate로 참조한다. `러프 정렬`은 충족 기준이 아니며, 아래 `Jenkins IA gate` 항목이 테스트로 확인될 때만 대상 view/component를 `구현됨`으로 둔다.
agent-ui/definition/index.md:61:### Jenkins IA gate
agent-ui/definition/index.md:67:| 통합 header/breadcrumb/action | `console-shell` | Jenkins `2.516+` 통합 header, breadcrumb stack, action 영역이 shell/header에 존재한다. |
agent-ui/definition/index.md:69:| run stage graph | `executions` + `execution-action-toolbar` | Pipeline Graph View 스타일 Pipeline Overview / Stage Graph가 run detail primary region에 존재한다. |
agent-ui/definition/index.md:70:| node/manage 구조 | `runners`, `settings` | Nodes/Agents 목록과 Manage OTO(Manage Jenkins 대응) 관리 category 구조가 존재한다. |
agent-ui/definition/views/index.md:123:- Jenkins `2.516+`의 통합 header/breadcrumb/action 모델은 OTO view header와 action 영역의 필수 구조이며, 러프 참조가 아니라 Jenkins IA gate 항목이다.
agent-ui/definition/views/index.md:128:- Jenkins IA gate primitive가 코드와 widget 테스트로 확인된 대상 view만 status를 `구현됨`으로 승격한다. 미충족 상태에서는 `변경 필요`로 둔다.
# ... (전체 매치 다수: index/views/components index-level + 기존 sub-doc breadcrumb 언급)

$ rg --sort path -n "stage graph는 후속 조정 후보|rail은 유지" agent-ui/definition
# no matches; exit=1  (legacy loose 문구 제거 확인)
```

### JENKINS_IA_DEF-2 중간 검증
```bash
$ rg --sort path -n "New Item|Build History|Manage OTO|Status|Console Output|Pipeline Overview|Stage Graph|Nodes|Artifacts" agent-ui/definition
# exit=0. required primitive per-primitive 매치 라인 수:
#   New Item=15, Build History=19, Manage OTO=12, Status=38, Console Output=11,
#   Pipeline Overview=11, Stage Graph=8, Nodes=15, Artifacts=22  (총 106 라인, 각 ≥1 충족)
# 신규 추가된 고정 label 표(발췌):
agent-ui/definition/views/index.md:33:| `overview` | 통합 header, breadcrumb, `Dashboard` root | `Dashboard` | 없음 |
agent-ui/definition/components/index.md:61:| Navigation and app context | `console-shell`, `console-rail`, `section-surface` | 통합 header, breadcrumb, global menu(`New Item`, `Build History`, `Nodes`, `Artifacts`, `Manage OTO`), job/run context menu 분리 | Global: `New Item`, `Build History`, `Nodes`, `Artifacts`, `Manage OTO` |
```

### 최종 검증
```bash
$ git diff --check
(no output; exit=0)

$ rg --sort path -n "Jenkins IA gate|New Item|Build History|Manage (Jenkins|OTO)|Status|Console Output|Pipeline Overview|Stage Graph|Nodes|Artifacts" agent-ui/definition
# exit=0. 총 123 매치 라인, 28개 파일에서 매치. 모든 required primitive와 `Jenkins IA gate`가 정의서에 존재함을 확인.
```

---

> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section: completion table, implementation checklist, changes from plan, design decisions, and verification output?**
> If anything is blank, go back and fill it in before saving this file.
> Leave review-agent-only sections unchanged.

## 코드리뷰 결과

- 종합 판정: FAIL
- 차원별 평가:
  - correctness: Fail
  - completeness: Fail
  - test coverage: Fail
  - API contract: Fail
  - code quality: Pass
  - implementation deviation: Warn
  - verification trust: Fail
- 발견된 문제:
  - Required: `agent-ui/definition/components/console-rail/index.md:4`의 frontmatter `status: 변경 필요`는 `agent-ops/rules/common/rules-agent-ui.md:72`에서 허용한 status 값(`구현됨`, `계획`, `가정`, `불명확`)에 없다. 같은 비허용 상태값이 `agent-ui/definition/views/index.md:19`, `agent-ui/definition/components/index.md:30`, `agent-ui/definition/index.md:57` 등 index-level 상태 설명에도 반복되어 agent-ui source of truth가 스키마와 충돌한다. Jenkins IA gate 미충족 대상은 상태값을 `계획`으로 두고, “Jenkins IA gate 미충족/후속 구현 대기”는 description 또는 별도 gate 문구로 표현해야 한다.
- 다음 단계: user-review gate는 트리거하지 않는다. 후속 `PLAN-local-G03.md` / `CODE_REVIEW-local-G03.md`에서 비허용 `변경 필요` 상태 표현을 agent-ui 허용 status로 정리하고 deterministic 검색 검증을 추가한다.
