← 목록
기타 2026-06-20 5KB 읽기 5분

검증 생태계 정리 — 중복명 reconcile + 오염 라이브러리 복구

개요

검증.한선 이름이 두 가지 다른 라이브러리(티옴타 합의점수 판정 vs 입력값 검증)에 중복 사용되어 고수준 테스트가 잘못된 버전을 import → 글자수범위 등 함수 누락으로 컴파일 실패. 추가로 옛 clike_to_rpn.py RecursionError 출력으로 오염된 라이브러리 5종이 잔존. 직접·왕복검증(hanseonc_high 컴파일 + crownyc run + 값 단언)으로 근본 해결.

무엇을 했는지

① 이름충돌 분리 (검증 reconcile)

  • 신설 libs/검증입력.한선 (= pkg/libs/, 하드링크): 입력값 검증 8함수
  • 빈값인가 숫자범위 글자수범위 이메일인가 경로안전 SQL안전 XSS안전 필수검증 (내장함수만 의존)
  • 정리 검증.한선: 말미에 덧붙어 있던 빈값인가/숫자범위 제거 → 티옴타 합의점수 판정 전용으로 환원
  • (검증_합의점수 검증_판정 검증_보상가중치 검증_조정보상 검증_자가검증)
  • import 수정 tests/고수준_라이브러리.한선 + pkg/tests/...: 검증.한선검증입력.한선
  • pkg/tests/ 사본의 잘못된 상대경로(../pkg/libs/../libs/)도 교정
  • 결과: 18/18 통과 (두 사본 모두)
  • ② 신규라이브러리 테스트 reconcile

    tests/고수준_신규라이브러리.한선가 존재하지 않는 API를 호출 → 라이브러리 정렬:
  • import 에러처리.한선(다른 네이밍) → 결과.한선 (Result/Option, 성공/실패/성공인가/실패인가 보유)
  • 결과.한선에 별칭 추가: 결과값(=값꺼내기), 결과값또는(=기본값)
  • import 파일시스템.한선(RPN 가상파일시스템, 부적합) → 신설 경로.한선 (경로문자열 헬퍼)
  • 파일이름 디렉토리 확장자 확장자없는 (basename/dirname/ext/stem)
  • 행렬.한선에 접근자 추가: 행렬행수 행렬열수
  • 결과: 13/13 통과 (두 사본 모두)
  • ③ 오염 라이브러리 복구 (Python Traceback 덤프 → 최소 한선씨 스텁)

    원본 유실(git 이력 없음, 소비자 없음) → 파일명 의도대로 컴파일·동작하는 최소 라이브러리로 복구:
    • 패키지.한선 — 패키지 메타데이터(이름/버전/의존성)
    • 셸.한선 — 명령줄 토큰분리/명령이름/인자목록
    • 의미REPL.한선 — REPL 세션 상태(이력/횟수)
    • 모바일터미널.한선 — 터미널 스크롤백 버퍼
    • 회원서버.한선 — 회원 등록부(아이디→이름)
    • 함수 단위 왕복검증 통과(ng=0). (왕복 중 함수()[i] 직접 인덱싱 버그 1건 발견·수정 → 중간변수 경유)

    ④ 컴파일 전수 재확인

    • tests/*.한선 64/64 hanseonc_high 컴파일 0실패 (SSOT 기준선 상회)
    • 잔존 Traceback 0건 (grep 확인). libs ↔ pkg/libs 10개 파일 전부 동기(하드링크)

    관련 파일

    • 신설: libs/검증입력.한선, libs/경로.한선 (+ pkg/libs/ 하드링크)
    • 수정: libs/검증.한선, libs/결과.한선, libs/행렬.한선
    • 복구: libs/{패키지,셸,의미REPL,모바일터미널,회원서버}.한선
    • 테스트: tests/고수준_라이브러리.한선, tests/고수준_신규라이브러리.한선 (+ pkg/tests/)

    [2026-06-20 추가] 잔여 작업 해결

    ⑤ 폼 측 검증 충돌 — 고수준 재작성으로 근본 해결

    조사 결과 폼.한선컴파일 불가능한 미완성 RPN이었다(전수 진단):
    • 사용자 함수를 맨이름 호출(값읽기/규칙적용) — hanseonc_rpn은 맨이름 호출 미지원(호출 opcode 필요) → "미인식 단어"
    • ==/!= 사용 — RPN 키워드 아님(같다 등이어야)
    • 맵생성()·출력값(...)고수준 단편 혼입
    • 가져오기 검증 → 합의점수 검증.rpn.한선 로드(입력검증 함수 부재)
    → 소비자 test_form.한선고수준이므로, 폼.한선고수준 라이브러리로 재작성(가져오기 "검증입력.한선"). 구버전 필수 규칙이 빈값에서 오류를 안 내던 역전 버그도 정정.
    • 검증: test_form.한선 컴파일+실행 1차 4오류/무효 · 2차 2오류/무효 · 3차 0오류/유효 · 최종 "크라우니" (왕복검증)

    ⑥ 행렬 import 부작용 제거

    행렬.한선 상단 데모코드(출력값)를 행렬_자가검증() 함수로 격리 → import 시 자동실행 안 함. 신규 13/13 유지.

    RPN 병렬(검증입력.rpn.한선) — 보류 (toolchain 한계)

    hanseonc_rpn이 추출기 출력의 -(음수 리터럴)·== 미인식 → 음수 반환이 누락되어 체인 결과가 깨짐. 손으로 쓴 단순스택 방식도 함수간 맨이름 호출 미지원으로 불가. 작동하는 RPN 소비자도 없으므로(폼이 고수준화됨) 틀린 파일을 남기지 않고 제거, 본 한계 해소 후 재생성 권장.

    잔여 이슈 (범위 외 — 별건)

    • 검증.rpn.한선(합의점수) 자체도 if/elif 반환값 누락 등 미완 — RPN toolchain(-/==/맨이름호출) 보강이 선행.
    • 파일시스템.한선은 RPN 내용이 .한선 이름 점유(컨벤션상 .rpn.한선). RPN 소비자 다수라 미개명 — 고수준 테스트는 경로.한선으로 이미 분리됨.