feat: dispatch 후 실측 대조 — 페어 rendered_numbers·source 전사 (#88)#119
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
배경
preflight
validate_manifest.py는 drawer 팬아웃 전 게이트라 선언값만 본다(pair당 sequence 1 + topology 1,segment_numbers동일성). 그런데 그 번호가 실제로 그려졌는지,source_ref가 렌더 JSONsource로 전사됐는지는 아무도 확인하지 않았다 — #23 페어 번호 공유 게이트가 형식적으로만 작동(topology drawer가[1..4]를[1..6]으로 쪼개도 반환 에코는 그대로ok). #94(PR #118)가source전사 대조를 이 이슈의 사후 훅으로 명시적 이연.변경
신규 —
scripts/validate_rendered_pairs.py(dispatch 후 전용, stdlib)pair_id의 sequencesteps[].n/ topologysegments[].n을 렌더 JSON에서 실측해 선언segment_numbers와 대조. distinct·순서 보존 비교 — render.py가 허용하는 원문 보존 중복(1,2,2,3)은 오탐하지 않고, 구간 쪼갬(1..4→1..6)·재정렬·드롭은 잡는다.source_ref가 비어 있지 않은 모든 unit의 렌더source를 원문 그대로(정규화 금지 — 공백·대소문자·경로 구분자 차이도 불일치) 대조. 렌더 JSON에source가 아예 없으면 라이트 경로라 건너뜀.error:), 대조 불가(렌더 JSON 누락) →warning:+ exit 0. preflight에--check-rendered를 얹지 않고 별도 스크립트로 분리(게이트 의미 혼선 방지).validate_manifest의 canonical/이름 헬퍼 재사용(단일 진실).배선·문서
agents/diagram-drawer.md— 반환에rendered_numbers(실측, 에코segment_numbers와 분리) + 입력segment_numbers→n재부여 금지.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.ymlimport smoke ·CLAUDE.md구조/명령어/테스트 목록(9개, 기존 누락test_pptx_cli포함 정정).테스트
tests/test_validate_rendered_pairs.py34종 신설 —extract_rendered_numbers순수 함수(뷰별 필드·null·다중 시나리오·순수 구성도),_visible_distinct(중복·재정렬·int/str), 페어 대조(쪼갬·중복 무오탐·재정렬·선언 이탈·누락 warning), source 전사(정규화 금지·라이트 경로·component), 방어적 입력, CLI exit code.scan-sensitive.shCLEAN(0건) ·validate_plugin_manifest.py유효 · CI import smoke OKCloses #88