# NEXT SESSION ENTRY — synth context truncation 발견 + fix (2026-06-05)

> 이 세션의 큰 발견 + 진행 중 측정 인수인계. 다음 세션은 이 문서로 이어받음.

## 한 줄 현황

JAMES synth 프롬프트의 하드코딩 **`context[:1000]`** 한 줄이 evidence를
1000자로 잘라 **플랫폼 전체 multi-hop 추론을 장기간 불구**로 만들고 있었음.
발견·수정(env-gate)·검증 완료. 마지막 확인 측정(PM-12 mixtral+fix) 진행 중,
이후 **최종 종합 보고 + production default 결정**만 남음.

## 큰 발견 (전부 기록됨)

- 메모리: `feedback_synth_context_1000_truncation_rootcause.md` (🔴🔴 BIG)
  + `feedback_james_stack_abstention_tradeoff.md`
- 실험로그: `reports/research-runs/alpha-8-paper-comparison-experiment-log-20260604.md`
  §11~§17 (§17 = 통합 요약, 먼저 읽을 것)
- 커밋 (로컬 main, 미push):
  - `fix(synth): env-gate evidence char budget (JAMES_SYNTH_CONTEXT_CHARS)`
  - `docs(research): ablation campaign + ROOT CAUSE ... (§11-17)`
  - 그 앞: `fix(response_style)` #711(머지됨), `docs(research)` PM-0~5 등

## 핵심 결과 매트릭스 (e4b, multihop terse 100Q, paper-aligned exact-match)

| 구성 | primary | answerable-only | inference | comparison | temporal | null |
|---|---|---|---|---|---|---|
| paper-Mixtral | 0.32 | — | — | — | — | — |
| RAW e4b | 0.52 | 0.39 | 0.60 | 0.40 | 0.16 | 0.92 |
| full e4b (cap1000) | 0.45 | 0.29 | 0.56 | 0.12 | 0.20 | 0.92 |
| **full+fix e4b (cap8000)** | **0.48** | **0.347** | **0.80** | 0.16 | 0.08 | 0.88 |
| RAW mixtral | 0.55 | **0.65** | 0.92 | 0.72 | 0.32 | 0.24 |
| full mixtral (cap1000) | 0.46 | 0.29 | 0.56 | 0.20 | 0.12 | 0.96 |
| **full+fix mixtral (PM-12)** | 진행중 | ? | (부분 0.80) | ? | ? | ? |

cap sweep (e4b): 1000→4000→8000 에서 answerable 0.29→0.32→0.347 (단조↑,
8000이 4000 지배, knee 없음). temporal은 4000부터 0.08로 하락(e4b 약점+노이즈).

## 즉시 할 일 (다음 세션 첫 작업)

1. **PM-12 결과 확인**:
   - output: `C:\Users\karu-\AppData\Local\Temp\claude\...\tasks\b546xlcld.output`
   - 또는 결과 JSON: `reports/multihop_terse_mixtral-8x7b_*.json` (최신)
   - 채점: `python -c "import json,glob,os; from eval.qvt.oracle import score_paper_aligned_accuracy; ..."`
     (PM-12 부분채점 명령은 로그/세션 참고) — **JAMES_WORKSPACE=./workspaces/hotpot_eval 필수**
   - **중단됐으면 재실행**:
     `JAMES_WORKSPACE=./workspaces/hotpot_eval JAMES_RESPONSE_STYLE=terse JAMES_NUM_CTX=16384 JAMES_SYNTH_CONTEXT_CHARS=8000 PROOF_MODEL=mixtral:8x7b python scripts/research/multihop_terse_run.py`
2. **최종 종합 보고**: 6칸 매트릭스 완성 + fix 전후 + mixtral 모델통제 우위
   (paper 0.32 대비) + "raw 답변력 + full 회피력 동시 달성" 여부 판정.
3. **production default 결정**: `JAMES_SYNTH_CONTEXT_CHARS` default 1000→? 변경
   권고. 근거 = answerable +0.057, inference +0.24, null −0.04. 단 latency
   (긴 프롬프트)·abstention 균형. **default 변경은 사용자 확인 받을 것**
   (production 전체 영향, 높은 stakes).

## 가드레일 (자율 캠페인, 사용자 위임)

- null abstention 보호 — **탐색 하한 0.70** (사용자 2026-06-05 조정). 탐색은
  0.70까지 내려 tradeoff knee 매핑, 최종 추천은 Pareto 균형. null<0.70 revert.
- mother-platform: 도메인 종속 X, default 안전(불확실시 env-gate).
- 모든 변경 = 기록 + 커밋. 반복 상한 ~3회. e4b 4B 천장 인정(목표=스택 손실
  회복이지 e4b 천재화 아님).

## 미해결 / 후속 후보

- temporal 0.20→0.08 하락 원인 미확정 (노이즈 vs more-context 부작용).
- comparison/temporal = e4b yes/no 합성 능력 천장 (context 무관, mixtral은 raw 0.72).
- default cap 값 최종 결정 (4000 vs 8000: 8000 품질↑ but latency↑).
- (선택) graph/query_rewrite는 over-abstention 무관 확인됨 — 별도 가치 측정은 안 함.

## 재현 도구

- full runner: `scripts/research/multihop_terse_run.py` (FIXTURE/PROOF_MODEL/
  JAMES_SYNTH_CONTEXT_CHARS env)
- raw runner: `scripts/research/multihop_raw_run.py` (vanilla RAG, evidence guard)
- fixture: `workspaces/hotpot_eval/eval/multihop_rag_queries.json` (base, 권장)
- 채점: `eval/qvt/oracle.py::score_paper_aligned_accuracy`
- **항상 `JAMES_WORKSPACE=./workspaces/hotpot_eval` 설정** (안 하면 prod 코퍼스 조회)
