← 목록
기타 2026-07-10 4KB 읽기 4분

데이터포맷 S급 로직버그 정리 (2026-07-10)

개요

docs/한선씨-P4보완-20260710/재측정_P4_최종.mddocs/한선씨-전영역커버리지-20260709/도메인_데이터포맷-처리.psv가 지목한 데이터포맷-처리 도메인의 partial 과제 3건(JSON/YAML/protobuf) 중 로직버그 3종을 실물 재현 → 수정 → 표준(python) 대조 검증했다.

무엇을 했는지

  1. JSON 배열/객체 마커 구분불가 (libs/JSON.한선 = pkg/libs/JSON.한선,
하드링크) — _맵인가() 휴리스틱(짝수길이+첫원소문자열)이 ["a","b",1,2] 같은 문자열-시작 배열을 객체로 오판하던 버그. 배열[0]에 고유 마커 (_OBJ마커)를 심어 배열/객체를 명시적으로 구분하도록 재설계. v1 API (JSON값/설정/키목록/병합JSON예쁘게·JSON경로 전부 마커 인지하도록 연쇄 수정. 부수적으로 "그리고 비단락평가" VM 함정 1건 발견·가드 처리.
  1. YAML 블록 시퀀스 파서 없음 (libs/YAML.한선) — key:\n - a\n - b
형태가 통째로 무시되던 버그. 줄 배열 선분해 + 들여쓰기 스캔 기반 블록 시퀀스 파서 신규 구현, YAML생성()도 배열 값을 블록 시퀀스로 역직렬화.
  1. protobuf varint 역직렬화 3중버그 (libs/프로토버프.한선) — ①한선씨
v10.0의 "/"가 균형3진 자연반올림(floor 아님)이라 하위7비트 추출/시프트가 깨짐(64~127 범위 바이트에서 오염) ②역직렬화가 wire-type 안 가리고 전부 varint디코딩해 문자열 필드 파괴 ③"필드인덱스 != 0" 센티넬이 정상 인덱스0을 미스로 오판. _floor몫/_floor나머지 헬퍼 도입 + wire-type 분기 + 센티넬을 != -1로 수정.

각 버그 재현(수정전 실패 출력) → 수정 → python(json/yaml/google.protobuf) 대조로 검증. tests/run_all.sh 수정 전/후 동일 99/107(실패 8건 동일 항목, 무관한 기존 실패) 확인 — 회귀 없음.

관련 파일

  • /Users/ef/CrownyOS/crownyc/libs/JSON.한선 (하드링크: pkg/libs/JSON.한선)
  • /Users/ef/CrownyOS/crownyc/libs/YAML.한선 (하드링크: pkg/libs/YAML.한선)
  • /Users/ef/CrownyOS/crownyc/libs/프로토버프.한선 (하드링크: pkg/libs/프로토버프.한선)
  • 검증로그: /Users/ef/CrownyOS/docs/한선씨-P5-20260710/데이터포맷_검증.md
  • 근거: /Users/ef/CrownyOS/docs/한선씨-P4보완-20260710/재측정_P4_최종.md,
/Users/ef/CrownyOS/docs/한선씨-전영역커버리지-20260709/도메인_데이터포맷-처리.psv

잔여 이슈

  • SQLite.한선 collateral 리스크: libs/SQLite.한선JSON.한선을 import
하면서도 자체 _db맵넣어(마커 없는 flat map)를 재구현해 씀 — JSON 마커 스킴 도입 후 DB저장()이 옛 휴리스틱의 "우연한 일치"를 잃어 JSON 영속화 포맷이 배열로 오직렬화될 수 있음. run_all.sh 회귀에는 미포함(발견만, 이번 세션 수정범위 밖) — 후속 패스에서 _db맵넣어/_db맵꺼내를 `JSON설정/ JSON값` 위임으로 교체 + 행(row) 순회 오프셋 조정 필요.
  • protobuf 라이브러리는 진짜 wire format이 아닌 콜론 구분 커스텀 인코딩 —
length-delimited 페이로드에 리터럴 : 포함 시 오분할, zigzag/고정폭 wire-type/repeated/중첩메시지 미구현(스코프 밖, 별도 과제로 문서화).
  • YAML은 중첩 맵 시퀀스(- 키: 값), flow 인라인 배열([a,b]), 멀티라인
스칼라(|,>) 미구현(간소화 파서 원 스코프, psv도 M규모로 분류).

크라우니코드 학습

신규 패턴 3건 등록: JSON_객체배열_마커구분, YAML_블록시퀀스_파서, 한선씨_floor나눗셈_헬퍼 (사전 search 결과 0건 확인 후 add).