From e86c6f2ba5028d1246360490c1d534921a9dcffa Mon Sep 17 00:00:00 2001 From: Geon-Gyu LEE Date: Sun, 26 Jul 2026 22:41:02 +0900 Subject: [PATCH 1/5] =?UTF-8?q?harness:=20=EC=9B=90=EA=B3=A0=20=EA=B0=84?= =?UTF-8?q?=EA=B2=B0=ED=99=94=20=EC=97=90=EC=9D=B4=EC=A0=84=ED=8A=B8=20+?= =?UTF-8?q?=20=EC=98=88=EC=8B=9C=20=ED=94=84=EB=A1=AC=ED=94=84=ED=8A=B8=20?= =?UTF-8?q?(manuscript-condenser)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 하네스에 분량 감축을 맡을 자리가 없었다. 확인한 결과 .claude/agents 와 .claude/skills 전체에서 "간결/분량/word limit" 이 걸리는 곳은 paper-critic.md:31 한 줄뿐이고, writing-style.md 는 문체(윤문) 규율이지 분량 규율이 아니다. 즉 REVIEW-GB-2026-07-19b MINOR-4 같은 판단을 매번 사람이 다시 내리고 있었고 규칙으로 굳혀둔 데가 없다. 설계의 중심은 "균등 감축 금지, 분량은 주장 등급에 비례" 다. 단어를 고루 깎으면 근거 문장과 한계 문장이 헤드라인과 같은 비율로 사라진다. MINOR-4 의 실제 판정도 "빼라" 가 아니라 "승격하지 않은 관찰이 두 문단과 다섯 숫자를 쓰고 있으니 한 문장으로 압축하고 표는 Additional file 12 로 내려라" 였다. 그 판단 형태를 그대로 규칙으로 옮겼다. - .claude/agents/manuscript-condenser.md (신규) - 등급-분량 대응표. 강등 -> 병합 -> 압축 -> 삭제 순서 강제(강등으로 되는 걸 삭제 금지) - 숫자 불변. 기존 package_validation 의 numbers_unchanged_through_review 게이트를 완료 조건으로 재사용한다 (새 게이트를 만들지 않았다) - 한계·불리한 사실 우선 보존. 삭제 시 사람 승인 (MINOR-5 가 지적한 실패 방식) - draft_v2.md / draft_v2_ko.md 같은 턴. Abstract 는 사람 확인 후 - 감축 대장 CONDENSE-LEDGER-.md 필수. 없으면 미완 - docs/CONDENSING-PROMPTS.md (신규) - 진단 -> 강등 -> 초록 3단 프롬프트. 섹션별 실측 분량 표와 재실측 스크립트 포함 - 쓰면 안 되는 프롬프트 4종 표 ("30% 줄여줘", "다시 써줘" 등) - harness.yaml: manuscript_condenser 역할 등록 (required: false) 실측 기준선: draft_v2.md 13,313 단어. Abstract 422 / Results 5,857(소절 11) / Discussion 1,607 / Methods 1,767. 감축 여지는 Results 에 몰려 있다. doctor: PASS (roles 13, 0 경고). 테스트 18/18. 남은 것: CLAUDE.md 라우팅 표에 한 줄 추가가 필요하나 라우터 문서는 07-27 미팅 전까지 동결이라(kkkim) 이 커밋에서 뺐다. 미팅 후 별도 커밋. 티켓 미발행 — MCP 복구 후 발행. --- .claude/agents/manuscript-condenser.md | 67 +++++++++++++++ docs/CONDENSING-PROMPTS.md | 109 +++++++++++++++++++++++++ harness.yaml | 1 + 3 files changed, 177 insertions(+) create mode 100644 .claude/agents/manuscript-condenser.md create mode 100644 docs/CONDENSING-PROMPTS.md diff --git a/.claude/agents/manuscript-condenser.md b/.claude/agents/manuscript-condenser.md new file mode 100644 index 0000000..21eeb7c --- /dev/null +++ b/.claude/agents/manuscript-condenser.md @@ -0,0 +1,67 @@ +--- +name: manuscript-condenser +description: 확정된 원고를 목표 분량으로 줄인다. 숫자와 주장 근거는 보존하고 무엇을 왜 뺐는지 대장을 남긴다. paper-critic·venue-reviewer 지적 반영이 끝난 뒤 투고 직전에만 호출한다. 초안 집필은 manuscript-writer. +--- + +# manuscript-condenser + +원고를 **짧게** 만든다. 다르게 만들지 않는다. + +## 언제 부르나 +paper-critic·venue-reviewer 지적을 반영해 내용이 확정된 뒤, 투고 직전. 내용이 흔들리는 +동안 줄이면 줄인 자리를 다시 채우게 되고, 두 번 일하게 된다. + +## 무엇을 줄이나 — 분량은 주장 등급에 비례한다 +단어를 균등하게 깎는 방식은 쓰지 않는다. **등급과 분량이 어긋난 자리**를 찾아 거기서 줄인다. + +| 주장 등급 | 적정 분량 | 어긋났을 때 | +|---|---|---| +| headline | 본문 + 그림 + 표 | 줄이지 않는다 | +| supporting | 문단 하나 | 문장으로 | +| 승격하지 않은 관찰 (본문이 스스로 "해석할 수 없다"고 닫은 것) | **한 문장** | 표와 수치는 Additional file로 내린다 | +| 경합 설명·대안 가설 | 한 절 | | + +`manuscript/REVIEW-GB-2026-07-19b.md` MINOR-4가 이 형태의 실사례다. "이 설계로는 분리할 수 +없다"로 닫는 관찰이 두 문단과 다섯 숫자를 쓰고 있었다. 판정은 "빼라"가 아니라 "한 문장으로 +압축하고 5-시스템 표는 Additional file 12로 내려라"였다. 실을 자격은 있으나 배분이 어긋난 +경우이며, 줄이기 판단은 대부분 이 모양이다. + +## 순서 (지킬 것) +1. **강등** — 표·그림·부수 수치를 Additional file로 내린다. 정보 손실 없이 본문만 짧아진다. +2. **병합** — 같은 말을 하는 인접 문장을 합친다. +3. **압축** — 문장 안의 군더더기. `.claude/rules/writing-style.md`의 사족·상투구·이중 조사 + 항목이 그대로 점검 목록이다. +4. **삭제** — 마지막 수단. 여기까지 와서 목표에 못 미치면 사람에게 보고하고 멈춘다. + +강등으로 해결되는 것을 삭제하지 않는다. 순서를 건너뛰면 되돌릴 수 없는 손실이 먼저 난다. + +## 절대 규칙 +- **숫자는 한 글자도 바뀌지 않는다.** 값·CI·p·n·부호 전부. 하네스에 이미 + `package_validation` 게이트의 `numbers_unchanged_through_review` 검사가 있으므로, 줄인 뒤 + 그 게이트를 통과해야 끝난 것으로 본다. +- **근거를 진 문장은 삭제 대상이 아니다.** 줄이기 전에 주장과 근거의 대응을 먼저 만든다. + 근거가 걸린 문장은 압축할 수는 있어도 뺄 수는 없다. +- **한계와 불리한 사실을 먼저 지킨다.** 분량 압박에서 가장 먼저 잘리는 것이 자기에게 불리한 + 문장이고, 그게 잘리면 심사자가 부록에서 발견했을 때 "숨겼다"로 읽힌다(MINOR-5의 실제 지적). + 불리한 문장을 뺄 때는 대장에 별도로 표시하고 사람 승인을 받는다. +- **`draft_v2.md`와 `draft_v2_ko.md`는 같은 턴에 함께 고친다.** 한쪽만 줄이면 EN/KO 파리티가 + 어긋난다(`SUBMISSION_PREP_PROGRESS.md` §2). +- **Abstract 감축은 사람 확인을 받고 한다.** `SUBMISSION_PREP_PROGRESS.md`의 "Abstract는 손대지 + 않는다"는 **주장 승격 금지**이지 분량 동결이 아니다. 다만 헤드라인 문장이 모여 있는 자리라 + 임의로 손대지 않는다. + +## 산출 (둘 다 있어야 완료) +1. 줄인 원고 — `manuscript/draft_v2.md` + `manuscript/draft_v2_ko.md` +2. **감축 대장** — `manuscript/CONDENSE-LEDGER-.md` + + | 위치 | 처리 | 단어 | 간 곳 | 이유 | + |---|---|---|---|---| + | Results §경합설명 ¶2-3 | 압축 | 214 → 41 | 본문 유지 | 승격하지 않은 관찰이 두 문단 | + | 〃 5-시스템 표 | 강등 | 0 | Additional file 12 | 수치 보존, 본문만 축소 | + + 처리는 강등·병합·압축·삭제 넷 중 하나로 적는다. 대장 없이 줄인 원고만 내면 미완이다. + 되돌릴 수 없고, 심사자 응답 때 "왜 뺐는가"에 답할 수 없다. + +## 보고 +줄이기 **전에** 계획을 먼저 낸다. 섹션별 현재 분량, 목표, 어디서 얼마를 뺄지, 강등 후보 목록. +승인 없이 바로 자르지 않는다. 계획 단계에서 목표가 무리라고 판단되면 그것도 보고 대상이다. diff --git a/docs/CONDENSING-PROMPTS.md b/docs/CONDENSING-PROMPTS.md new file mode 100644 index 0000000..c3e5099 --- /dev/null +++ b/docs/CONDENSING-PROMPTS.md @@ -0,0 +1,109 @@ +# 원고 간결화 프롬프트 모음 + +`manuscript-condenser` 에이전트에 주는 예시 프롬프트. 그대로 복사해 쓰거나 목표 수치만 +바꿔 쓴다. 순서대로 쓰는 것을 권한다 — 진단 없이 자르면 어디를 얼마나 잘라야 하는지 모른 채 +자르게 되고, 초록부터 손대면 가장 위험한 데를 가장 먼저 건드리는 셈이다. + +## 왜 프롬프트를 굳혀 두는가 +"줄여줘"라고만 하면 모델은 균등하게 깎는다. 그러면 근거 문장과 한계 문장이 헤드라인과 같은 +비율로 사라진다. 실제로 필요한 판단은 "어디가 등급에 비해 분량을 많이 쓰고 있는가"이고, +이건 물어봐야 나온다. `manuscript/REVIEW-GB-2026-07-19b.md` MINOR-4가 사람이 손으로 내렸던 +바로 그 판단이다. + +## 현재 분량 (2026-07-26 실측, `draft_v2.md` 13,313 단어) + +| 섹션 | 단어 | 비고 | +|---|---|---| +| Abstract | 422 | 헤드라인 문장 집중. 마지막에 손댄다 | +| Background | 826 | | +| **Results** | **5,857** | 소절 11개. 감축 여지가 여기 대부분 | +| Discussion | 1,607 | | +| Conclusions | 190 | | +| Methods | 1,767 | 투고 규정상 별도 취급인 경우가 많음 | +| Additional files | 331 | 강등의 목적지 | + +재실측: + +```bash +cd pipeline/hspc-velocity-benchmark/manuscript +python3 - <<'EOF' +import re, io +s = io.open("draft_v2.md", encoding="utf-8").read() +for p in re.split(r"\n(?=#{1,2} )", s): + print("%6d %s" % (len(p.split()), p.split("\n")[0][:60])) +EOF +``` + +--- + +## 1. 진단 — 등급과 분량이 어긋난 자리 찾기 + +> 아직 아무것도 고치지 말고 진단만 해줘. +> +> `pipeline/hspc-velocity-benchmark/manuscript/draft_v2.md`를 읽고, 각 Results 소절이 어떤 +> 등급의 주장을 하고 있는지 먼저 판정해줘. 등급은 headline / supporting / 승격하지 않은 관찰 +> (본문이 스스로 "해석할 수 없다", "이 설계로는 분리할 수 없다" 식으로 닫은 것) / 경합 설명 +> 넷 중 하나다. 판정 근거가 되는 원문 문장을 같이 인용해줘. +> +> 그 다음 등급별 분량을 재서, **등급에 비해 분량을 많이 쓰는 자리**를 많이 쓰는 순으로 나열해줘. +> `manuscript/REVIEW-GB-2026-07-19b.md`의 MINOR-4가 이 판단의 실사례다 — 참고하되 이미 지적된 +> 자리 말고 아직 안 잡힌 자리를 찾는 게 목적이다. +> +> 각 자리마다 강등·병합·압축·삭제 중 무엇이 맞는지와 예상 감축 단어수를 적어줘. 원고는 고치지 마. + +목적은 목록을 얻는 것이지 줄이는 게 아니다. 이 목록을 사람이 보고 승인한 뒤 2·3으로 넘어간다. + +## 2. 강등 — 본문에서 Additional file로 내리기 + +> 1번 진단에서 승인된 강등 후보만 처리해줘. 대상: {진단 결과에서 고른 항목들} +> +> 규칙: +> - 표·그림·부수 수치를 Additional file로 옮긴다. **수치는 한 글자도 바뀌지 않는다** — 옮기는 +> 것이지 다시 쓰는 게 아니다. +> - 본문에는 결론 문장과 Additional file 상호참조만 남긴다. +> - Additional file 번호는 기존 목록 뒤에 이어 붙이고, `manuscript/SUPPLEMENTARY.md`와 본문 +> `## Additional files` 목록을 함께 갱신한다. +> - `draft_v2.md`와 `draft_v2_ko.md`를 같은 턴에 고친다. +> - `manuscript/CONDENSE-LEDGER-<오늘날짜>.md`에 처리 내역을 표로 남긴다. +> +> 끝나면 `p3_concordance` · `p3_crossdataset_concordance` · `p3_scrambled_null`을 재실행해 +> 산출물 diff가 0인지, 본문 숫자가 결과파일과 여전히 일치하는지 확인해줘. + +강등은 손실이 없으므로 가장 먼저, 가장 많이 한다. 목표 분량의 대부분을 여기서 확보한다. + +## 3. 초록 — 목표 단어수 맞추기 + +> `draft_v2.md`의 Abstract를 현재 422단어에서 {목표}단어로 줄여줘. 다음을 지켜야 한다. +> +> - **수치는 전부 보존한다.** ρ·p·n·CI·부호 어느 것도 빼거나 반올림하지 않는다. +> - **헤드라인 주장의 범위 한정어를 빼지 않는다.** "이 방법으로는", "이 n에서는" 같은 한정이 +> 빠지면 초록이 본문보다 센 주장을 하게 된다. 분량 때문에 주장이 세지는 것은 실패다. +> - 약한 종결·군더더기 도입구부터 뺀다. `.claude/rules/writing-style.md`의 상투구 목록을 쓴다. +> - 한국어판도 같은 턴에 같은 비율로 줄인다. +> +> 줄인 뒤 원본과 나란히 놓고, **주장의 세기가 달라진 문장이 있는지** 스스로 점검해서 보고해줘. +> 하나라도 있으면 되돌리고 다른 데서 줄여. + +Abstract는 마지막에 손댄다. `SUBMISSION_PREP_PROGRESS.md` §2의 "Abstract는 손대지 않는다"는 +**주장 승격 금지**를 뜻하지 분량 동결이 아니지만, 헤드라인이 모여 있는 자리라 사람 확인을 +받고 진행한다. + +--- + +## 쓰면 안 되는 프롬프트 + +| 프롬프트 | 왜 안 되나 | +|---|---| +| "원고 30% 줄여줘" | 균등 감축. 근거 문장과 한계 문장이 헤드라인과 같은 비율로 사라진다 | +| "더 간결하게 다시 써줘" | 다시 쓰면 숫자가 재생성된다. `numbers_unchanged_through_review` 게이트에서 걸린다 | +| "덜 중요한 부분 정리해줘" | "덜 중요"의 기준이 모델에게 있다. 대개 불리한 사실이 먼저 잘린다 | +| "영문판 먼저 줄이고 한국어는 나중에" | EN/KO 파리티가 어긋난다. 같은 턴에 해야 한다 | + +## 완료 판정 +1. `CONDENSE-LEDGER-.md`가 있고, 뺀 항목마다 처리·단어수·간 곳·이유가 적혀 있다 +2. 결정론 재계산 게이트 3종 통과, 산출물 diff 0 +3. 본문 수치와 결과파일이 일치 (`package_validation`의 `numbers_unchanged_through_review`) +4. EN/KO 파리티 유지 +5. 불리한 사실·한계 문장이 삭제된 건이 있다면 사람 승인이 대장에 기록돼 있다 + +대장 없이 줄인 원고만 있으면 미완이다. 되돌릴 수 없고 심사자 응답 때 근거가 없다. diff --git a/harness.yaml b/harness.yaml index 77d1c7d..92a5a5d 100644 --- a/harness.yaml +++ b/harness.yaml @@ -20,6 +20,7 @@ roles: presenter: { type: agent, path: .claude/agents/presenter.md, required: true, implemented: true } paper_critic: { type: agent, path: .claude/agents/paper-critic.md, required: true, implemented: true } design: { type: agent, path: .claude/agents/design.md, required: false, implemented: true } + manuscript_condenser: { type: agent, path: .claude/agents/manuscript-condenser.md, required: false, implemented: true } # 투고 직전 분량 감축. 예시 프롬프트는 docs/CONDENSING-PROMPTS.md paper_planner: { type: agent, path: .claude/agents/paper-orchestrator.md, required: true, implemented: true } # 개명 예정: paper-planner (BIOP01-70) # --- 미구현 (문서에는 참조되나 실체 없음) — BIOP01-64 --- venue_reviewer: From bcf9c9312b087a994bf5c2c1005deb525c6dea5c Mon Sep 17 00:00:00 2001 From: Geon-Gyu LEE Date: Sun, 26 Jul 2026 22:44:29 +0900 Subject: [PATCH 2/5] =?UTF-8?q?harness:=20condenser=20=EB=AA=85=EC=84=B8?= =?UTF-8?q?=EC=97=90=20=EA=B5=90=EC=B0=A8=EB=AA=A8=EB=8D=B8=20=EA=B2=80?= =?UTF-8?q?=EC=88=98=20=EB=B0=98=EC=98=81=20(codex/GPT)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 같은 모델이 자기 명세를 검수하면 모의 검수라(venue-reviewer.md 의 격리 규칙과 같은 이유) codex CLI 로 다른 모델 계열에 붙여 공격을 받았다. 원고 본문은 보내지 않고 명세 두 파일만 인라인으로 넘겼다. 지적 셋이 실제 구멍이라 반영한다. 1. 강등을 무손실로 적어둔 것이 틀렸다. 반례·이질성·불리한 수치가 든 표를 Additional file 로 내리고 본문에 결론만 남기면 결과가 실제보다 깨끗해 보인다. 수치는 살아 있으니 숫자 검사는 통과한다. -> 그런 표를 내릴 때 본문에 사실을 한 문장 남기도록 강제. 없으면 삭제와 같다고 명시. 2. 규칙 충돌 둘이 명세 안에서 해소되지 않았다. - "headline 은 줄이지 않는다" vs "Abstract 를 줄인다": Abstract 가 headline 문장 집합이라 부딪힌다. -> headline 문장이 아니라 그 둘레(도입구·배경 재진술·중복)를 줄이는 것으로 한정. - "근거 문장은 못 뺀다" vs "승격 안 한 관찰은 한 문장": MINOR-4 가 정확히 이 경우다. -> 이 충돌의 답은 삭제가 아니라 강등이라고 못 박음. 3. 한정어 소실 경로가 규칙에 없었다. 숫자를 다 지켜도 "only in HSPC-like cells", "at this n" 같은 범위 한정이 빠지면 주장이 세지는데 numbers_unchanged 게이트는 이걸 못 잡는다. -> claim-evidence map 을 산출물로 승격. 감축 전에 먼저 만들고, 한정어를 원문 표현 그대로 옮겨 적고, 감축 후 한 줄씩 대조한다. 한 칸이라도 X 면 감축 실패. 부수 정정: EN/KO 파리티를 "유지"라고만 적어 판정 불가였다. 리포가 실제로 쓰는 세는 값 (heading 34/34, 수치 전항, 참고문헌 69/69)으로 정의를 고정했다. 산출물 2개 -> 3개 (claim-evidence map 추가). doctor PASS, roles 13. --- .claude/agents/manuscript-condenser.md | 38 ++++++++++++++++++++++---- docs/CONDENSING-PROMPTS.md | 7 +++++ 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/.claude/agents/manuscript-condenser.md b/.claude/agents/manuscript-condenser.md index 21eeb7c..7897311 100644 --- a/.claude/agents/manuscript-condenser.md +++ b/.claude/agents/manuscript-condenser.md @@ -27,7 +27,10 @@ paper-critic·venue-reviewer 지적을 반영해 내용이 확정된 뒤, 투고 경우이며, 줄이기 판단은 대부분 이 모양이다. ## 순서 (지킬 것) -1. **강등** — 표·그림·부수 수치를 Additional file로 내린다. 정보 손실 없이 본문만 짧아진다. +1. **강등** — 표·그림·부수 수치를 Additional file로 내린다. 수치는 보존되고 본문만 짧아진다. + 다만 **강등은 무손실이 아니다.** 반례·이질성·불리한 수치가 든 표를 내리고 본문에 결론만 + 남기면 결과가 실제보다 깨끗해 보인다. 그런 표를 내릴 때는 본문에 그 사실을 한 문장으로 + 남긴다("in three of five systems this held only for …"). 이 문장 없이 내리면 삭제와 같다. 2. **병합** — 같은 말을 하는 인접 문장을 합친다. 3. **압축** — 문장 안의 군더더기. `.claude/rules/writing-style.md`의 사족·상투구·이중 조사 항목이 그대로 점검 목록이다. @@ -44,15 +47,38 @@ paper-critic·venue-reviewer 지적을 반영해 내용이 확정된 뒤, 투고 - **한계와 불리한 사실을 먼저 지킨다.** 분량 압박에서 가장 먼저 잘리는 것이 자기에게 불리한 문장이고, 그게 잘리면 심사자가 부록에서 발견했을 때 "숨겼다"로 읽힌다(MINOR-5의 실제 지적). 불리한 문장을 뺄 때는 대장에 별도로 표시하고 사람 승인을 받는다. -- **`draft_v2.md`와 `draft_v2_ko.md`는 같은 턴에 함께 고친다.** 한쪽만 줄이면 EN/KO 파리티가 - 어긋난다(`SUBMISSION_PREP_PROGRESS.md` §2). +- **한정어를 빼지 않는다.** 숫자를 지켜도 범위·집단·비교대상·시점 한정("only in HSPC-like + cells", "this design cannot separate", "at this n")이 압축 중에 빠지면 주장이 세진다. + 숫자 검사는 이걸 못 잡는다. 아래 claim-evidence map이 이 검사를 맡는다. +- **`draft_v2.md`와 `draft_v2_ko.md`는 같은 턴에 함께 고친다.** 파리티는 세는 값으로 확인한다 — + heading 개수, 수치 항목 전항, 참고문헌 개수가 양쪽에서 같아야 한다 + (`SUBMISSION_PREP_PROGRESS.md`의 "heading 파리티 34/34", "영/한 수치 파리티 전항 일치", + "참고문헌 69/69" 방식). 문장 수나 단어 비율은 파리티 기준이 아니다. - **Abstract 감축은 사람 확인을 받고 한다.** `SUBMISSION_PREP_PROGRESS.md`의 "Abstract는 손대지 않는다"는 **주장 승격 금지**이지 분량 동결이 아니다. 다만 헤드라인 문장이 모여 있는 자리라 임의로 손대지 않는다. -## 산출 (둘 다 있어야 완료) -1. 줄인 원고 — `manuscript/draft_v2.md` + `manuscript/draft_v2_ko.md` -2. **감축 대장** — `manuscript/CONDENSE-LEDGER-.md` +## 규칙이 부딪힐 때 +- **"headline은 줄이지 않는다" vs "Abstract를 줄인다".** Abstract는 headline 문장의 집합이므로 + 둘이 부딪힌다. 해소: Abstract에서는 **headline 문장 자체가 아니라 그 둘레**(도입구, 배경 + 재진술, 중복 서술)를 줄인다. headline 문장은 한정어까지 그대로 둔다. 그래도 목표에 못 미치면 + 사람에게 보고한다. +- **"근거를 진 문장은 못 뺀다" vs "승격하지 않은 관찰은 한 문장".** MINOR-4가 정확히 이 경우다 — + 다섯 숫자가 전부 근거인데 분량은 한 문장이어야 한다. 해소: **삭제가 아니라 강등**이다. + 수치는 Additional file로 옮겨 살리고 본문에는 결론 한 문장과 상호참조만 둔다. 이 충돌에서 + 삭제를 고르면 규칙 위반이다. + +## 산출 (셋 다 있어야 완료) +1. **claim-evidence map** — `manuscript/CLAIM-EVIDENCE-MAP-.md`. **줄이기 전에 먼저 만든다.** + + | claim | 등급 | 한정어(범위·집단·비교·시점) | 근거파일 | 본문 위치 | 감축 후 한정어 보존 | + |---|---|---|---|---|---| + | α는 재현되고 lag는 안 된다 | headline | cross-method, HSPC n=102 | `concordance.md` | Results §1 | O | + + 머릿속으로만 대응시키지 않는다. 파일로 남겨야 감축 뒤에 한정어가 살아 있는지 한 줄씩 + 대조할 수 있고, 심사자 응답 때 근거가 된다. 마지막 열이 하나라도 X면 감축은 실패다. +2. 줄인 원고 — `manuscript/draft_v2.md` + `manuscript/draft_v2_ko.md` +3. **감축 대장** — `manuscript/CONDENSE-LEDGER-.md` | 위치 | 처리 | 단어 | 간 곳 | 이유 | |---|---|---|---|---| diff --git a/docs/CONDENSING-PROMPTS.md b/docs/CONDENSING-PROMPTS.md index c3e5099..9a77a13 100644 --- a/docs/CONDENSING-PROMPTS.md +++ b/docs/CONDENSING-PROMPTS.md @@ -50,8 +50,14 @@ EOF > 자리 말고 아직 안 잡힌 자리를 찾는 게 목적이다. > > 각 자리마다 강등·병합·압축·삭제 중 무엇이 맞는지와 예상 감축 단어수를 적어줘. 원고는 고치지 마. +> +> 마지막으로 `manuscript/CLAIM-EVIDENCE-MAP-<오늘날짜>.md`를 만들어줘. claim / 등급 / +> 한정어(범위·집단·비교대상·시점) / 근거파일 / 본문 위치 열로. 한정어 열은 원문 표현 +> 그대로 옮겨 적어라 — 감축 뒤에 이 열을 한 줄씩 대조할 거라서 요약하면 못 쓴다. 목적은 목록을 얻는 것이지 줄이는 게 아니다. 이 목록을 사람이 보고 승인한 뒤 2·3으로 넘어간다. +claim-evidence map은 감축 **전에** 있어야 한다. 줄인 뒤에 만들면 이미 빠진 한정어를 원문으로 +착각하게 된다. ## 2. 강등 — 본문에서 Additional file로 내리기 @@ -100,6 +106,7 @@ Abstract는 마지막에 손댄다. `SUBMISSION_PREP_PROGRESS.md` §2의 "Abstra | "영문판 먼저 줄이고 한국어는 나중에" | EN/KO 파리티가 어긋난다. 같은 턴에 해야 한다 | ## 완료 판정 +0. `CLAIM-EVIDENCE-MAP-.md`가 있고, 마지막 열(감축 후 한정어 보존)이 전부 O다 1. `CONDENSE-LEDGER-.md`가 있고, 뺀 항목마다 처리·단어수·간 곳·이유가 적혀 있다 2. 결정론 재계산 게이트 3종 통과, 산출물 diff 0 3. 본문 수치와 결과파일이 일치 (`package_validation`의 `numbers_unchanged_through_review`) From 7e95cc05eb7f4633d1b29508f5e8cbc79c087509 Mon Sep 17 00:00:00 2001 From: Geon-Gyu LEE Date: Sun, 26 Jul 2026 22:48:50 +0900 Subject: [PATCH 3/5] =?UTF-8?q?manuscript:=20=EC=9B=90=EA=B3=A0=20?= =?UTF-8?q?=EA=B0=84=EA=B2=B0=ED=99=94=20=EC=A7=84=EB=8B=A8=20(codex=20?= =?UTF-8?q?=EA=B5=90=EC=B0=A8=EB=B6=84=EC=84=9D=20+=20=EC=8B=A4=EC=B8=A1?= =?UTF-8?q?=20=EB=8C=80=EC=A1=B0)=20=E2=80=94=20=EC=95=84=EC=A7=81=20?= =?UTF-8?q?=EC=9B=90=EA=B3=A0=20=EB=AF=B8=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit condenser 명세의 1단계(진단)를 draft_v2.md 에 실제로 적용했다. 원고는 한 글자도 고치지 않았다. Results/Discussion/Conclusions 7,654단어를 codex(ChatGPT 계열)에 넘겨 장황 패턴을 받고, 지적마다 원고에서 직접 대조했다. 여섯 건 모두 사실로 확인됐다. 대조에서 확인된 것: - 판정문("α만 신뢰, lag·γ 불신뢰")이 L127/L169/L183 세 곳에서 반복되고 rho=0.88, +0.163, |rho|<=0.08, +0.24~+0.29 까지 같이 반복된다. - 방법 수정 이력이 Results 본문에 있다. "Our first version of this second comparison was not like-for-like" 와 LRIG1 의 4e-16 반올림 차이까지 본문이 추적한다. - 502단어 소절에 rho/p/CI/n 이 19회. Table 1/2 와 중복. 대조 중 추가로 나온 것 (codex 는 못 본 것): - `The cell x gene velocity matrix ...` 소절 혼자 1,632단어로 Results 5,857 의 28% 다. 그런데 산문 속 수치는 1회뿐 — 분량을 쓰는 건 수치가 아니라 서술이다. 감사로그와 caveat 과적재가 이 소절에 겹쳐 있다. 1순위. - `Table 2 ...` 소절이 2,147단어. 표 소절이 이 분량이면 주변 산문이 표를 다시 설명하는 것. 절대 보존 5곳도 같이 못박았다. 특히 "we therefore withdraw our earlier statement" 는 자기에게 불리한 정정이라 분량 압박에서 가장 먼저 잘릴 자리인데, 잘리면 REVIEW-GB MINOR-5 가 지적한 "숨겼다" 로 읽히는 실패가 된다. 감축 추정 -3,200~5,000단어(7,654 -> 2,700~4,500). 이건 codex 추정이고 실측이 아니라고 문서에 명시했다. 1단계 실행 후 재추정한다. Abstract 와 Methods 는 이번 계획에서 제외. 목표 분량(투고처 제한)이 아직 없다. --- .../manuscript/CONDENSE-PLAN-2026-07-26.md | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 pipeline/hspc-velocity-benchmark/manuscript/CONDENSE-PLAN-2026-07-26.md diff --git a/pipeline/hspc-velocity-benchmark/manuscript/CONDENSE-PLAN-2026-07-26.md b/pipeline/hspc-velocity-benchmark/manuscript/CONDENSE-PLAN-2026-07-26.md new file mode 100644 index 0000000..dd8524a --- /dev/null +++ b/pipeline/hspc-velocity-benchmark/manuscript/CONDENSE-PLAN-2026-07-26.md @@ -0,0 +1,161 @@ +# 원고 간결화 계획 — draft_v2.md (2026-07-26) + +`manuscript-condenser` 명세의 1단계(진단)를 실제 원고에 적용한 결과다. **아직 아무것도 고치지 +않았다.** 이 문서는 어디를 얼마나 줄일지에 대한 계획이며, 승인 후 강등 → 병합 → 압축 순으로 +실행한다. + +> **출처.** 패턴 진단은 codex CLI(ChatGPT 계열)에 Results/Discussion/Conclusions 구간 +> 7,654단어를 인라인으로 넘겨 받은 것이고, 각 지적은 원고에서 직접 대조해 확인했다(아래 +> "확인" 열). §2.7은 이 대조 과정에서 추가로 나온 것이다. 다른 모델 계열을 쓴 이유는 +> `.claude/agents/venue-reviewer.md`의 격리 규칙과 같다 — 같은 계열이 자기 글을 검수하면 +> 모의 검수다. + +## 1. 실측 기준선 + +전체 `draft_v2.md` 13,313단어. + +| 섹션 | 단어 | +|---|---| +| Abstract | 422 | +| Background | 826 | +| **Results** | **5,857** | +| Discussion | 1,607 | +| Conclusions | 190 | +| Methods | 1,767 | + +Results 소절별 (200단어 초과분, 괄호는 산문 속 ρ·p·CI·n 등장 횟수): + +| 단어 | 수치 | 소절 | +|---|---|---| +| **2,147** | 17 | Table 2. Velocity-output reliability decision map | +| **1,632** | 1 | The cell×gene velocity matrix does not reproduce across methods either | +| 776 | 15 | Only the transcription rate α … reproduces across methods | +| 626 | 7 | The dissociation is a property of the objective function | +| 597 | 9 | The fitted transcription rate α, but not γ, recovers an external rate | +| 502 | 19 | The α-robust, lag-fragile ordering replicates across five external systems | +| 375 | 9 | Table 1. Cross-method reproducibility | +| 300 | 8 | Chromatin does not drive the lag | +| 238 | 2 | The reliability map | +| 232 | 3 | A synthetic positive control | +| 229 | 5 | The lag is unpredictable from baseline features | + +재실측: + +```bash +cd pipeline/hspc-velocity-benchmark/manuscript +python3 - <<'EOF' +import re, io +s = io.open("draft_v2.md", encoding="utf-8").read() +for p in re.split(r"\n(?=### )", s)[1:]: + w = len(p.split()) + if w > 200: + print("%5d w / %2d nums %s" % (w, len(re.findall(r"[ρp]=|95% CI|n=", p)), p.split("\n")[0][4:70])) +EOF +``` + +## 2. 장황 패턴 + +감축량이 큰 순서다. "확인" 열은 원고에서 실제로 대조한 결과다. + +### 2.1 수정 이력·감사 로그의 본문화 — 800~1,200단어 +- 위치: `The cell×gene velocity matrix …` L117, L119 +- 확인: **사실.** "Our first version of this second comparison was not like-for-like, and we correct + it here …", "Against the archived fits the only departure is a single gene (*LRIG1*): a 4×10⁻¹⁶ + rounding difference …" 방법 수정 내역과 rerun null 상세가 Results 본문에 그대로 들어 있다. +- 왜: 신뢰성을 높이는 기록이지만 Results가 논증이 아니라 로그처럼 읽힌다. +- 처방: **강등**. 본문에는 결론을 바꾸는 문장만 남기고 상세는 Supplementary audit note로. + 단 "we therefore withdraw our earlier statement…"는 §3에 따라 본문 유지. + +### 2.2 산문 속 수치 덤핑 — 700~1,000단어 +- 위치: `The α-robust, lag-fragile ordering …`(502단어에 수치 19회), `Only the transcription + rate α …`(776단어에 15회), `The fitted transcription rate α …` +- 확인: **사실이고 측정된다.** 502단어 소절에 ρ·p·CI·n이 19번 나온다. Table 1·2와 중복이다. +- 왜: 독자가 확인할 방향은 하나인데 모든 값을 산문에 푼다. +- 처방: **압축**. 본문은 범위·패턴·예외만. 개별 수치는 Table 1/2 또는 Supplementary Table로. + +### 2.3 방어적 caveat 과적재 — 600~900단어 +- 위치: `The α-robust …`의 "Caveats (Table 1 footnotes). (i) The…", Discussion "Three further + limits are load-bearing…", `The cell×gene velocity matrix …`의 "Three limits keep the + statement small…" +- 확인: **사실.** 번호식 한계 열거가 세 군데에서 반복된다. +- 처방: **강등**. 주장 해석을 바꾸는 caveat만 본문에, 나머지는 표 footnote·Supplementary·Methods로. + +### 2.4 같은 판정의 3회 반복 — 500~800단어 +- 위치: L127(Results 말미 reliability map), L169(Discussion 첫 문단), L183(Conclusions) +- 확인: **사실이고 수치까지 겹친다.** 세 곳 모두 ρ=0.88, +0.163, |ρ|≤0.08, +0.24~+0.29를 + 다시 적는다. 판정문("α만 신뢰, lag·γ 불신뢰")이 거의 같은 문장으로 세 번 나온다. +- 처방: **병합**. Results 말미는 Table 2 참조 + 4~5문장, Discussion 첫 문단은 해석·한계 중심, + Conclusions는 수치 최소화. + +### 2.5 선행연구 positioning의 Results 침투 — 300~600단어 +- 위치: `Chromatin does not drive the lag …`의 "We promote this negative control to a main…", + `The dissociation is a property …`, Discussion의 "Positioning against prior work" +- 확인: **사실.** novelty·우선권 서술이 Results와 Discussion 양쪽에 있다. +- 처방: **강등**. Results는 "Fig. 2/5 shows…"만, 선행연구 대비는 Discussion 한 절로. + +### 2.6 부정 주장 과잉 한정 — 300~500단어 +- 위치: `Chromatin does not drive the lag …`, Discussion "It is a statement about the methods + and…", "Read together, these results bound our negative…" +- 확인: **사실.** "크로마틴 생물학을 부정하는 게 아니다"라는 안전장치가 여러 절에서 다른 말로 + 반복된다. +- 처방: **병합**. Discussion에 한 번만. Results에서는 "correlational, not causal" 정도의 짧은 태그. + +### 2.7 소절 하나가 Results의 28%를 쓴다 (대조 중 추가 발견) +- `The cell×gene velocity matrix does not reproduce across methods either` 혼자 **1,632단어**로 + Results 5,857단어의 28%다. 그런데 산문 속 수치는 1회뿐이다 — 즉 **수치가 아니라 서술이 + 분량을 쓰고 있다.** 2.1·2.3이 이 소절에 겹쳐 있다. +- 이 소절 하나를 처리하면 위 여섯 패턴의 감축량 상당 부분이 여기서 나온다. **1순위.** +- 참고로 `Table 2. Velocity-output reliability decision map`은 2,147단어인데 표 소절이 + 이 분량이면 표 주변 산문이 표를 다시 설명하고 있다는 뜻이다. 2순위. + +## 3. 절대 줄이면 안 되는 자리 + +분량이 많아 보이지만 근거·한정어·불리한 사실을 지고 있다. 여기를 건드리면 주장이 세진다. + +| 위치 | 원문 실마리 | 이유 | +|---|---|---| +| Only the transcription rate α … | "MultiVelo's apparent 100% chromatin-leads is…" | 구조적 sign bias 설명. 빼면 lag sign 비판이 과도해진다 | +| The fitted transcription rate α … | "The measured synthesis rate carries steady-state transcript…" | α 외부검증의 abundance confound를 진다 | +| The dissociation is a property … | "This is a relative (practical) non-identifiability…" | likelihood 주장이 "완전 비식별성"으로 과장되는 걸 막는다 | +| The cell×gene velocity matrix … | "We therefore withdraw our earlier statement that chromatin…" | 자기에게 불리한 정정. 투명성의 핵심 (REVIEW-GB MINOR-5) | +| Discussion | "we did not audit the low-dimensional embedding…" | velocity 전체를 부정한다는 오독을 막는 scope 제한 | + +## 4. 이 원고 전용 체크리스트 + +1. Results에서 이미 판정한 숫자를 Discussion·Conclusions에서 다시 열거하지 않는다. 방향과 해석만. +2. 산문에 ρ·CI·p·n이 세 개 이상 연속되면 표로 보내고 본문에는 패턴만 남긴다. +3. caveat가 주장을 바꾸지 않으면 footnote 또는 Supplementary Note로 강등한다. +4. "not causal", "not biology", "not trajectory inference" 방어문은 논점당 한 번만 둔다. +5. correction history와 rerun audit는 결론을 바꾸는 한 문장만 남기고 상세는 보조자료로. +6. 선행연구 대비 문장은 Results에서 빼고 `Positioning against prior work` 한 절로 모은다. +7. 소절 끝 "therefore" 문장이 다음 소절이나 Discussion에서 반복되면 하나만 남긴다. + +## 5. 실행 순서 + +`manuscript-condenser` 규칙대로 강등 → 병합 → 압축 순이며, 삭제는 쓰지 않는다. + +| 단계 | 대상 | 예상 | +|---|---|---| +| 0 | `CLAIM-EVIDENCE-MAP-.md` 작성 (감축 전 필수) | — | +| 1 | 2.1 강등 — 감사 로그를 Supplementary audit note로 | −800~1,200 | +| 2 | 2.3 강등 — caveat를 footnote·Supplementary로 | −600~900 | +| 3 | 2.5 강등 — positioning을 Discussion 한 절로 | −300~600 | +| 4 | 2.4 병합 — 판정 3회를 1회 + 참조로 | −500~800 | +| 5 | 2.6 병합 — 방어문 논점당 1회 | −300~500 | +| 6 | 2.2 압축 — 산문 수치를 표로 | −700~1,000 | + +합계 추정 −3,200~5,000단어. 7,654 → 2,700~4,500. **이 추정은 codex의 것이고 실측이 아니다.** +1단계를 실제로 해 본 뒤 나머지 추정을 다시 잡는다. + +각 단계 끝에 반드시: +- 결정론 재계산 게이트 3종 (`p3_concordance`, `p3_crossdataset_concordance`, `p3_scrambled_null`) diff 0 +- `CLAIM-EVIDENCE-MAP`의 한정어 보존 열 전부 O +- EN/KO 파리티 (heading 개수·수치 전항·참고문헌 개수) +- `CONDENSE-LEDGER-.md` 갱신 + +## 6. 미결 + +- **Abstract(422단어)는 이 계획에 없다.** 본문을 줄인 뒤 마지막에, 사람 확인을 받고 따로 한다. +- **Methods(1,767단어)도 제외**했다. 투고 규정상 별도 취급인 경우가 많아 목표 분량이 정해진 + 뒤에 판단한다. +- 목표 분량이 아직 없다. 투고처의 실제 제한을 확인한 뒤 위 추정과 맞춰야 한다. From 43738db98e764e0b32a70c419997d7a6fc828d3c Mon Sep 17 00:00:00 2001 From: Geon-Gyu LEE Date: Sun, 26 Jul 2026 23:03:33 +0900 Subject: [PATCH 4/5] =?UTF-8?q?harness:=20manuscript-condenser=20=EB=9D=BC?= =?UTF-8?q?=EC=9A=B0=ED=8C=85=20=EB=93=B1=EC=9E=AC=20(BIOP01-74)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 라우터 문서 동결이 풀렸다. skills/ 는 A(복원)로 확정됐고(BIOP02-100 11444, BIOP01-71 kkkim 20:13) "라우터 문서는 옳으니 손대지 않는다"가 결론이므로, skills/ 참조는 그대로 두고 Claude 쪽 에이전트 표에만 한 줄 추가한다. - CLAUDE.md 라우팅 표: "원고 분량 줄여줘 / 투고 word limit 맞춰줘" -> manuscript-condenser - CLAUDE.md 산출물 계약: 분량 감축 행 추가. 산출물은 CLAIM-EVIDENCE-MAP 과 CONDENSE-LEDGER 를 먼저 적었다. 줄인 원고만 내고 대장이 없으면 미완이기 때문이다. - docs/HARNESS.md 인벤토리: 10번 행 추가 라우팅이 없으면 에이전트가 있어도 아무도 부르지 않는다. 등재까지가 한 건이다. doctor PASS (roles 13, 0 경고). 테스트 18/18. --- CLAUDE.md | 2 ++ docs/HARNESS.md | 1 + 2 files changed, 3 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 291c7b3..5d4e675 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -74,6 +74,7 @@ SKILL(지침)을 실제로 돌리는 코드: | "가설·실험설계·분석계획 점검·감사" | `research-methodologist` | | "제출 전 적대적 자체검토 / 그림 QA" | `paper-critic` | | "정식 venue 리뷰 시뮬레이션" | `venue-reviewer` (프로젝트 로컬, 선택) | +| "원고 분량 줄여줘 / 투고 word limit 맞춰줘" | `manuscript-condenser` (내용 확정 후, 선택) | | "발표자료/슬라이드/발제" | `presenter` | | "로고·아이콘·브랜드·그림 미감" | `design` | | "여러 단계를 어떤 순서로 엮을지 계획만" | `paper-orchestrator` (계획만; 실행은 메인 루프) | @@ -87,6 +88,7 @@ SKILL(지침)을 실제로 돌리는 코드: | 집필+그림 | 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 / venue-reviewer | `manuscript/REVIEW--.md` | 집필(수정) | +| 분량 감축 | manuscript-condenser | `manuscript/CLAIM-EVIDENCE-MAP-.md` + `CONDENSE-LEDGER-.md` (+ 줄인 `draft_v2.md`·`draft_v2_ko.md`) | 공개 게이트 | | 발표 | presenter | 슬라이드/발제 | 사람 | | 상태 핸드오프 | (전원) | `HANDOFF.md`, `TODO.md`, `SESSION-LOG.md` — **로컬 전용(.gitignore, 78a5a92)**. 커밋하지 않으며 새 clone에는 없다 | 다음 세션 | diff --git a/docs/HARNESS.md b/docs/HARNESS.md index 0cd0a71..a6e9d73 100644 --- a/docs/HARNESS.md +++ b/docs/HARNESS.md @@ -26,6 +26,7 @@ | 7 | `paper-orchestrator` | 코디네이션 | 멀티-agent 작업 **계획** 수립(실행은 PI) | 재사용 | | 8 | `design` | 엔지니어링 | 로고·아이콘·브랜드·그림 미감(SVG/PNG) | 재사용 | | 9 | `venue-reviewer` (프로젝트 로컬, 선택) | 심사·QA | 정식 venue 스타일 공식 리뷰 문서 | 선택 | +| 10 | `manuscript-condenser` (선택) | 심사·QA | 확정 원고를 목표 분량으로 감축 + 감축 대장 | 선택 (BIOP01-74) | | S | 그림 생성 (스크립트) | 엔지니어링 | `figures/figNN_*.py` — 결과 파일에서 그림 생성·번호 정합 | ✅ (스크립트) | > ⚠️ 그림 생성은 스크립트로 둔다. `manuscript-writer`가 `pipeline/hspc-velocity-benchmark/figures/figNN_*.py`(예: `fig01_p2_concordance.py`)를 실행해 만든다. 단순 재생성은 메인 루프가 직접 돌려도 된다(결정론적). From 26f353376adc7bf6df69348859c40feceb5449c8 Mon Sep 17 00:00:00 2001 From: Geon-Gyu LEE Date: Sun, 26 Jul 2026 23:11:04 +0900 Subject: [PATCH 5/5] =?UTF-8?q?harness:=20harness=5Fafter=20=EB=A5=BC=20li?= =?UTF-8?q?ve=20=EC=99=80=20=EB=8F=99=EA=B8=B0=20(BIOP01-74)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 담당 카드를 전수 검증하다 발견한 표류다. harness_after/ 는 스왑 전 후보본이었는데 66/64/65/73 스왑이 끝난 지금은 live 의 그림자 사본으로 남아 있다. 그런데 doctor 는 harness_after 를 보지 않는다 (scan_files 5개는 전부 live 문서, roles 경로도 live). 즉 SSOT manifest 의 사본이 게이트 밖에 하나 더 있다. 66 이 막으려던 실패 유형 그대로다 - 누가 harness_after/harness.yaml 을 원본으로 착각하고 고쳐도 아무도 못 잡는다. 실제로 벌어져 있었다: manuscript_condenser 역할이 live 에만 있고 harness_after 에는 없었다. 한 줄 동기화했다. 이제 두 파일은 완전히 동일하다. 나머지 4개 파일(doctor, start-paper-harness, CI workflow, venue-reviewer)은 이미 같다. venue-reviewer 만 harness_after 쪽에 "후보 - 승인 후 스왑" 배너 한 줄이 더 있는데 이건 의도된 표식이라 그대로 둔다. 남는 판단(별건): harness_after 를 언제 접을 것인가. 아직 남은 이유는 68/69 후보본 (RUN_STATE.template.yaml / CLAIMS.template.yaml) 둘뿐이다. 두 티켓이 정리되면 디렉터리 자체가 역할을 다한다. 그때까지는 그림자 사본이 계속 표류할 수 있으므로 BIOP01-67~70 처리 시 함께 결정한다. doctor: PASS (roles 13, 0 경고). --- harness_after/harness.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/harness_after/harness.yaml b/harness_after/harness.yaml index 77d1c7d..92a5a5d 100644 --- a/harness_after/harness.yaml +++ b/harness_after/harness.yaml @@ -20,6 +20,7 @@ roles: presenter: { type: agent, path: .claude/agents/presenter.md, required: true, implemented: true } paper_critic: { type: agent, path: .claude/agents/paper-critic.md, required: true, implemented: true } design: { type: agent, path: .claude/agents/design.md, required: false, implemented: true } + manuscript_condenser: { type: agent, path: .claude/agents/manuscript-condenser.md, required: false, implemented: true } # 투고 직전 분량 감축. 예시 프롬프트는 docs/CONDENSING-PROMPTS.md paper_planner: { type: agent, path: .claude/agents/paper-orchestrator.md, required: true, implemented: true } # 개명 예정: paper-planner (BIOP01-70) # --- 미구현 (문서에는 참조되나 실체 없음) — BIOP01-64 --- venue_reviewer: