Skip to content

feat: dispatch 후 실측 대조 — 페어 rendered_numbers·source 전사 (#88)#119

Merged
SeokRae merged 1 commit into
mainfrom
feature/88-rendered-numbers-pair-verification
Jul 21, 2026
Merged

feat: dispatch 후 실측 대조 — 페어 rendered_numbers·source 전사 (#88)#119
SeokRae merged 1 commit into
mainfrom
feature/88-rendered-numbers-pair-verification

Conversation

@SeokRae

@SeokRae SeokRae commented Jul 21, 2026

Copy link
Copy Markdown
Owner

배경

preflight validate_manifest.py는 drawer 팬아웃 게이트라 선언값만 본다(pair당 sequence 1 + topology 1, segment_numbers 동일성). 그런데 그 번호가 실제로 그려졌는지, source_ref가 렌더 JSON source전사됐는지는 아무도 확인하지 않았다 — #23 페어 번호 공유 게이트가 형식적으로만 작동(topology drawer가 [1..4][1..6]으로 쪼개도 반환 에코는 그대로 ok). #94(PR #118)가 source 전사 대조를 이 이슈의 사후 훅으로 명시적 이연.

변경

신규 — scripts/validate_rendered_pairs.py (dispatch 전용, stdlib)

  • (A) 페어 실측 번호: 같은 pair_id의 sequence steps[].n / topology segments[].n을 렌더 JSON에서 실측해 선언 segment_numbers와 대조. distinct·순서 보존 비교 — render.py가 허용하는 원문 보존 중복(1,2,2,3)은 오탐하지 않고, 구간 쪼갬(1..41..6)·재정렬·드롭은 잡는다.
  • (B) source 전사: source_ref가 비어 있지 않은 모든 unit의 렌더 source원문 그대로(정규화 금지 — 공백·대소문자·경로 구분자 차이도 불일치) 대조. 렌더 JSON에 source가 아예 없으면 라이트 경로라 건너뜀.
  • 불일치는 자동 수정 없이 양쪽 값을 나란히 보고. 위반 → exit 1(error:), 대조 불가(렌더 JSON 누락) → warning: + exit 0. preflight에 --check-rendered를 얹지 않고 별도 스크립트로 분리(게이트 의미 혼선 방지). validate_manifest의 canonical/이름 헬퍼 재사용(단일 진실).

배선·문서

  • agents/diagram-drawer.md — 반환에 rendered_numbers(실측, 에코 segment_numbers와 분리) + 입력 segment_numbersn 재부여 금지.
  • skills/{sequence,topology}/SKILL.md — 입력 segment_numbers가 비면 안 그 값을 순서대로 n에, 더 쪼개야 하면 needs_input.
  • skills/flowcast/SKILL.md ⑤ — 사후 훅 실행 + 불일치 페어/단위 partial 강등(자동 재번호·수정 금지).
  • agents/diagram-router.md — 흐름 데이터인데 페어링 안 하면 pair_id: null이 "누락"과 구분 안 되므로 근거를 notes에.
  • .github/workflows/ci.yml import smoke · CLAUDE.md 구조/명령어/테스트 목록(9개, 기존 누락 test_pptx_cli 포함 정정).

테스트

tests/test_validate_rendered_pairs.py 34종 신설 — extract_rendered_numbers 순수 함수(뷰별 필드·null·다중 시나리오·순수 구성도), _visible_distinct(중복·재정렬·int/str), 페어 대조(쪼갬·중복 무오탐·재정렬·선언 이탈·누락 warning), source 전사(정규화 금지·라이트 경로·component), 방어적 입력, CLI exit code.

  • 전체 477 passed (기준선 443 + 34)
  • scan-sensitive.sh CLEAN(0건) · validate_plugin_manifest.py 유효 · CI import smoke OK

버전은 마일스톤 완료 시점에 3곳을 함께 올리는 규칙이라 이 PR에선 bump하지 않음(CI 버전 리마인더 경고는 예상된 정보성).

Closes #88

preflight validate_manifest 는 선언값만 봐서, 번호가 실제로 그려졌는지·source_ref
가 렌더 JSON source 로 전사됐는지는 아무도 확인하지 않았다(#88 · #94 핸드오프).

- scripts/validate_rendered_pairs.py 신설 (stdlib) — dispatch 후 전용 대조:
  (A) 같은 pair_id 의 sequence steps[].n / topology segments[].n 실측을 선언
      segment_numbers 와 대조(distinct·순서 보존 — 원문 보존 중복 오탐 회피).
  (B) source_ref 비어있지 않은 모든 unit 의 렌더 source 전사 대조(정규화 금지).
  불일치는 자동 수정 없이 양쪽 값 보고. validate_manifest canonical 헬퍼 재사용.
- tests/test_validate_rendered_pairs.py 34종 (순수 함수·페어·source·CLI exit).
- 드로어 반환 rendered_numbers 필드 + 뷰 스킬 segment_numbers→n 재부여 금지 규칙.
- 오케스트레이터 ⑤ 사후 훅 배선 + router pair_id 미부여 근거 산출 의무.
- CI import smoke·CLAUDE.md 구조/명령어/테스트 목록 반영.

Closes #88
@SeokRae
SeokRae merged commit 56be637 into main Jul 21, 2026
4 checks passed
@SeokRae
SeokRae deleted the feature/88-rendered-numbers-pair-verification branch July 21, 2026 04:50
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.

feat: 2축 페어 번호가 렌더 결과와 대조되지 않는다 — rendered_numbers 도입

1 participant