2단계 구축 B1: 공동지시생성 (크라우니코드+패블 공동 → 멀티스텝 7레벨 지시)
개요
복합명령(다중작업)을 크라우니코드가 결정론 분해하고, 각 하위작업을 갑옷라우터로 라우팅해 멀티스텝 지시를 내는 2단계 구축(Stage1이 못하던 "분해+공동지시"). 패블이 스텝 순서·의존성·누락을 검토하는 보강 슬롯 포함.
무엇을 했는지
공동지시생성.한선(한선씨, hanseonc_high) — 환경변수CMD를 받아 연결어(그리고/그 다음/->/→/./및)로 하위작업을 1패스 스캔 분해,스텝N|<하위작업>1줄씩 출력. 단일작업이면 스텝1만. 전체치환() 미사용(힙주의, 부분()+수동스캔).~/.claude/scripts/공동지시.sh— 공동지시생성.toau로 스텝 분해 → 각 스텝을 갑옷라우터.한선(유형·도구)+작업구분.sh(7레벨)로 통과 → 스텝별 유형/레벨/도구/담당모델/검증가이드/도구화 힌트 출력 + "패블 보강:" 슬롯(순서·의존성·누락 검토 지시).- 자가치유 컴파일 — 공동지시생성.한선/갑옷라우터.한선 각각 4항 mtime(소스/바이너리/hanseonc_high/crownyc) 체크로 자동 재컴파일. bash 변수 전부 ASCII.
- 테스트 —
/tmp/공동지시테스트.sh: 10개 복합명령(그리고/그 다음/->/→/및/". " 6종 연결어 커버) → 기대 스텝수·기대 레벨(7레벨) 대조. 10/10 PASS.
VM 함정 신규 실측 (2026-07-12)
최상위(함수 밖) 조건분기 안의 반환은 무한루프. 갑옷라우터.한선과 동일한 패턴(만약 (글자수(c)==0) { 출력값(...) 반환 0 })을 최상위 스코프에 그대로 썼더니, CMD가 빈 문자열일 때 734.6MB 출력 후 강제종료(exit 144)되는 폭주가 실측됨. 갑옷라우터.한선 자체는 호출부(크라우니갑옷.sh)가 [ -z "$CMD" ] && exit 0로 사전 가드해서 실전에서 이 경로를 타지 않아 잠복해 있던 것으로 추정 — 갑옷 자산은 수정금지(참조만)이므로 그대로 두되, 신규 코드는 최상위 반환 자체를 쓰지 않고 전체를 아니면 블록으로 감싸는 패턴으로 우회. 공동지시.sh도 방어적으로 [ -z "$CMD" ] && exit 1을 셸 레벨에서 선가드.
관련 파일 경로
/Users/ef/CrownyOS/crownyc/공동지시생성.한선— 분해 코어(한선씨)/tmp/공동지시생성.toau— 컴파일 산출물(자가치유로 재생성됨, 정본 아님)/Users/ef/.claude/scripts/공동지시.sh— 래퍼(자가치유+라우팅+7레벨+출력 조립)/tmp/공동지시테스트.sh— 10케이스 회귀 테스트- 참조(수정 안 함):
/Users/ef/CrownyOS/crownyc/갑옷라우터.한선,~/.claude/scripts/크라우니갑옷.sh,~/.claude/scripts/작업구분.sh,~/.claude/scripts/도구화.sh
잔여 이슈
- 공백만 있는 CMD(
" ")는스텝1|(빈 콘텐츠)를 출력 — 무한루프는 아니지만 래퍼에서 빈 STASK는 건너뛰므로 실사용 영향 없음. 필요시 코어에 트림후 재검사 추가 가능. - 연결어 사전이 고정 6종(그리고/그 다음/->/→/". "/및) — "그리고 나서", "이어서" 등 추가 연결어는 아직 미커버. 확장 시
델매치()에 케이스만 추가하면 됨(구조 변경 불필요). 공동지시.sh의 스텝별 라우팅은 갑옷라우터.한선(코드/지식/철학/분류/생성 5분류, 규칙 기반)만 사용 —크라우니갑옷.sh의 llm/philo 토큰0 조회(HIT/MISS)는 의도적으로 미호출(배치 다건 처리 시 외부 프로세스 호출 비용 회피, 순수 라우팅만 필요하므로).