init: llm-wiki-haness 하네스 설계
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
**조사 주제:** {{arguments}}
|
||||
|
||||
## 작업 절차
|
||||
|
||||
1. **인자 검증** — 비면 주제 요청. 파일 슬러그는 `YYYY-MM-DD-<kebab-주제>.md` (naming-conventions).
|
||||
2. **파일 존재 확인** — 있으면 덮어쓰지 말고 안내 후 종료.
|
||||
3. **스캐폴딩** — `templates/invest-research-template.md` 복사, frontmatter 치환.
|
||||
4. **`deep-research` 스킬 호출 (명시 — Spec F V3)** — `deep-research` 스킬로 다출처 조사. 권위 출처(학술·공식·vendor-research) 우선, 블로그는 약함 표기. 각 출처에서 **verbatim 인용(byte-for-byte)** 추출 후 proof manifest로 원문 일치 확인(evidence-first-research). Claim 분리 + KEEP/CORRECT/REJECT 판정 채움.
|
||||
5. **고위험 claim 3표 quorum 검증 (기본값 — P2-17 반전, opt-out 명시제)** — 매매 결정에 직결되는 수치/주장(가격·수익률·MDD·세율 등)은 단일 패스 KEEP/CORRECT/REJECT 로 끝내지 않는다. 3표는 **cross-vendor 1+1+1** (`rules/extraction-tiering.md` T1 — codex/agy 모두 web 검증 가능, 검증된 사실):
|
||||
- **Claude 1표**: read-only 검증 subagent 1개 dispatch (WebSearch 가능). 해당 claim 을 **refute 시도**(권위 출처 재확인)하고 `finding: <ClaimID> action: KEEP|DOWNGRADE|REJECT` 형식의 ```wiki-verdict``` 블록을 출력 → `/tmp/invest-research-vote-claude.md`.
|
||||
- **외부 2표**: 고위험 claim 행(ClaimID 포함)을 findings 파일로 저장 후 — 외부 엔진은 web 재확인이 가능하므로 조사 노트를 `--context-files` 로 전달:
|
||||
|
||||
```bash
|
||||
cd scripts/deep-research && python3 -m deep_research.vote --backend codex \
|
||||
--findings /tmp/invest-research-findings.md --context-files raw/invest-research/<노트>.md --out /tmp/invest-research-vote-codex.md
|
||||
cd scripts/deep-research && python3 -m deep_research.vote --backend antigravity \
|
||||
--findings /tmp/invest-research-findings.md --context-files raw/invest-research/<노트>.md --out /tmp/invest-research-vote-agy.md
|
||||
```
|
||||
|
||||
- `python3 .claude/hooks/wiki_quorum.py /tmp/invest-research-vote-claude.md /tmp/invest-research-vote-codex.md /tmp/invest-research-vote-agy.md` 합산 — **KILL** → 해당 claim 판정을 REJECT 로 기록, **UNVERIFIED** → `needs-confirmation` 표기(매매 근거로 사용 금지), **DOWNGRADE** → Strength 하향.
|
||||
- **외부 표 생성 실패 시** (vote.py exit 1) 해당 표만 Claude read-only 검증 subagent 추가 dispatch 로 대체 (fallback) — 표별 엔진 출처를 노트에 funnel 로 기록 (no silent engine swap).
|
||||
- **opt-out**: 사용자가 명시적으로 빠른 모드를 요청한 경우에만 생략 + 노트에 "단일 패스 한계" 명시. 더 강하게는 deep-research **Workflow(3표 quorum)** = `Workflow` opt-in("ultracode", Spec D).
|
||||
6. **사용자 안내** — 경로 + "검증된 결론은 `/invest-ingest`로 canonical 추출."
|
||||
|
||||
## 규칙
|
||||
|
||||
- verbatim 인용은 의역 금지. proof manifest 미통과 인용은 삭제.
|
||||
- 출처 등급 명시(공식 vs 블로그). 회사/블로그 사례를 일반 법칙으로 격상 금지.
|
||||
- 내 적용 결론은 raw에 쓰지 않음(canonical에서).
|
||||
|
||||
## Proof Artifact Contract (HARD)
|
||||
|
||||
finding/인용 draft는 exact UTF-8 quote 전부를 포함한 `proof-request/v1` JSON으로 조립한다. controller는 `python3 harness/runtime/proof_runner.py <proof-request.json> --repo-root . --output <report-dir>/proof-manifest.json`을 실행한다. exit 0, `schema_version: proof-runner-result/v1`, `status: PASS`, manifest `schema_version: proof-manifest/v1` 확인 전에는 workflow 완료를 선언하지 않는다.
|
||||
|
||||
보고서에는 `manifest_path`, `manifest_sha256`, `proof_count`, `pass_count`, `fail_count`를 기록한다. 실패 proof와 라인 정정은 전부, PASS proof는 대표 1~3개만 펼치고 나머지는 manifest를 참조한다. `fail_count != 0` 또는 count 불일치면 완료 판정을 차단한다.
|
||||
Reference in New Issue
Block a user