Crowny FAB 엔진 (FAB엔진.한선) — 계산 SSOT 1차 구현
개요
fab.crowny.org(블록체인 기가팩토리 네트워크) 디자인 핸드오프(
/Users/ef/Downloads/design_handoff_crowny_fab/Crowny FAB.dc.html)의
renderVals() 산술 로직을 한선씨로 이식. EV엔진.한선(크라우니EV) 스타일(함수 정의 + assert 자체검증) 참조.
무엇을 했는지
/Users/ef/crowny-fab/FAB엔진.한선 신규 작성 (약 320줄, 함수 40+ · assert 94개).
- 함수군 7개:
1. 네트워크 KPI — 60공장 상태규칙(down=n13, maint=n%17==0, ramp=n%23==0, 그외 run) → 가동수 54/60 → 네트워크 레이트 600÷가동수(11.1초/대)
2. 로봇 부하 재배분 — 4대 중 N대 장애 → 잔여부하 25→33→50→100%, 택트 라벨(정상/+9%/+24%/정지—우회), 토스트 유형 판정
3. 수급 커버리지·폴백 — 자재 5종 커버리지일수(12일 미만 적색), T1/T2/T3 상태기계(t1장애 분기)
4. 생산계획 배분 — 옵션 킷 커버리지→상태배지(<90%=증산 규칙화, 5개 실측값 100% 일치)
5. 휴먼·AI 정렬 — human===agent 정렬판정, 전항목(사람=1 AND 에이전트=1) 일치해야만 서명가능(단순 매치보다 엄격)
6. 체인 블록 — 유형 5종(VIN/QC/SUPPLY/SOP/ROBOT) 생성 + 간이해시(폴리노미얼 rolling hash mod 999983, 결정론 — 무작위/시간 미의존)
7. 4상 판정 래핑 — 판정_FAB_종합(가동수,최소자재일수,로봇장애수,서명가능) → 티/옴/타/음 (우선순위: 음>타>옴>티, EV엔진 검수_종합 관례 동일)
검증
bashcd /Users/ef/CrownyOS/crownyc
./hanseonc_high /Users/ef/crowny-fab/FAB엔진.한선 > /tmp/fab엔진.toau && ./crownyc run /tmp/fab엔진.toau
# → "PASS 전항목"
94개 assert 전부 PASS (실패 0). 기대값은 dc.html JS 산술을 손으로 재계산해 대조.
VM 함정 대응
- 나눗셈 자연반올림 확인: 600/54=11.111 → x10=6000/54 자연반올림=111 → "11.1" (JS toFixed(1)과 일치 확인, assert로 고정).
- 100/(4-장애수) 자연반올림이 JS Math.round와 일치함을 실측 확인(1장애: 100/3=33.33→33).
% 균형나머지 함정: 이 파일은 전부 n%17==0 형태의 "나누어떨어지는가" 판정만 사용해 균형/절단 나머지 방식과 무관 — 함정 회피 확인.
- 함수 재호출 배열 지역변수 함정: 이 엔진의 함수는 전부 스칼라만 반환(배열 지역변수 없음) — 그래도 공장가동수·로봇부하_퍼센트는 2회 호출 assert로 회귀 검증.
- 간이해시는 음수 나머지 보정(
h<0이면 +999983) 적용.
관련 파일
/Users/ef/crowny-fab/FAB엔진.한선 (신규, 산출물)
/Users/ef/Downloads/design_handoff_crowny_fab/Crowny FAB.dc.html (스펙 원본, renderVals 468~935줄)
/Users/ef/Downloads/design_handoff_crowny_fab/README.md (데이터 모델·체크리스트)
- 참조 스타일:
/Users/ef/crowny-ev/EV엔진.한선, /Users/ef/crowny-ev/테스트.한선
잔여 이슈
- 이 파일은 과제 검증 커맨드(
hanseonc_high FAB엔진.한선 단독 컴파일·실행)를 만족시키기 위해 assert 테스트를 같은 파일 top-level에 포함했다.
fab.crowny.org 서버가 이 엔진을 라이브러리로
가져오기할 계획이면, EV엔진 패턴대로 "8. 자체 검증" 절을 별도
테스트.한선으로 분리하고
FAB엔진.한선에서는 제거해야 한다(가져오기 시 top-level 문 실행 함정 — 서버 기동 시 매번 assert가 재실행되는 것은 무해하지만 비효율).
- fab.crowny.org 실서비스 배선(서버.한선/라우트)은 이번 범위 밖 — 계산 SSOT만 구현.
- 자재 바폭(%) 등 CSS 표시용 헬퍼는 정확도보다 로직 완결성 위주로 구현(스펙에 고정 표시값 없음).