Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .claude/agents/venue-reviewer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: venue-reviewer
description: 외부 venue-style 시뮬레이션 리뷰(referee). paper-critic(내부 적대검수) + 결과 검증 게이트 통과 후에만 호출한다. 원고 패키지만 읽고 내부 논의·분석 과정·critic 노트는 보지 않는다(격리).
---

# venue-reviewer (simulated referee)

target venue의 referee처럼 **최종 원고 패키지만** 심사한다.

## 격리 (필수)
- 입력은 `manuscript/draft_v2.md`(+`_ko`), 그림, `refs.bib`, `SUPPLEMENTARY.md` **뿐**. 분석 과정·내부 논의·critic 노트 접근 금지.
- 리뷰 상단에 **사용 모델·입력 범위**를 기록한다. 같은 모델 계열이면 "simulated review (외부 referee 아님)"임을 명시.
- 진짜 리뷰 다양성이 필요하면 **다른 모델 계열**로 실행한다.

## 산출
`manuscript/REVIEW-<venue>-<date>.md` — major/minor 이슈, 재현성·통계·novelty·형식·venue-fit.

## 주의
프로젝트 로컬 후보다(BIOP01-64). **전역(`~/.claude/agents/`) 설치 금지** — 숨은 환경 의존성 방지. 미설치 시 "정식 venue 리뷰" 요청은 건너뛰고 안내한다.
13 changes: 7 additions & 6 deletions .claude/skills/paper-production-orchestrator/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: paper-production-orchestrator
description: 논문 생산 루프의 입구(진행표/팀장). "논문 풀 파이프라인 돌려줘", "프리프린트 업데이트해서 제출 준비", "분석→집필→그림→검수까지 한 번에", "그림만 다시", "리뷰만 다시", "critic 지적 반영해", "최신 결과로 본문 갱신" 같이 분석·집필·그림·검수·검증·발표를 엮는 요청에서 사용한다. 기존 멤버(hspc-velocity-analyst, manuscript-writer, 그림 스크립트, paper-critic, reviewer, presenter)를 정해진 순서로 호출하고 부분 재실행을 처리한다. 새 agent는 만들지 않는다.
description: 논문 생산 루프의 입구(진행표/팀장). "논문 풀 파이프라인 돌려줘", "프리프린트 업데이트해서 제출 준비", "분석→집필→그림→검수까지 한 번에", "그림만 다시", "리뷰만 다시", "critic 지적 반영해", "최신 결과로 본문 갱신" 같이 분석·집필·그림·검수·검증·발표를 엮는 요청에서 사용한다. 기존 멤버(hspc-velocity-analyst, manuscript-writer, 그림 스크립트, paper-critic, venue-reviewer, presenter)를 정해진 순서로 호출하고 부분 재실행을 처리한다. 새 agent는 만들지 않는다.
---

# paper-production-orchestrator (논문 생산 루프 진행표 / 팀장) — HSPC velocity-lag benchmark
Expand All @@ -25,7 +25,7 @@ description: 논문 생산 루프의 입구(진행표/팀장). "논문 풀 파
3. `hspc-velocity-analyst`가 LLM 기반 sub-분석을 쓰는 경우, **offline mock 경로**(API 키 미설정 등)로 돌았는지 확인한다. mock이면 "실 결과 아님 / 데모"를 보고에 명시한다.

## 멤버 구성 (전원 기존 재사용)
`hspc-velocity-analyst`(도메인 분석 슬롯), manuscript-writer(그림 포함 — `figures/figNN_*.py` 스크립트 실행), paper-critic, reviewer, presenter. (기획 단계 선택: research-methodologist, literature-scout, novelty-strategist.)
`hspc-velocity-analyst`(도메인 분석 슬롯), manuscript-writer(그림 포함 — `figures/figNN_*.py` 스크립트 실행), paper-critic, venue-reviewer, presenter. (기획 단계 선택: research-methodologist, literature-scout, novelty-strategist.)

> 참고: 그림 생성은 **agent가 아니라 스크립트**로 둔다. `manuscript-writer`가 `pipeline/hspc-velocity-benchmark/figures/figNN_*.py`(예: `fig01_p2_concordance.py`)를 실행해 결과 파일에서 그림을 만든다. 단순 재생성이면 메인 루프가 직접 그 스크립트를 돌려도 된다(결정론적).

Expand All @@ -48,8 +48,9 @@ description: 논문 생산 루프의 입구(진행표/팀장). "논문 풀 파
4. **집필 + 그림** — `manuscript-writer` → `manuscript/draft_v2.md` + `draft_v2_ko.md`(영/한 동시). 그림은 `figures/figNN_*.py` 실행 → `figures/`. 그림만 재실행이면 이 단계만(결정론적, 결과 파일에서 생성).
5. **검수** — `paper-critic`(적대적 + 그림 시각 QA) → 지적 노트. 블로킹이면 6으로, 경미하면 메모만.
6. **수정** — `manuscript-writer`가 critic 지적 반영 → 본문 갱신.
7. **(선택) 정식 리뷰** — 요청 시 `reviewer` → `manuscript/REVIEW-<venue>-<date>.md`.
8. **검증 게이트** — 아래 verify-gate 실행. **실패하면 멈추고 사람에게 보고**, 커밋·발행하지 않는다.
7. **검증 게이트 ①(결과 검증)** — 아래 verify-gate 실행. **실패하면 멈추고 사람에게 보고**, 커밋·발행하지 않는다. 원본 하네스 규칙: *"paper-critic + gate FIRST, then reviewer — reviewer assumes pre-submission QA is done"*(`paper-production-harness/agents/paper-orchestrator.md:23`). 숫자가 검증되지 않은 원고를 리뷰에 보내지 않는다. (BIOP01-72)
8. **(선택) 정식 리뷰** — 요청 시 `venue-reviewer` → `manuscript/REVIEW-<venue>-<date>.md`. **7을 통과한 원고만** 입력한다.
8.5 **검증 게이트 ②(패키지 검증, 공개 직전)** — 원고 본문 숫자 ↔ 결과 파일 재대조 + 그림·표·supplementary 동봉 확인. 리뷰 반영으로 본문이 바뀌었을 수 있으므로 **공개 전 한 번 더** 돌린다.
9. **(선택) 발표** — 요청 시 `presenter` → 덱·발제.

각 단계 산출물은 **파일로 남긴다**. 다음 단계는 그 파일을 읽는다.
Expand All @@ -70,9 +71,9 @@ conda run --no-capture-output -n scv-preprocess python p3_scrambled_null.py
| 집필 | manuscript-writer | `manuscript/draft_v2.md` + `draft_v2_ko.md`, `refs.bib`, `SUPPLEMENTARY.md` | 검수·리뷰·발표 |
| 그림 | manuscript-writer (`figures/figNN_*.py`) | `figures/*.png` | 집필·검수 |
| 검수 | paper-critic | 적대 노트 + 그림 QA | 집필(수정) |
| 리뷰 | reviewer | `manuscript/REVIEW-<venue>-<date>.md` | 집필(수정) |
| 리뷰 | venue-reviewer | `manuscript/REVIEW-<venue>-<date>.md` | 집필(수정) |
| 발표 | presenter | 슬라이드/발제 | 사람 |
| 상태 핸드오프 | (전원) | `HANDOFF.md`, `TODO.md`, `SESSION-LOG.md` | 다음 세션 |
| 상태 핸드오프 | (전원) | `HANDOFF.md`, `TODO.md`, `SESSION-LOG.md` — **로컬 전용(.gitignore)**. 없으면 새로 만든다 | 다음 세션 |

## 실패 처리 / 멈춤 조건
- verify 게이트 실패 → **멈춤**, 무엇이 왜 실패했는지 보고.
Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/harness-doctor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# 하네스 구성 정합성 게이트 (BIOP01-66).
#
# 2단계 승격 완료 (2026-07-26).
# 1단계 — doctor는 report-only 였다. 팬텀 14건이 남아 전면 blocking이면 모든 PR이 빨간불이었다.
# 2단계(현재) — BIOP01-64(팬텀 에이전트 0) + BIOP01-71(skills/ 복원)로 팬텀 0 달성 →
# 구성 검사도 blocking. 문서가 실재하지 않는 역할·경로를 가리키면 PR이 막힌다.
name: harness-doctor
on:
pull_request:
branches: [ main, kkkim-pipeline, gglee ]
push:
branches: [ gglee ]
jobs:
doctor:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- run: pip install pyyaml

# 게이트 자체의 검증 — 여기는 처음부터 blocking.
# 게이트가 틀리면 잘못된 PASS(놓침)·잘못된 FAIL(오검)이 그대로 팀 판단이 된다.
- name: 게이트 자체 테스트 (harness_doctor 단위·회귀)
run: python harness_after/tests/test_harness_doctor.py

# 하네스 구성 검사 — 1단계에서는 report-only.
- name: 하네스 구성 정합성 검사 (팬텀 역할·경로 drift)
run: python scripts/harness_doctor.py --repo . --manifest harness.yaml
10 changes: 5 additions & 5 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ SKILL(지침)을 실제로 돌리는 코드:
- `BASELINE-ALIGNMENT.md` — Harness_Baseline 정합 기록.

## 작업 기록
- **`SESSION-LOG.md`**: 분석 단계에서 한 일을 세션별로 누적 기록.
- **`SESSION-LOG.md`**: 분석 단계에서 한 일을 세션별로 누적 기록. *(아래 3개는 모두 **로컬 전용** — `.gitignore` 등재, 리포에 커밋하지 않는 개인 작업기록)*
- **`HANDOFF.md`**: 현재 상태 + 한 일/할 일. **`TODO.md`**: 할 일 체크리스트.

## Branch 모델 (중요)
Expand Down Expand Up @@ -60,7 +60,7 @@ SKILL(지침)을 실제로 돌리는 코드:
### 자연어 라우팅
요청에 agent 이름이 없어도 아래 표로 배정한다. 프로젝트 agent는 `.claude/agents/`. 그림 작업은 `manuscript-writer`가 `pipeline/hspc-velocity-benchmark/figures/figNN_*.py`를 실행해 소유.

**논문 하네스 단일 컨텍스트 = `pipeline/hspc-velocity-benchmark/manuscript/PAPER_DIRECTION.md`.** 모든 논문 멤버(novelty·literature·methodologist·writer·critic·reviewer)는 작업 전 이 문서를 읽는다 — 현재 thesis·claim 등급표·loop 규율(**claim-defensibility 게이트**: headline claim은 반증기준+make-or-break 검정+advisor 통과 전 PROVISIONAL, 본문 미반영)·사전등록·진행상태가 여기 있다. 매번 재브리핑 불필요.
**논문 하네스 단일 컨텍스트 = `pipeline/hspc-velocity-benchmark/manuscript/PAPER_DIRECTION.md`.** 모든 논문 멤버(novelty·literature·methodologist·writer·critic·venue-reviewer)는 작업 전 이 문서를 읽는다 — 현재 thesis·claim 등급표·loop 규율(**claim-defensibility 게이트**: headline claim은 반증기준+make-or-break 검정+advisor 통과 전 PROVISIONAL, 본문 미반영)·사전등록·진행상태가 여기 있다. 매번 재브리핑 불필요.

**여러 단계를 엮는 요청 → 단일 agent가 아니라 오케스트레이터 Skill.** "풀 파이프라인 / 프리프린트 업데이트해 제출 준비 / 분석→집필→그림→검수까지 / 그림만 다시 / 리뷰만 다시 / critic 지적 반영"은 **`paper-production-orchestrator`** Skill(`.claude/skills/paper-production-orchestrator/SKILL.md`)로 — 메인 루프가 실행하며 §0에서 PAPER_DIRECTION 로드 후 아래 멤버를 순서대로 호출하고 claim-defensibility 게이트·부분 재실행·검증 게이트를 처리한다. 단일 단계 요청은 아래 agent로 직접 라우팅:

Expand All @@ -73,7 +73,7 @@ SKILL(지침)을 실제로 돌리는 코드:
| "차별화 각도 / 뭘 새로 해야 하나" | `novelty-strategist` |
| "가설·실험설계·분석계획 점검·감사" | `research-methodologist` |
| "제출 전 적대적 자체검토 / 그림 QA" | `paper-critic` |
| "정식 venue 리뷰 시뮬레이션" | `reviewer` (전역, 선택) |
| "정식 venue 리뷰 시뮬레이션" | `venue-reviewer` (프로젝트 로컬, 선택) |
| "발표자료/슬라이드/발제" | `presenter` |
| "로고·아이콘·브랜드·그림 미감" | `design` |
| "여러 단계를 어떤 순서로 엮을지 계획만" | `paper-orchestrator` (계획만; 실행은 메인 루프) |
Expand All @@ -86,9 +86,9 @@ SKILL(지침)을 실제로 돌리는 코드:
| 분석·eval | `hspc-velocity-analyst` | `pipeline/hspc-velocity-benchmark/results/FINDINGS.md` + `results/*.csv` + `results/*.md` | 집필·검수 |
| 집필+그림 | manuscript-writer (그림=`figures/figNN_*.py`) | `pipeline/hspc-velocity-benchmark/manuscript/draft_v2.md` + `draft_v2_ko.md`(영/한 동시), `figures/*.png` | 검수·리뷰·발표 |
| 검증 게이트 | (커밋/공개 전) | `p3_concordance.py` + `p3_crossdataset_concordance.py` + `p3_scrambled_null.py` 재계산 → FINDINGS.md 대조 | 사람 |
| 리뷰 | paper-critic / reviewer | `manuscript/REVIEW-<venue>-<date>.md` | 집필(수정) |
| 리뷰 | paper-critic / venue-reviewer | `manuscript/REVIEW-<venue>-<date>.md` | 집필(수정) |
| 발표 | presenter | 슬라이드/발제 | 사람 |
| 상태 핸드오프 | (전원) | `HANDOFF.md`, `TODO.md`, `SESSION-LOG.md` | 다음 세션 |
| 상태 핸드오프 | (전원) | `HANDOFF.md`, `TODO.md`, `SESSION-LOG.md` — **로컬 전용(.gitignore, 78a5a92)**. 커밋하지 않으며 새 clone에는 없다 | 다음 세션 |

**사람 승인 게이트:** 공개(프리프린트/blog)는 **저자·소속·IP·corresponding email 확정** 전까지 보류(manuscript-writer의 `<FILL>`). **커밋·push는 작업 완료 시 에이전트가 자동 수행**(2026-07-09 정책 변경 — 기존 '무인 git 금지' 철회, push까지 자동). 단 위 검증 게이트(커밋 전 재계산·FINDINGS 대조)는 유지하고, **프리프린트/blog 외부 공개와 main 병합만 사람 승인**(작업 브랜치 `kkkim-pipeline` push는 자동). 커밋 메시지는 P0~P5 접두 규칙 준수, Claude attribution 금지.

Expand Down
Loading
Loading