Skip to content

fix(v2): output_format 도메인-중립 규율 일반화 — 'output_format↔description' 용어 드리프트 해소#177

Merged
LsMin124 merged 1 commit into
mainfrom
fix/output-format-domain-neutral
Jun 25, 2026
Merged

fix(v2): output_format 도메인-중립 규율 일반화 — 'output_format↔description' 용어 드리프트 해소#177
LsMin124 merged 1 commit into
mainfrom
fix/output-format-domain-neutral

Conversation

@LsMin124

Copy link
Copy Markdown
Owner

요약

formalizer가 io_schema.output_formatLLM 자유 prose로 저작하는데, 일반(도메인) 모드엔 도메인-중립 규율이 없었습니다(abstract 모드 전용). 그 결과 formalizer가 이른 시점에 오류 도메인 용어("누적 수확량")를 쓰고, narrative가 나중에 올바른 용어("단위 수확량")를 독립 저작해 output_format↔description 모순 → QA ambiguity reject되던 결함(outputs/measure-refkind-after run1 fail_qa 실측)을 해소합니다.

버그 클래스

reference_kind(#176)와 구조적으로 동일 — 이른/형식 레이어가 narrative와 별개로 도메인 의미를 단정하던 드리프트 표면. single-IR consistency-by-construction 원칙으로 제거.

변경

  • formalizer _SYSTEM_PROMPT(일반 모드): output_format인쇄 구조(타입·개수·형식·1/0-indexed·sentinel)만 서술하고, 답의 도메인 의미는 narrative가 단일 저작하도록 규율 추가. (기존 abstract 모드 전용 규율을 일반화)
  • _EASY_SYSTEM_PROMPT: 간결한 동일 규율 추가 (전 모드 일반화).

DB 영향: 없음

프롬프트 문자열 변경. output_formatinput_format과 같은 Text 컬럼 — 구조 불변, migration/DDL 0.

측정

binary_search P1 N=3 (outputs/measure-outfmt-after, $1.24):

  • 출하율 1/3 → 3/3 (직전 measure-refkind-after 1/3 대비)
  • output_format 0/3 도메인 용어 — 전부 구조-중립. run2는 "(1-indexed 위치 의미는 지문이 정의한다.)" 명시 = 위임 내재화 직접 증거.
  • QA ambiguity 0 · fail_synthesis 0 · crash 0.
  • (정직 고지) N=3은 작고 binary_search ship rate 노이즈 있음(2/3→1/3→3/3). 다만 중립화 메커니즘은 확증.

Test plan

  • pytest 903 passed / mypy --strict 100 / ruff green
  • binary_search P1 N=3 = 3/3 success, output_format 전부 도메인-중립
  • (후속) 더 넓은 시드/도메인에서 용어 드리프트 재발 모니터링

… 드리프트 해소

formalizer 가 io_schema.output_format 을 LLM 자유 prose 로 저작하는데 일반(도메인)
모드엔 도메인-중립 규율이 없어(abstract 모드 전용이었음), 이른 시점에 오류 도메인
용어(예 '누적 수확량')를 쓰면 narrative 가 나중에 올바른 용어(예 '단위 수확량')를
독립 저작해 'output_format↔description' 모순 → QA ambiguity reject 되던 결함
(outputs/measure-refkind-after run1 fail_qa 실측)의 해소.

- formalizer _SYSTEM_PROMPT(일반 모드): output_format 은 인쇄 구조(타입·개수·형식·
  1/0-indexed·sentinel)만 서술하고 답의 도메인 의미는 narrative 가 단일 저작하도록
  규율 추가. _EASY_SYSTEM_PROMPT 에도 간결 동일 규율(전 모드 일반화).
- reference_kind(#176) 와 동일 버그 클래스: 이른/형식 레이어가 narrative 와 별개로
  도메인 의미를 단정하던 드리프트 표면 제거 (single-IR consistency-by-construction).
- DB/스키마/migration 무변경 (프롬프트 문자열 변경, output_format 은 input_format 과
  같은 Text 컬럼 — 구조 불변).

측정: binary_search P1 N=3 출하율 1/3→3/3(outputs/measure-outfmt-after, $1.24).
output_format 0/3 도메인 용어(전부 구조-중립; run2 는 '1-indexed 위치 의미는 지문이
정의한다' 명시=위임 내재화 증거). QA ambiguity 0·fail_synthesis 0·crash 0. N=3 은
작고 binary_search ship rate 노이즈 있으나(2/3→1/3→3/3) 중립화 메커니즘은 확증.
게이트 903 passed/mypy --strict 100/ruff green.
@LsMin124 LsMin124 merged commit d548bf6 into main Jun 25, 2026
4 checks passed
@LsMin124 LsMin124 deleted the fix/output-format-domain-neutral branch June 25, 2026 19:36
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