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
93 changes: 93 additions & 0 deletions .claude/agents/manuscript-condenser.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
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로 내린다. 수치는 보존되고 본문만 짧아진다.
다만 **강등은 무손실이 아니다.** 반례·이질성·불리한 수치가 든 표를 내리고 본문에 결론만
남기면 결과가 실제보다 깨끗해 보인다. 그런 표를 내릴 때는 본문에 그 사실을 한 문장으로
남긴다("in three of five systems this held only for …"). 이 문장 없이 내리면 삭제와 같다.
2. **병합** — 같은 말을 하는 인접 문장을 합친다.
3. **압축** — 문장 안의 군더더기. `.claude/rules/writing-style.md`의 사족·상투구·이중 조사
항목이 그대로 점검 목록이다.
4. **삭제** — 마지막 수단. 여기까지 와서 목표에 못 미치면 사람에게 보고하고 멈춘다.

강등으로 해결되는 것을 삭제하지 않는다. 순서를 건너뛰면 되돌릴 수 없는 손실이 먼저 난다.

## 절대 규칙
- **숫자는 한 글자도 바뀌지 않는다.** 값·CI·p·n·부호 전부. 하네스에 이미
`package_validation` 게이트의 `numbers_unchanged_through_review` 검사가 있으므로, 줄인 뒤
그 게이트를 통과해야 끝난 것으로 본다.
- **근거를 진 문장은 삭제 대상이 아니다.** 줄이기 전에 주장과 근거의 대응을 먼저 만든다.
근거가 걸린 문장은 압축할 수는 있어도 뺄 수는 없다.
- **한계와 불리한 사실을 먼저 지킨다.** 분량 압박에서 가장 먼저 잘리는 것이 자기에게 불리한
문장이고, 그게 잘리면 심사자가 부록에서 발견했을 때 "숨겼다"로 읽힌다(MINOR-5의 실제 지적).
불리한 문장을 뺄 때는 대장에 별도로 표시하고 사람 승인을 받는다.
- **한정어를 빼지 않는다.** 숫자를 지켜도 범위·집단·비교대상·시점 한정("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는 손대지
않는다"는 **주장 승격 금지**이지 분량 동결이 아니다. 다만 헤드라인 문장이 모여 있는 자리라
임의로 손대지 않는다.

## 규칙이 부딪힐 때
- **"headline은 줄이지 않는다" vs "Abstract를 줄인다".** Abstract는 headline 문장의 집합이므로
둘이 부딪힌다. 해소: Abstract에서는 **headline 문장 자체가 아니라 그 둘레**(도입구, 배경
재진술, 중복 서술)를 줄인다. headline 문장은 한정어까지 그대로 둔다. 그래도 목표에 못 미치면
사람에게 보고한다.
- **"근거를 진 문장은 못 뺀다" vs "승격하지 않은 관찰은 한 문장".** MINOR-4가 정확히 이 경우다 —
다섯 숫자가 전부 근거인데 분량은 한 문장이어야 한다. 해소: **삭제가 아니라 강등**이다.
수치는 Additional file로 옮겨 살리고 본문에는 결론 한 문장과 상호참조만 둔다. 이 충돌에서
삭제를 고르면 규칙 위반이다.

## 산출 (셋 다 있어야 완료)
1. **claim-evidence map** — `manuscript/CLAIM-EVIDENCE-MAP-<date>.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-<date>.md`

| 위치 | 처리 | 단어 | 간 곳 | 이유 |
|---|---|---|---|---|
| Results §경합설명 ¶2-3 | 압축 | 214 → 41 | 본문 유지 | 승격하지 않은 관찰이 두 문단 |
| 〃 5-시스템 표 | 강등 | 0 | Additional file 12 | 수치 보존, 본문만 축소 |

처리는 강등·병합·압축·삭제 넷 중 하나로 적는다. 대장 없이 줄인 원고만 내면 미완이다.
되돌릴 수 없고, 심사자 응답 때 "왜 뺐는가"에 답할 수 없다.

## 보고
줄이기 **전에** 계획을 먼저 낸다. 섹션별 현재 분량, 목표, 어디서 얼마를 뺄지, 강등 후보 목록.
승인 없이 바로 자르지 않는다. 계획 단계에서 목표가 무리라고 판단되면 그것도 보고 대상이다.
131 changes: 131 additions & 0 deletions CLAIMS.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# CLAIMS.yaml — claim provenance ledger (BIOP01-69)
# ---------------------------------------------------------------------------
# 왜: "숫자는 결과 파일에서만" 규칙(package_validation)만으로는 다음 4가지를
# 못 막는다.
# (1) headline claim ↔ 근거 파일의 연결이 문서화되지 않음
# (2) 본문이 근거보다 세게 주장(과장)
# (3) 결과가 바뀐 뒤에도 남아 있는 낡은 문장
# (4) reviewer 반영으로 claim 강도가 바뀌는 것
#
# 무엇: 각 headline claim 을 원문 근거·검증 스크립트·한계·원고 위치와 함께
# 한 곳에 등록한다. claim_defensibility 게이트와 package_validation 이
# 이 ledger 를 참조해, 등록된 claim 만 원고에 남고 강도가 근거를 넘지
# 않는지 대조한다.
#
# 계층: project profile 계층의 산출물이다(도메인 claim). core harness 는
# 이 파일의 "스키마"만 안다. → docs/HARNESS-LAYERS.md
#
# 필드:
# id : C1, C2 … 안정 식별자(원고·리뷰에서 참조)
# text : claim 한 문장. 원고 표현과 같은 강도로 적는다
# status : supported | provisional | withdrawn | hypothesis_only
# claim_level : 주장 강도. 원고 claim_level 정책과 일치해야 한다
# evidence : 근거 결과 파일(경로). 여기 없는 숫자는 원고 금지
# validation : 이 claim 을 재계산하는 결정론적 스크립트(게이트)
# limitations : 이 claim 을 세게 못 쓰게 막는 한정. 원문 표현 보존
# manuscript_locations : 이 claim 이 등장하는 원고 위치(abstract/results/…)
# ===========================================================================

schema_version: 1
project: biop01
findings_source: pipeline/hspc-velocity-benchmark/results/FINDINGS.md # canonical 종합본
updated: 2026-08-04

claims:
- id: C1
text: >-
chromatin→transcription lag 은 gene 수준에서 method-robust 한 양이 아니다
(크기·방향 모두 method 간 일치도가 낮다).
status: supported
claim_level: primary_negative
evidence:
- pipeline/hspc-velocity-benchmark/results/clean_concordance_gate.md # CRAK-비의존 clean headline
- pipeline/hspc-velocity-benchmark/results/concordance.md
validation:
- "pipeline/hspc-velocity-benchmark/scripts/p3_concordance.py"
key_numbers:
magnitude_concordance: "|rho|<=0.08 (mv×moflow -0.04, mv×mvvae -0.01, moflow×mvvae +0.08)"
sign_agreement: "54.6% ~= chance (방향 미정 lag=0 76개 제외 기준)"
limitations:
- "permutation-FDR agreement-set 0/598 은 부호 가변 method 3개(=CRAK 포함)에서만 정의 → 대표 결과에서 제외, CRAK 민감도 분석(보조)으로만."
- "sign-agreement 수치는 lag=0(방향 미정) 76개 제외 규약에 의존(미제외 np.sign 규약이면 48%)."
manuscript_locations: [abstract, results, discussion]

- id: C2
text: >-
lag 과 달리 (a) 전사율 alpha, (b) 집단 수준 방향 균형, (c) canonical priming
marker 방향 — 이 셋만 method 간 robust 하다.
status: supported
claim_level: primary_positive
evidence:
- pipeline/hspc-velocity-benchmark/results/clean_concordance_gate.md
- pipeline/hspc-velocity-benchmark/results/concordance.md
key_numbers:
alpha_concordance: "method 간 rho=0.88"
population_direction: "~50/50 (두 method 수렴)"
limitations:
- "robust 한 것은 alpha·집단방향·priming marker 방향에 한정. gene별 lag 값 자체는 아니다."
manuscript_locations: [abstract, results]

- id: C3
text: >-
음성대조(scrambled-chromatin)는 MultiVelo 의 lag 가 chromatin 신호가 아니라
모델 구조에서 나옴을 입증했다.
status: supported
claim_level: supporting
evidence:
- pipeline/hspc-velocity-benchmark/results/scrambled_null.md
validation:
- "pipeline/hspc-velocity-benchmark/scripts/p3_scrambled_null.py"
limitations:
- "한 method(MultiVelo)에 대한 구조 기인 입증. 다른 method로의 일반화는 별도 근거로."
manuscript_locations: [results]

- id: C4
text: >-
'alpha > lag' 식별성 순서는 다섯 외부 데이터셋에서 보존되며, 다섯 번째
(mouse gastrulation)는 fit 도착 전 봉인한 6개 예측을 사후구제 없이 6/0 통과했다.
status: supported
claim_level: primary_generalization
evidence:
- pipeline/hspc-velocity-benchmark/results/prereg_gse205117_scorecard.md # 사전등록 6/0
- pipeline/hspc-velocity-benchmark/results/concordance_human_brain.md
- pipeline/hspc-velocity-benchmark/results/concordance_e18_mouse_brain.md
- pipeline/hspc-velocity-benchmark/results/concordance_GSE194122_bmmc.md
- pipeline/hspc-velocity-benchmark/results/concordance_macrophage.md
validation:
- "pipeline/hspc-velocity-benchmark/scripts/p3_crossdataset_concordance.py"
key_numbers:
alpha_monotone: "macrophage +0.643 > BMMC +0.55 > human_brain +0.475 > gastrulation +0.415 > E18 +0.32"
lag_signal: "어디서도 무신호 (+0.03~+0.19)"
limitations:
- "cross-dataset alpha 는 조직이 멀수록 단조 감소 — 보존되는 것은 'alpha>lag 순서'이지 alpha 절대값이 아니다."
manuscript_locations: [results, discussion]

- id: C5
text: >-
lag 이 method 간 재현되지 않는 것은 잡음이 아니라 MultiVelo 목적함수가 lag 을
데이터로 잘 결정하지 못하기 때문이다(관찰이 메커니즘으로 설명됨).
status: supported
claim_level: mechanism
evidence:
- pipeline/hspc-velocity-benchmark/results/profile_likelihood_identifiability.md # §8
key_numbers:
alpha_vs_lag_sensitivity: "유전자별 alpha쪽 민감도가 lag쪽보다 중앙값 3.53x"
genes_alpha_more_sensitive: "94.57%"
limitations:
- "MultiVelo 목적함수에 대한 실질(practical) 비식별성. 완전(structural) 비식별성으로 과장 금지."
manuscript_locations: [results, discussion]

- id: C6
text: >-
따라서 drug-timing 모델은 lag 을 단일 method 값으로 쓰면 안 되고 method
불확실성을 명시적으로 반영해야 한다.
status: provisional
claim_level: downstream_implication
evidence:
- pipeline/hspc-velocity-benchmark/results/lag_model.md # prototype
- pipeline/hspc-velocity-benchmark/results/lag_model_atac.md
limitations:
- "P5 baseline→timing 모델은 prototype(held-out lineage, Mc proxy). drug perturbation arm 은 데이터 대기."
manuscript_locations: [discussion]
4 changes: 3 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ SKILL(지침)을 실제로 돌리는 코드:

## Agent routing & artifact contract (논문 생산 하네스)

> 논문 집필·발표 단계용. 재사용 스캐폴드(Designed by Ka-Kyung Kim, CC BY 4.0) 설치본. 전체 랩 지도·멤버 JD = **`docs/HARNESS.md`**. 도메인 분석 슬롯 = **`hspc-velocity-analyst`**(팀이 채운 유일한 슬롯). 이 브랜치(`kkkim-pipeline`)에 project-scope로 설치.
> 논문 집필·발표 단계용. 재사용 스캐폴드(Designed by Ka-Kyung Kim, CC BY 4.0) 설치본. 전체 랩 지도·멤버 JD = **`docs/HARNESS.md`**. 도메인 분석 슬롯 = **`hspc-velocity-analyst`**(project profile 의 analyst 슬롯 — 이식 시 검증 게이트 스크립트·paper direction·CLAIMS 도 함께 교체해야 한다. 경계: **`docs/HARNESS-LAYERS.md`**, BIOP01-67). 이 브랜치(`kkkim-pipeline`)에 project-scope로 설치.

### 자연어 라우팅
요청에 agent 이름이 없어도 아래 표로 배정한다. 프로젝트 agent는 `.claude/agents/`. 그림 작업은 `manuscript-writer`가 `pipeline/hspc-velocity-benchmark/figures/figNN_*.py`를 실행해 소유.
Expand All @@ -82,6 +82,7 @@ SKILL(지침)을 실제로 돌리는 코드:
| "가설·실험설계·분석계획 점검·감사" | `research-methodologist` |
| "제출 전 적대적 자체검토 / 그림 QA" | `paper-critic` |
| "정식 venue 리뷰 시뮬레이션" | `venue-reviewer` (프로젝트 로컬, 선택) |
| "원고 분량 줄여줘 / 투고 word limit 맞춰줘" | `manuscript-condenser` (내용 확정 후, 선택) |
| "발표자료/슬라이드/발제" | `presenter` |
| "로고·아이콘·브랜드·그림 미감" | `design` |
| "여러 단계를 어떤 순서로 엮을지 계획만" | `paper-orchestrator` (계획만; 실행은 메인 루프) |
Expand All @@ -95,6 +96,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-<venue>-<date>.md` | 집필(수정) |
| 분량 감축 | manuscript-condenser | `manuscript/CLAIM-EVIDENCE-MAP-<date>.md` + `CONDENSE-LEDGER-<date>.md` (+ 줄인 `draft_v2.md`·`draft_v2_ko.md`) | 공개 게이트 |
| 발표 | presenter | 슬라이드/발제 | 사람 |
| 상태 핸드오프 | (전원) | `HANDOFF.md`, `TODO.md`, `SESSION-LOG.md` — **로컬 전용(.gitignore, 78a5a92)**. 커밋하지 않으며 새 clone에는 없다 | 다음 세션 |

Expand Down
Loading
Loading