Skip to content

feat(v2): formalizer EMIT graph_shape + narrative/faithfulness 구조사실 검증 (Phase 1b, F8 폐쇄) - #171

Merged
LsMin124 merged 1 commit into
mainfrom
feat/ir-phase1b-emit-structural
Jun 24, 2026
Merged

feat(v2): formalizer EMIT graph_shape + narrative/faithfulness 구조사실 검증 (Phase 1b, F8 폐쇄)#171
LsMin124 merged 1 commit into
mainfrom
feat/ir-phase1b-emit-structural

Conversation

@LsMin124

Copy link
Copy Markdown
Owner

Summary

단일 IR RFC(#169) Phase 1 의 write-side. 1a(#170)가 깐 구조 IR 필드를 formalizer 가 실제로 EMIT 하고, narrative/faithfulness 가 prose 규칙 대신 투영된 구조 사실(DATA)로 검증한다. 모순 표면이 prompt 규칙(확률적)에서 graph_shape 단일 진실(구조적)로 이동 — consistency-by-construction.

변경

  • formalizer: graph 구조 prose 규칙(self-loop 없음/다중간선/연결성) 삭제 → graph_shape 필드 EMIT 지령(directed/self_loops/multi_edges/connectivity). directedF8(오늘날 어디에도 결정 안 된 잠재 모순) 필수 핀 — 도메인 의미로 단/양방향 결정.
  • narrative: self-loop 금지 prose 삭제 → render_structural_facts 를 DATA 로 수령하고 그와 일치하게 서술(모순 시 faithfulness reject).
  • faithfulness: 구조 사실 DATA 공급 + 'narrative ↔ 구조 사실 모순 = distortion' 규율.
  • F8 verifier 무수정: v1 DijkstraVerifier 는 v2 샘플(V E 2토큰 헤더)에 dormant(파서가 V E s t 4토큰 기대 → silent skip 실증) — F8 활성 표면은 format 계약↔golden↔narrative 뿐이고 directed 가 거기 투영되므로 directed=True/False 모두 안전.

측정 (격리 클린 before/after, N=3 P1)

uv 격리 워크트리(동시 세션 미커밋 변경 배제)에서 baseline(c9d1ad1) vs 1b(this) 측정:

sort dijkstra bfs TOTAL
baseline (1b 없음) fail_qa fail_qa fail_qa 0/3
1b success fail_qa fail_qa 1/3

1b 는 non-regressing(baseline ≥ 비교, sort 출하). directedness 관련 실패 0건.

⚠️ 별건 선재 회귀 발견: baseline(c9d1ad1, 1b 없음)도 ~0% 출하 — 역사적 67%(#169)에서 떨어진 1b 무관 회귀(후보: 1a #170 render prose / LLM 드리프트). 별도 조사 예정. 이 PR 과 무관(1b 는 그 위에서 무회귀).

Test plan

  • pytest -m "not e2e"816 passed (+6 신규 1b 프롬프트/데이터흐름 테스트)
  • ruff check ipe tests clean · mypy --strict ipe clean (92 files)
  • 격리 클린 측정: 1b 1/3 ≥ baseline 0/3 (non-regressing)

동시 진행 중 별개 작업(병렬 sandbox 실행: verification/_exec.py·differential.py·metamorphic.py 등)은 의도적 제외 — Phase 1b 모델링 노드와 무관.

…증 (Phase 1b, F8 폐쇄)

단일 IR RFC(#169) Phase 1 의 write-side: 1a(#170)가 깐 구조 IR 필드를 formalizer 가
실제로 EMIT 하고, narrative/faithfulness 가 prose 규칙 대신 투영된 구조 사실(DATA)로
검증한다. 모순 표면이 prompt 규칙(확률적)에서 graph_shape 단일 진실(구조적)로 이동.

- formalizer: graph 구조 prose 규칙(self-loop 없음/다중간선/연결성) 삭제 → graph_shape
  필드 EMIT 지령(directed/self_loops/multi_edges/connectivity). directed 는 F8(어디에도
  결정 안 된 잠재 모순) 필수 핀 — 도메인 의미로 단/양방향 결정.
- narrative: self-loop 금지 prose 삭제 → render_structural_facts 를 DATA 로 수령하고
  그와 일치하게 서술(모순 시 faithfulness reject).
- faithfulness: 구조 사실 DATA 공급 + 'narrative ↔ 구조 사실 모순 = distortion' 규율.
- F8 verifier: 무수정. v1 DijkstraVerifier 는 v2 샘플('V E' 헤더)에 dormant(파서가
  'V E s t' 4토큰 기대 → silent skip 실증) — F8 활성 표면은 format 계약↔golden↔
  narrative 뿐이고 directed 가 거기 투영되므로 directed=True/False 모두 안전.

게이트: 816 passed(+6 신규 1b 프롬프트/데이터흐름 테스트) / mypy --strict 92 / ruff green.
출하율 측정은 PR 본문 참조.
@LsMin124
LsMin124 merged commit 0ceb6b6 into main Jun 24, 2026
4 checks passed
@LsMin124
LsMin124 deleted the feat/ir-phase1b-emit-structural branch June 24, 2026 02:24
LsMin124 pushed a commit that referenced this pull request Jun 24, 2026
…tor Phase 0~1b)

- meta: main/dev 0ceb6b6, tests 727→768 (v1 506 + v2 262 worktree 실측), version '출하율 수선 + 단일 IR refactor'
- summary: ship-rate 진단·수선(P1 1/9→6/9) + 단일 ProblemIR RFC(모순표면 O(N²)→O(2)) Phase 0~1b
- bank: prod 25→31문제(번호~1030, P1 6문제 추가 #1025~1030 composition 0, 난이도 Bronze3/Silver10/Gold18)
- recentPrs #152~171, backlog 단일 IR refactor 트랙 추가, NFR-6/stack.pytest 262
- 4 HTML 하드코딩 테스트수 768
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant