WS-N2 완료 — MM 융합 마감 (PR #22, feat/n2-mm-fusion)
ADR-002 "MM=협업 허브" 서사의 마감. 저장 이벤트가 MM 리드알림 채널로 흐르고, 콕핏·시트의 "배정됨"이 실명("김상담")으로 바뀐다.
무엇을
- core
GET /t/{tenant}/users/labels(신규, append-only): assignee_id→실명 최소투영(id·name만). 인증필수·역할무관·테넌트격리. - web
listUserLabels(무세션/실패 시 {} 폴백) +assigneeLabel(l, labels?)additive(기존호출 무변경) → 담당 실명 3화면(고객상세·리드큐 카드 담당span 신규·고객시트 use client 자체로드). - web
mm-notify.postLeadNotice:NEXT_PUBLIC_MM_NOTIFY_CHANNEL게이트,POST /api/v4/posts(MmBridge.createPost 동일 REST) → RecordForm 저장 성공 후 fire-and-forget(미설정/무세션/실패 무동작 → 저장 UX 무영향). - mm-init.sh
리드알림채널 idempotent 생성 + 상담원 조인 + id를 .env.local.mm(미출력).
검증 (증거)
- core pytest 146 pass(+3) · web vitest 64 pass(+18) · design-tokens25·mm-bridge3 무손상 · next build exit0(11라우트) · 인라인 hex(N2 변경파일) 0건.
- MM 실게시 라이브 스모크 PASS: taejin 세션토큰 → POST /posts 201 → 리드알림 채널 리드백 FOUND(게시자 taejin). 토큰 미출력.
경계
- core-api.ts 접촉 = assigneeLabel additive 1함수만(N1 무접촉). 시트 담당span=N2 / SHEET_EXTRAS=N3 → PM 머지 병합.
- /users/labels 라이브는 core(:8000) 미기동 → pytest 3건으로 대체검증(X-MM-Token 위임은 M4 라이브 불변).
머지는 PM 세션. 후속 N1(푸시 실시간)·N3(시트 실데이터) 별도 WS.
Maester: result_20260706_6822d3