사이클 루프¶
최근 개정: 2026-04-29.
cycle/ 디렉토리는 pccx-lab 을 사용자 개입 없이 반복적으로 개선하는
4역할 루프 의 아티팩트 저장소이다.
루프는 Judge → Research → Plan → Implement 순으로 한 라운드를 완성하고,
다음 라운드에서 Judge 가 이전 구현물을 재평가한다.
아티팩트 경로, 진행 표, 현재 상태는 이 페이지에 집약한다.
루프 드라이버 규격: cycle/driver.md.
라운드 요약 인덱스: cycle/ROUNDS.md.
루프 구조¶
루프는 네 역할로 구성된다. 각 역할은 독립된 에이전트 프롬프트 파일을
갖는다 (cycle/agents/ 아래).
Judge (agents/judge.md) 는 pccx-lab 의 현재 상태를 여러 상용 RTL 시뮬레이터·
GPU 프로파일러·FPGA 벤더 합성 도구와 객관적으로 비교해 점수를 매긴다.
UI, ISA 검증, API 무결성, UVM 커버리지, FPGA/ASIC 검증, 문서 등 주요
차원을 독립적으로 채점하고, 결과를 round_NNN/judge_report.md 에 기록한다.
라운드 N+1 의 Judge 는 이전 judge_report_N 과 implemented_N 을 함께
받으므로 절대 품질과 라운드 대비 진척도를 동시에 평가한다.
Research (agents/research.md) 는 arxiv, IEEE, ACM, 공식 벤더 문서를 조사해
Judge 가 지적한 약점에 대한 선행 기술·표준 인용을 수집한다.
모든 주장에 canonical 인용을 첨부해 round_NNN/research_findings.md 로
출력한다.
Planner (agents/planner.md) 는 Judge 와 Research 결과를 읽고 구체적인
구현 티켓으로 변환한다. 각 티켓에는 대상 파일 경로, 패치 방향, 수용 기준이
명시된다. 출력: round_NNN/roadmap.md.
Implementer 는 세 전문화 프롬프트로 분기된다
(implementer_ui.md, implementer_core.md, implementer_bridge.md).
roadmap.md 의 상위 티켓을 격리된 worktree 에서 병렬로 실행하고,
diff 와 테스트 결과를 round_NNN/implemented_T*.md 에 기록한다.
빌드·테스트 통과 없이 커밋하지 않는다.
라운드 아티팩트¶
각 라운드 디렉토리(cycle/round_NNN/)는 아래 파일 세트를 포함한다.
파일 |
생성 역할 |
내용 |
|---|---|---|
|
Judge |
차원별 채점 + 전체 등급 + Top-5 이슈 |
|
Research |
이슈별 canonical 인용 + SOTA 요약 |
|
Planner |
T-1/T-2/T-3 티켓 (파일 경로, 패치, 수용 기준) |
|
Implementer |
T-1 diff + 테스트 결과 |
|
Implementer |
T-2 diff + 테스트 결과 |
|
Implementer |
T-3 diff + 테스트 결과 |
라운드 완료 후 cycle/ROUNDS.md 에 한 줄 요약이 추가된다.
cycle/STATE.json 이 round 와 phase 를 갱신하고 다음 wake-up 이 예약된다.
진행 표¶
아래 표는 cycle/ROUNDS.md 를 바탕으로 라운드 1–6 의 Judge 등급과
핵심 산출물을 정리한 것이다.
라운드 |
Judge 등급 |
핵심 산출물 |
|---|---|---|
001 |
C- |
T-1 WaveformViewer 실제 VCD/.pccx 수집, T-2 커버리지 병합, T-3 flame-graph bottleneck; 하드코딩 데이터 5개 갭 → 실제 IPC 티켓 3개 모두 착륙 |
002 |
C |
T-1/T-2 core+UI 등록 및 이름 수정, T-3 docs 접근성; 구현 에이전트 API 한도 도달 → 메인 스레드 완결 |
003 |
C+ |
T-1 synthetic_fallback 제거 + resolveResource 수정, T-2 ELK 자동 레이아웃, T-3 두 번째 트레이스 실제 파일 피커; 가짜 수정 6개 적발 |
004 |
B- |
T-1 가짜 텔레메트리 제거(Math.random 20→9), T-2 Vivado 파서, T-3 flat-buf v2; 테스트 39→51 |
005 |
B |
T-1 SynthStatusCard, T-2 Monaco+Monarch 구문 강조, T-3 useLiveWindow 훅; 4라운드 Monaco 기술 부채 상환 |
006 |
B- |
T-1 step_to_cycle + useCycleCursor, T-2 Roofline 2.0 + resizable-panels v4 수정, T-3 스케줄러/가시성 훅 + 패널 재배선; 사이클 단위 UI + 60 fps 목표 |
라운드 7 은 cycle/STATE.json 기준 Judge 단계 대기 중이다
(2026-04-29 현재).
현재 상태¶
cycle/STATE.json 의 현재 내용:
{
"round": 7,
"phase": "judge",
"r1_grade": "C-",
"r2_grade": "C",
"r3_grade": "C+",
"r4_grade": "B-",
"r5_grade": "B",
"r6_grade": "B-",
"max_rounds": 50,
"heartbeat_every": 10
}
round: 7, phase: "judge" 는 라운드 6 구현이 완료되었고
다음 Judge 평가가 아직 실행되지 않은 상태임을 나타낸다.
정지 조건 (cycle/driver.md 참고):
cycle/HALT파일이 존재하면 루프는 즉시 정지한다. 셸에서touch cycle/HALT로 활성화한다.max_rounds: 50에 도달하면 사용자 확인 후 재개한다.연속 2라운드에서 구현 커밋이 없으면 루프는 자동 정지한다 — 무한 재시도하지 않는다.
동일 Top-1 이슈가 3라운드 연속 반복되면 루프를 정지하고 에스컬레이션한다.
매 10번째 라운드(10, 20, 30, 40)에 직전 10라운드 등급 추세와 착륙 티켓을 요약하는 하트비트가 전송된다.
인용¶
@misc{pccx_self_evolution_2026,
title = {pccx-lab cyclic self-evolution loop: 4-role iterative design refinement},
author = {Kim, Hyunwoo},
year = {2026},
howpublished = {\url{https://pccxai.github.io/pccx/ko/docs/Lab/self-evolution.html}},
note = {Part of pccx: \url{https://pccxai.github.io/pccx/}}
}