# factory00 v0.1.193 — 28th stable seal (2026-05-17)

> 누적 사이클: v0.1.187 ~ v0.1.192 (6 사이클)
> 직전 안정화: v0.1.186 (27th stable, 2026-05-17)
> 협업자 spec 진행률: 13 / 14 즉시 가능 = **93%** (Tier C-1 MxBridge / C-2 위치결정 = SDK 대기)

## 1. 핵심 변경 — Modbus 시리즈 완결 + MC Protocol 풀스택 신규

본 누적은 협업자 spec Tier C-3 (MC Protocol)·C-4 (Modbus Mapping)·C-8 (TCP Inspector) 영역 풀스택 완성. critic 코드리뷰 6건 (치명 2 + 중대 4) 본 사이클 내 fix.

### 1.1 사이클별 작업

| 사이클 | 작업 | spec |
|---|---|---|
| v0.1.187 | Modbus Mapping P2.1~3 | C-4 — 드래그앤드롭(PointerDown/Move/Up + panel.Pick hit-test) + 충돌 빨간 border + IntegerField 편집 |
| v0.1.188 | Modbus TCP Inspector Panel | C-8 — 상태 배지 + Host:Port + 폴링 통계 + 연결 history 8건 + Reconnect/Disconnect |
| v0.1.189 | Modbus ModbusRegisterType P2.4 확장 | C-4 — DiscreteInput (FC 0x02) + InputRegister (FC 0x04) 추가, 4종 switch |
| v0.1.190 | Mitsubishi MC Protocol Driver P1 | C-3 — 3E frame (= SLMP 3E) TCP 직접 통신, MELSOFT 의존 0, Batch Read/Write Word+Bit |
| v0.1.191 | MC Protocol Component + Events | C-3 — Background Thread + ConcurrentQueue main-thread dispatch + 3 Events (Connection/Value/Tick) |
| v0.1.192 | MC Protocol Inspector Panel | C-3 — ModbusTcpInspectorPanel 패턴 미러, Ribbon Communication 탭 wiring |

### 1.2 critic 코드리뷰 결과 (v0.1.187 r2)

| 등급 | 처리 |
|---|---|
| 치명 #1 — IntegerField stale 콜백 | [완료] fix (`int currentIdx = _map.Entries.IndexOf(e); if (currentIdx<0) return;` 패턴) |
| 치명 #2 — 삭제 버튼 idx 범위 초과 | [완료] fix (같은 IndexOf 패턴) |
| 중대 #1 — PointerUp worldBound vs ScrollView 클리핑 | [완료] fix (`panel.Pick` 실 hit-test helper `IsOverEntriesContainer`) |
| 중대 #2 — border leak (PointerCapture fail) | [완료] fix (`PointerCaptureOutEvent` 안전망 + capture 여부 무관 ClearDropHighlight) |
| 중대 #3 — OnToast 매직 넘버 | [완료] fix (`ModbusPanelToastLevel` enum 도입) |
| 중대 #4 — NextFreeAddress 공백 안 채움 | [완료] fix (0부터 첫 빈 주소 순회, 65536 상한) |

## 2. SSOT 신규/갱신

- `wiki/topics/collab-spec-progress.md` — **신규**. 사용자 명시 (2026-05-17) "스펙 전체 진행도 빌드마다 한번씩 알려줄 것". 매 빌드 갱신 SSOT.
- `Builds/build-title.txt` — 매 사이클 description (진행도 수치 포함)
- `Assets/Scripts/Events/EventBus.cs` — MC Protocol 이벤트 3종 + Publish overload 3종 추가

## 3. 신규 디렉토리

```
Assets/Scripts/Communication/McProtocol/
├── IMcProtocolDriver.cs          (인터페이스 + PlcDeviceType + PlcDeviceCode)
├── McProtocolTcpDriver.cs        (3E frame builder + SendReceive + Batch Read/Write)
├── McProtocolEvents.cs           (Connection/Value/Tick 3 readonly struct)
├── PlcDeviceMap.cs               (디바이스 entry list)
├── McProtocolDriverComponent.cs  (MonoBehaviour + 백그라운드 Thread)
└── McProtocolInspectorPanel.cs   (런타임 UIE 패널)
```

## 4. 회귀 / 미해결 (잔여 deviation)

### Modbus Mapping P2.5~8 (다음 사이클 큐)
- SignalRolePopup 미구현 (현재 후보 이름 prefix로 회피)
- Play Mode ModbusSignalChangedEvent 구독 -> 현재값 실시간 row 갱신 미구현
- .twn 저장에 ModbusAddressMap entries 통합 직렬화 미검증
- DiscreteInput / InputRegister 후보 섹션 미추가 (v0.1.189 enum 확장 후속)

### MC Protocol P2
- 연속 디바이스 그룹화 read 미구현 (현재 entry당 1 device read)
- .twn UnitConfig 직렬화 미통합

### Stage 2 사용자 PC 실 마우스 검증 잔여
- Modbus Mapping 드래그앤드롭 / IntegerField / 충돌 border
- Modbus TCP / MC Protocol Inspector Reconnect / Disconnect click
- Pneumatic Inspector 직선↔회전 토글
- .twn Save->Open 라운드트립 (Win32 다이얼로그)
- Signal Simulator 토글

### SDK 대기
- Mitsubishi MxBridge (Tier C-1) — MX Component v5 사용자 명시 후 진입
- 위치결정 모듈 (Tier C-2) — MxBridge P1 완료 후
- Modbus Serial 실 활성 (Tier C-5) — SerialPort 어셈블리 추가 + 사용자 PC PLC 도착 시점

## 5. 다음 사이클 큐

| 우선순위 | 작업 | 진입 조건 |
|---|---|---|
| 1 | Modbus Mapping P2.5~8 polish | 본 봉인 후 즉시 |
| 2 | MC Protocol P2 그룹화 read + .twn 통합 | Modbus polish 후 |
| 3 | MxBridge | **사용자 SDK 도착 대기** |
| 4 | 위치결정 모듈 | MxBridge P1 완료 후 |

## 6. 외부 URL

- 최신 빌드: https://os-file-server.tail2b816d.ts.net/index.html
- 사이클별 갤러리: https://os-file-server.tail2b816d.ts.net/latest-builds.html
- v0.1.193 stable zip: https://os-file-server.tail2b816d.ts.net/downloads/stable/factory00-windows-x64-v0.1.193-modbus-mc-stable.zip
- v0.1.192 cycle zip: https://os-file-server.tail2b816d.ts.net/downloads/factory00-windows-x64-v0.1.192.zip
