검증 생태계 정리 — 중복명 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 소비자 다수라 미개명 — 고수준 테스트는 경로.한선으로 이미 분리됨.