규칙저장소 → 셀코어 룰엔진 브리지 (2026-07-07)
개요
오늘 진행된 std/규칙저장소 폴더링·재검토(INDEX.md)에서 확인된 핵심 발견 —
"규칙저장소.dat(33,488줄)는 harvest 전용 쓰기전용 로그이며, 셀코어 E-룰엔진
(룰생성/룰조건추가/룰변경추가/룰엔진실행)에 실제 로드하는 코드가 없다" — 를
해소하는 다음 단계 작업. 보존가치 있는 규칙(lint 19건 + rule 2건 전량, 그리고
condition.psv 27,846건 중 웹모드인가() 보일러플레이트를 제외한 고빈도 상위
30종)을 셀코어 룰 객체로 실체화해 "실행되는 룰"로 전환했다.
무엇을 했는지
- 큐레이션:
condition.psv(27,846건, 이 VM 빌드의 버퍼잘라 비영오프셋
sort|uniq -c)으로
웹모드인가() 보일러플레이트(2,467건, 8.9%)를 제외한 상위 30종을 선정해
std/규칙저장소/조건상위30.psv(빈도|패턴|출처, 3컬럼)로 저장.
- 브리지 도구 작성:
std/규칙브리지.한선— lint.psv(19)/rule.psv(2)/
룰이름|우선순위|조건슬롯|연산자|값|변경슬롯|새값|출처)로 파싱·직렬화해
std/규칙저장소/브리지룰셋.psv에 기록.
- lint 다중파이프 함정(19건 중 1건이 "&&"/"(||)" 패턴 자체에 리터럴 파이프를
포함해 단순 분리시 컬럼이 9개로 갈라짐)을 극성토큰("타"/"옴"/숫자) 좌→우
스캔으로 해결.
- condition 패턴 파싱: 괄호 열림/닫힘 카운트 비교로 "비교식(X op V)"과
"함수콜 절단형(함수(인자), 원래 truthy 체크)"을 구분, 후자는
!= 0(진리값 관측)으로 변환.
- 함정 실측: x = x + 함수호출() 누적이 조용히 소실되는 VM 함정(기존
메모리 feedback_hanseon_accum_funcall과 동일 패턴)을 이번 작업에서도
재현·수정 — 매 브리지 함수 내부의 문자열 누적을 임시변수 분리로 고쳐
51행이 온전히 직렬화되도록 함(수정 전엔 조건 30행만 남고 lint+rule
21행이 소실됐었다).
- 슬롯 격리 설계: 셀코어 27슬롯 레이아웃의 데이터 영역을 카테고리별로 분리
- 실증 데모:
std/규칙브리지데모.한선— 브리지룰셋.psv 51건을
룰생성/룰조건추가/룰변경추가로 셀코어에 등록하고, 서로 다른 카테고리를
대표하는 샘플 셀 3종에 룰엔진실행을 실행. 컴파일+실행 검증 완료:
[전] 셀1.슬롯21=1 슬롯22=없음 → [후] 슬롯22=1 (rule자동추출_1, 우선순위1100)
[전] 셀2.슬롯18=6 슬롯19=없음 → [후] 슬롯19=1 (lint0_한선씨함정검사:논리연산자, "&&" 매치)
[전] 셀3.슬롯16=5 슬롯17=없음 → [후] 슬롯17=1 (cond0_루트_gt, 빈도778 최우선)
총 적용수 = 3 / 셀 3개 전량 발화
- INDEX.md 갱신:
std/규칙저장소/INDEX.md에 "6. 브리지 완료(2026-07-07)"
- 크라우니코드 학습:
crownycode-learn.sh add로 3건 등록
관련 파일
/Users/ef/Downloads/CrownyTVM/std/규칙저장소/조건상위30.psv— 큐레이션 입력(30줄)/Users/ef/Downloads/CrownyTVM/std/규칙브리지.한선— 브리지 변환 도구/Users/ef/Downloads/CrownyTVM/std/규칙저장소/브리지룰셋.psv— 산출 룰셋(51행, 8컬럼)/Users/ef/Downloads/CrownyTVM/std/규칙브리지데모.한선— 실증 데모/Users/ef/Downloads/CrownyTVM/std/규칙저장소/INDEX.md— §6 브리지 완료 섹션/Users/ef/Downloads/CrownyTVM/std/셀코어.han— E.룰엔진 API(룰생성/룰조건추가/
잔여 이슈
- condition.psv 나머지 27,816건(상위30 제외)은 여전히 미브리지 — 버퍼잘라
- assignment/return/function/datastructure/iteration(4,569건)은 조건→액션
- 이번 브리지의 슬롯 매핑은 "카테고리 1개당 관측/발화 슬롯 1쌍" 단순화다.
크라우니코드
lookup HIT 3(규칙저장소_레코드분류 계열 기존 패턴) / MISS 0 / learn 3 (규칙브리지_lint변환, 규칙브리지_condition파싱, 규칙브리지데모_룰엔진로드)