데이터포맷 S급 로직버그 정리 (2026-07-10)
개요
docs/한선씨-P4보완-20260710/재측정_P4_최종.md와
docs/한선씨-전영역커버리지-20260709/도메인_데이터포맷-처리.psv가 지목한
데이터포맷-처리 도메인의 partial 과제 3건(JSON/YAML/protobuf) 중 로직버그
3종을 실물 재현 → 수정 → 표준(python) 대조 검증했다.
무엇을 했는지
- JSON 배열/객체 마커 구분불가 (
libs/JSON.한선=pkg/libs/JSON.한선,
_맵인가() 휴리스틱(짝수길이+첫원소문자열)이 ["a","b",1,2]
같은 문자열-시작 배열을 객체로 오판하던 버그. 배열[0]에 고유 마커
(_OBJ마커)를 심어 배열/객체를 명시적으로 구분하도록 재설계. v1 API
(JSON값/설정/키목록/병합)·JSON예쁘게·JSON경로 전부 마커 인지하도록
연쇄 수정. 부수적으로 "그리고 비단락평가" VM 함정 1건 발견·가드 처리.
- YAML 블록 시퀀스 파서 없음 (
libs/YAML.한선) —key:\n - a\n - b
YAML생성()도 배열 값을 블록 시퀀스로 역직렬화.
- protobuf varint 역직렬화 3중버그 (
libs/프로토버프.한선) — ①한선씨
_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이 아닌 콜론 구분 커스텀 인코딩 —
: 포함 시 오분할, zigzag/고정폭
wire-type/repeated/중첩메시지 미구현(스코프 밖, 별도 과제로 문서화).
- YAML은 중첩 맵 시퀀스(
- 키: 값), flow 인라인 배열([a,b]), 멀티라인
|,>) 미구현(간소화 파서 원 스코프, psv도 M규모로 분류).크라우니코드 학습
신규 패턴 3건 등록: JSON_객체배열_마커구분, YAML_블록시퀀스_파서,
한선씨_floor나눗셈_헬퍼 (사전 search 결과 0건 확인 후 add).