← 목록
기타 2026-07-30 5KB 읽기 5분

python3 전폐 웨이브1 — 비훅 저위험 5개 전환

개요

2단계 python3 전폐 작업의 웨이브1. 훅(hook)이 아니라 깨져도 세션이 죽지 않는 저위험 스크립트 5개(civ.sh, crowny-tier.sh, crownyforge-trend-snapshot.sh, msg-보고.sh, 경로찾기.sh)를 대상으로, 파일럿에서 확립된 libs/훅JSON추출.toau 재사용 패턴을 그대로 적용하고 python-debt(자생율.sh python-debt) 감소를 실측했다.

무엇을 했는지

라이브러리 확장 (재사용 인프라 보강)

  • libs/JSON본문파서.한선에 배열 지원 신규 추가:
json본문_배열블록 / JSON본문_배열길이 / JSON본문_배열길이_경로 (따옴표·이스케이프 인지 대괄호 균형 카운팅, top-level 쉼표수+1). 기존엔 "미지원: 배열"이었던 부분.
  • libs/훅JSON추출.한선MODE 환경변수 분기 추가:
  • MODE=arrlen → 배열 길이(미발견=-1, 빈배열=0)
  • MODE=num → 숫자 값(미발견=0, python .get(key,0)와 동일 기본값)
  • MODE 미지정 → 기존 문자열 추출(하위호환 100% — 기존 사용처
  • 디자인이식가드.sh로 회귀 재확인 완료)
  • 재컴파일해 /Users/ef/CrownyOS/crownyc/libs/훅JSON추출.toau에 배포
  • (처음에 /tmp에만 컴파일해두고 실배포를 빠뜨려 crowny-tier.sh가 전부 빈 값을 내는 사고가 있었음 — 재배포 후 재검증으로 잡음).

    5개 파일 전환

    파일전환방식비고
    civ.sh훅JSON추출.toau (KEY=이미지ID, JIN=임시파일)실제 image.crowny.org:9872 라이브 호출로 end-to-end 검증(PNG 33306B 산출 동일)
    crowny-tier.sh훅JSON추출.toau (list/set: 점경로 KEY=permissions.defaultMode + MODE=arrlen KEY=permissions.allow)current는 python3 잔존 — 아래 스펙이슈 참조
    crownyforge-trend-snapshot.sh훅JSON추출.toau (MODE=num KEY=snapshot_count)fab 서버 다운 시 skip 경로 동일 동작 확인
    msg-보고.sh순수 bash 파라미터확장(JSON 조립, 5고정키+1동적값)JSON 파싱이 아니라 문자열조립+sys.argv이므로 라이브러리 재사용 대신 bash 직접 구현 — 7개 케이스(따옴표/백슬래시/개행/한글/빈문자열 등) byte-identical
    경로찾기.sh소부분(basename)은 bash 파라미터확장, 대부분(NFC 디렉토리 스캔)은 python3 잔존아래 잔여 참조

    회귀 검증

    5개 전부 bash -n 통과. 값 비교는 신/구 스크립트를 각각 실행해 stdout 완전 일치(diff 무차이) 확인. crowny-tier.sh set은 35세션 공유 파일을 실제로 건드리면 안 되므로, 동일 연산을 샌드박스 사본에 대해 검증(allow/mode 100% 일치)하고 실제 set 실행은 하지 않음.

    잔여(전환 불가) — 2건

    1. crowny-tier.sh current: $LOCAL(=settings.local.json)이 35세션
    공유로 실측 835KB(allow 8807개)까지 자란 상태. 훅JSON추출.toau읽기()가 ~64KB에서 조용히 절단되는 VM 한계(가드레일 §284) 때문에 배열 균형매칭이 끝을 못 찾고 -1을 오반환한다(실측: 7개 계층파일<수KB>은 100% 일치, 이 라이브 파일만 실패). 청크 read 우회는 이번 웨이브 범위 밖 — python3 유지.
    1. 경로찾기.sh 디렉토리 스캔부(NFC 정규화+2그램): JSON 파싱도 단순
    sys.argv 처리도 아니라 unicodedata.normalize('NFC', …) 유니코드 정규화가 핵심 로직. bash/awk엔 네이티브 유니코드 정규화가 없고, 이 도구 자체가 "NFD/NFC 바이트 불일치 오판정" 사고 재발방지용이라 억지 bash 재구현이 오히려 그 사고를 재도입할 위험 — python3 유지. (참고: 판정 코어 경로찾기.한선_NFC정규화도 동일 이유로 체계()+python3 위임 — 근본원인이 같아 이번 웨이브에서 함께 손대지 않음, 별도 과제.)

    python-debt 실측

    ~/.claude/scripts/자생율.sh python-debt: 41개 → 38개 (civ.sh, crownyforge-trend-snapshot.sh, msg-보고.sh 3건 완전제거). crowny-tier.sh와 경로찾기.sh는 실제 잔존 python3 호출이 있어 정당하게 목록에 남음(위 잔여 참조).

    주의: 이 스캐너는 grep -E '\bpython3?\b'로 파일 전체(주석 포함)를 스캔한다. 전환 완료 파일에 "python3 전폐" 같은 문서화 주석을 남기면 실제 호출이 없어도 오탐된다 — 이번 작업에서 "파이썬3"(한글 표기)로 바꿔 우회.

    관련 파일

    • /Users/ef/.claude/scripts/civ.sh
    • /Users/ef/.claude/scripts/crowny-tier.sh
    • /Users/ef/.claude/scripts/crownyforge-trend-snapshot.sh
    • /Users/ef/.claude/scripts/msg-보고.sh
    • /Users/ef/.claude/scripts/경로찾기.sh
    • /Users/ef/CrownyOS/crownyc/libs/JSON본문파서.한선 (배열 지원 신규)
    • /Users/ef/CrownyOS/crownyc/libs/훅JSON추출.한선 / .toau (MODE 분기 신규)
    • 백업: /Users/ef/.claude/scripts/.bak-웨이브1/*.20260730131049.bak

    잔여 이슈

    • crowny-tier.sh current / 경로찾기.sh NFC 스캔 — 위 사유로 python3 유지(정직한 잔여).
    • pkg/libs 사본(CrownyOS/crownyc/pkg/libs/훅JSON추출.한선 등)은 npm 패키지 빌드
    산출물이라 이번 웨이브에서 동기화하지 않음(범위 밖, 필요 시 별도 재빌드).