nexus 규칙표 편집 UI + 규칙검증 정본 + 코드 전체 체크
개요
비개발자가 웹에서 규칙표(승인·배분·일정)를 편집하는 UI를 nexus 감사 콘솔(:9802)에 추가.
검증 로직을 규칙검증.한선 정본으로 단일화. 넥서스 프로덕션 체인 코드 전체 체크.
무엇을 했는지
규칙 편집 UI (감사서버.js)
- 셀 인라인 편집·행추가/삭제·순서이동(위→아래=평가순 first-match)·사상 드롭다운(티/옴/타/음)
- 엔드포인트: GET /api/rules?name= (조회) · POST /api/rules/check (형식+충돌검사) · POST /api/rules/save (백업+저장)
- 안전 3중: ①화이트리스트(승인규칙/배분규칙/일정규칙만, 경로주입 ../etc 404 차단) ②형식검증 fail-closed(위반 저장 차단) ③저장 전 .bak 백업 + 규칙검사.py 충돌검사
- 저장 즉시 규칙엔진 반영(what-if 재평가로 확인)
규칙검증.한선 정본 (단일 SSOT)
- libs/규칙검증.한선: 형식검증(우선=숫자·결정 비어있지않음·사상∈{티,옴,타,음}·조건형식 필드op값)
- 감사서버.js 행검증()이 규칙검증.toau 위임(JS는 PSV | 안전만 — 구분자라 한선씨 도달불가)
코드 전체 체크
- 넥서스 한선씨 정본 14/14 컴파일(규칙엔진·규칙검증·도메인판별·승인/배분/일정판정·위험판정/분류/등급·명령행동/해석·사상인지/해결·의미어라우터_계층)
- 프로덕션 JS 10/10 구문(넥서스·승인규칙엔진·배분/일정/조회엔진·의사결정코어·명령실행기·실행핸들러·슬롯추출·감사서버)
- 5도메인 스모크 6/6(승인옴·배분티·일정티·조회티·명령옴·파괴명령음→승인큐 이관)
정직한 스코프 (74 JS 무차별 재작성 안 함)
crowny-butler에 JS 74개 있으나 대부분 일회성 실험·측정·데모(밴드LL테스트·입력재측정·입출력통합v2~4 등).
넥서스 프로덕션 JS는 이미 한선씨 정본 위임 확인(규칙엔진·도메인판별·승인판정·위험분류·명령행동 등).
실제 미동반 로직은 이번에 JS로 쓴 규칙 행검증뿐 → 규칙검증.한선으로 해소. 무차별 재작성=저가치라 미실시.
관련 파일
- /Users/ef/crowny-butler/감사서버.js (규칙 편집 UI + 엔드포인트)
- /Users/ef/crowny-butler/libs/규칙검증.한선 (형식검증 정본)
- /Users/ef/crowny-butler/규칙검사.py (충돌 정적검사)
- /Users/ef/crowny-ai/public/hansuner/report/index.html (R37)
잔여 이슈
- 규칙검사.py(충돌·미도달)는 아직 Python — 한선씨화 후보(implies 팩트공간 포함관계 로직).
- 조회엔진/의사결정코어/슬롯추출 JS는 의미어조회.sh·명령실행기 위임(간접) — 직접 한선씨 정본화는 별도.
추가 (규칙검사 한선씨화 — 같은 날, R38)
규칙 무결성 정적검사(규칙검사.py)를 libs/규칙검사.한선으로 한선씨화.
- 튜플·중첩맵 없는 한선씨에서 조건을 절(clause) 단위 직접 파싱(;AND, op = <= >=)으로 재구현.
- 핵심: 조건동일(절집합 일치)·제약함의(op별 포함)·함의(팩트공간 a⊆b = b의 각 절이 a에 보장되면 참).
- Python 원본과 전 케이스 동일출력 대조: 정상(승인규칙2·배분규칙)·모순·미도달(shadow)·catch-all(없음/마지막아님).
- 감사서버.js 충돌검사()가 규칙검사.toau stdin 위임 → 감사서버 python3 호출 0(전량 한선씨 정본).
- 규칙검사.py=참조·대조용 보존(상단 정본이관 표기).
→ 규칙 편집·검증·충돌검사 전 경로 한선씨 단일 정본(규칙엔진·규칙검증·규칙검사). 잔여이슈 해소.