← 목록
기타 2026-07-21 7KB 읽기 8분

요청: 솔루션-M3M4-앱카드

  • 날짜: 2026-07-21 00:39:16
  • 작업 경로: /Users/ef/.claude/projects/-Users-ef/memory

요청 본문

이벤트버스 연동(빌딩·홀·에스텔 M3), 수료 원장·ERP 전표 대사(M4), crowny://solution 앱카드 등록

관련 산출

크라우니 솔루션 앱(solution.crowny.org:9735)의 개발명세 M3·M4 마일스톤 + 크라우니AI 앱카드 완료. 서브에이전트(sonnet) 2대가 한선씨 엔진을 완성했으나 레이트리밋으로 server.js JS 배선 전 중단 → 메인 세션(opus)이 배선·종단검증·마감을 이어받아 완료.

M3 — A7 이벤트버스 연동

  • 엔진 SSOT: 이벤트버스.한선(20함수) + 이벤트버스검증.한선 70/70 assert PASS, STRICT 0.
  • 발행 5토픽(솔루션이 낸다): contract.stage_changed · ledger.posted/refunded · sla.breached · release.deployed · edu.completed → hall(9606)/space(9607) POST /bus fire-and-forget(타임아웃 2s, 실패해도 본 로직 무중단). 발행 이력 data/solapp-bus-out.psv.
  • 구독: building(9605) GET /api/events 폴링(60초, 커서 solapp-bus-cursor.txt 중복방지). building.alarm.* 수신 시 SLA 비상(2h) 티켓 자동 승격(명세 A8 비상 경로). 수신 이력 data/solapp-bus-in.psv.
  • 자체 수신구: POST /bus(hall/space 동일 계약 {source,type,entityRef}→{ok:1}). erp.voucher.posted 통지는 전표 대사로 라우팅.
  • 연동 상태 4상: GET /api/bus/status → hall/space/building=티, estel=타(정직한 갭 — /bus 엔드포인트 부재, 목 데이터로 받은 척 안 함).
실측: 발행 훅이 stage 승격 시 space /bus에 실제 POST 200(out.psv 4줄 확인) · 자체 수신구 erp.voucher.posted 적재 · /api/bus/status estel=타.

M4 — 수료 원장 + ERP 전표 대사

  • 엔진 SSOT: 수료원장.한선(7함수) + 전표대사.한선(10함수) + M4검증.한선 48/48 assert PASS, STRICT 0.
  • 테스트 버그 1건 수정: "최초 발행 중복아님"을 빈 원장(개수 0)에서 판정하도록 순서 교정(엔진 무결, 검증 셋업 오류).
  • 수료 원장: POST /api/completions(씨앗=크레딧 차감 0·운영/전문=차감·재교육=분기크레딧 표식·강사 실명검증 게이트 403). 시설 고유 인원(같은 사람 2과정=1인) 집계 → 계약 completions 동기화(4→5 게이트 근거). GET /api/completions/ledger.
  • 릴리즈 자동 문서: GET /api/releases/:train/doc — 구독 시설 upgrade분(⅓) 적립 = 원가 풀, 배포 시설·집행 배분 첨부.
  • 전표 대사: 거래당 전표 1건(멱등키 event|target|txRef, 중복 발행 차단). GET /api/erp/vouchers?status= · POST /api/erp/reconcile. 대사 4상: matched/amount_mismatch/unmatched/duplicate.
  • 실측: CON-2 stage4→5 게이트 통과(수료 2인)→원장+전표 VCH-1 자동 발행 · 대사 matched→재대사 duplicate · 씨앗 차감0/운영 차감1 · 강사 미검증 403 · 릴리즈 문서 upgrade 풀.

    앱카드 — crowny://solution

    • CrownyBrowser 5지점 배선(FAB 선례 미러): 앱목록.psv(솔루션 카드) · 시작페이지 타일 · 북마크 시드 v15 · normalizeURLString 별칭 · caOpenSolutionInActiveTab(→solution.crowny.org/app).
    • 한선씨 SSOT src/솔루션연결.한선 24/24 PASS, STRICT 0. make ai 빌드 회귀 0.
    • 번들 설치 필수(CLAUDE.md §194): make ai는 바이너리만 만들고 실행 앱 미반영 → install-ai-app.sh로 번들 교체+ad-hoc 재서명. 실행 번들에 caOpenSolutionInActiveTab·crowny://solution 반영 확인. 다음 북마크 채번=v16.

    검증 총계

    한선씨 assert 142건(M3 70 + M4 48 + 앱카드 24), STRICT 경고 0. 기존 회귀(/ /app solutions contracts audit·진단 왕복·3분할 합) 전부 통과.

    크라우니코드

    lookup MISS(신규 도메인) → 생성 → learn 4건: 솔루션_전표멱등_대사4상 · 솔루션_수료차감_게이트근거 · 솔루션_이벤트버스_연동4상_비상승격 · 브라우저_솔루션연결_별칭라우팅_4상.

    함정·교훈

    • 서브에이전트 레이트리밋 중단 = 산출물 확인 먼저: 에이전트가 "server 실패"라고 죽었어도 한선씨 엔진은 디스크에 완성돼 있었다(M3 70/70·M4 48/48). glob no-match(ls data/solapp-bus*)가 명령 전체를 실패시켜 이벤트버스.한선을 "없다"고 오판할 뻔 → Write 거부 덕에 기존 파일 보존. 죽은 에이전트 이어받기 = 파일 실재 확인 후 배선만 이어붙이기.
    • 라우트 200 ≠ 구현됨: /api/erp/vouchers 200이 실은 index.html 폴백(착시). 실제 응답 본문을 봐야 진위 판별.
    • estel 연동은 엔드포인트 부재 = 정직한 갭 표기(타), 목으로 채우지 않음.

    잔여 완료 (2026-07-22)

    estel /bus 실연동 + 운영 콘솔 시각화 마감.

    estel /bus 신설(라이브 서버 crowny-estel/서버.한선 순수 한선씨):

    • _처리버스(수신구, hall/space 동일 계약 {source,type,entityRef}→{ok:1}) + _발행게이트(estel.gate.reached를 솔루션 :9735/bus로 curl -m 2 push) + _처리게이트도달(POST /api/gate/reach {gate}).
    • STRICT 0 컴파일 → 서버.toau 교체 → kickstart 재기동. 회귀(/health·/·기존 라우트) 정상.
    • 실측 체인: POST /api/gate/reach {gate:"QEC.표면코드.d3"} → estel이 솔루션 /bus로 발행 → 솔루션 /api/bus?dir=in에 estel|estel.gate.reached|QEC.표면코드.d3 수신 확인.
    • 솔루션 /api/bus/status의 estel 하드코딩 "타" → 실프로브로 교체(probe 9617). 이제 4상 전부 티(hall/space/building/estel). 갭 해소.
    운영 콘솔 시각화(web/app.html SolModuleOps, 원본 다크브라운 스타일 준수):
    • 우측 패널에 카드 2개 추가 — 생태계 이벤트버스(연동 4상 배지 + 최근 수신 이벤트) · ERP 전표 대사(전표 목록 + matched/전체 카운트).
    • componentDidMount에서 /api/bus/status·/api/bus?dir=in·/api/erp/vouchers fetch(실패 시 조용히 폴백). 라이브 데이터 화면 반영 육안 확인(building.alarm.eq·estel.gate.reached·erp.voucher.posted·VCH-1 matched).
    • 동반 web/app.한선에 시각화 판정 추가(연동배지색/라벨·전표상태색·대사율·소스배지) 13/13 assert PASS, STRICT 0.
    추가 학습: estel_이벤트버스_bus수신구_게이트발행 · 솔루션_운영콘솔_연동4상_전표시각화.

    최종 상태

    • 4대 연동(hall/space/building/estel) 전부 실배선·라이브 티. estel.gate.reached 실수신 체인 확증.
    • 운영 콘솔에서 버스 연동상태·수신이벤트·전표대사 라이브 시각화.
    • 백업: crowny-estel/서버.한선.bak-bus, crowny-solution/server.js.bak-m3m4.
    • 한선씨 assert 누계 155건(M3 70 + M4 48 + 앱카드 24 + 시각화 13).

    잔여 (차기)

    • 솔루션 앱화면 이야기(스토리) 오버레이 한선씨 판정.
    • estel 양자 실행(/api/quantum/run) 완료 시 gate.reached 자동 발행 훅(현재는 /api/gate/reach 수동 트리거).
    • crowny://solution 화면 GUI E2E(타 세션 GUI 자동화 중이라 보류).