7.2 KiB
MBNWEB-20260712-M-R2 기존 종료 대화상자 확인 계획
M-R1은 운영체제 정상 닫기 요청을 정확히 한 번 보낸 뒤, WinUI가 같은 제목을 dialog Window와 제목 Text로 각각 노출하는 정상 구조를 중복 제목으로 오판해 실패 폐쇄됐다. 이 회차는 닫기 요청을 다시 보내지 않고 이미 열린 정확한 중립 대화상자의 PrimaryButton만 한 번 확인하기 위한 별도 confirm-only 회차다. 현재 상태는 계획·도우미 검증 완료, 승인 대기이며 UI 확인과 DISCONNECT/BYE는 실행하지 않았다.
고정 산출물
| 항목 | 크기 | SHA-256 |
|---|---|---|
round-plan.json |
37,950 bytes | EEB5C9102D5A797EB459E79F29932E58E921F33C957842477FD9E0BF993E4EB4 |
round-m-r2-confirm.ps1 |
67,779 bytes | DDEA4081FAECD68ADF7BA1E490FB380EE118115024AB98249FAC1CCC79F00084 |
| 운영/시험 계획 빌더(서로 byte-identical) | 33,459 bytes | C73BEBFE52A3851F4F47DA82F1667B3412780B19A156E5225680EB956C2CE21A |
| 승인 빌더 | 5,391 bytes | 6EDDCD19A4888447A30EABEF34B6100C31842C1986E00CF4804174A47D0647FC |
| 정적 시험 | 9,957 bytes | 8947CEE9004C66A0239FFDCE56EA4EC12D4CA090ABAFB2DE1CAFD7793513E0C0 |
| 승인 문구 템플릿 | UTF-8 text | 11E5EEF315895C20C906ECED4DECB920CC70F04A7BF376010FDA833328210AD4 |
| 이 계획에 채워진 전체 승인 문구 | UTF-8 text | 2DA9CC53A73FC40A96269491A1E7FA29221EFFB0281BEB67B9D68A70707FDD57 |
운영 산출물은 Git 제외 경로
artifacts/pgm-evidence/MBNWEB-20260712-M-R2에 있다. 계획 JSON은 엄격한
UTF-8 파싱에 성공했고, Windows PowerShell 5 정적 검사와 승인 빌더·확인 도우미의
ValidateOnly가 모두 통과했다. 검증 전후 고정 파일 해시는 동일하고 M-R2
승인·실행·confirm dispatch·complete·result 파일 5개는 모두 없다.
감사 중 발견된 이전 계획 35,606 bytes,
57225B876FEAD5784CE0D5F9DEF0A5885A802DEC14015AAC638E9120CB61E5AB은
승인 금지 superseded 증거로만 보존한다.
M-R1과 현재 상태 결박
| 항목 | 기대값 |
|---|---|
| M-R1 계획 | 17,466 bytes, E5D12936867203B83306D0B6D98AC8347DD7E5914CCAEB941528CD866569BC77 |
| M-R1 승인 | 2,707 bytes, 0019696B9354885BB9157F689AAD537E62C9AEB8A8F50C49C1D0629E26CA9B6F |
| M-R1 실행 marker | 4,912 bytes, E188D8E540644B94DD105D8A10CBF5A614563190A8D0FED1099AFE1BACFBE496 |
| M-R1 닫기 요청 journal | 425 bytes, 767648452A11A7BDC8B272D4BB8F9E4DC8D629228938EA682B0C4D60A4C7DE23 |
| M-R1 결과 | 1,914 bytes, 6543B53F1D5D99B707FC2E04A1F09EA61E39714FE468FA7CF029C85A720851C9 |
| M-R1 명령 | CloseMainWindow=1, Invoke=0, retry·송출·DB·직접 CDP/K3D=0 |
| 앱 / CDP | PID 37916 / 34988, 기존 시작 세대와 127.0.0.1:9339 유지 |
| Tornado2 | PID 6972, 기존 시작 세대와 0.0.0.0:30001 listener 유지 |
| 앱↔Tornado TCP | 127.0.0.1:23210 <-> 127.0.0.1:30001 정확히 두 행 |
| Network Monitoring | 142,844 chars, 839882172C79211517E4C3C81EBF95E65B322B6418B086985EE13E917A3F5A37 |
| Round M 이후 증가분 | HELLO 요청·성공 각 1회뿐, 266 chars, 3B4B7946CB345B121880CC1EF904E429A16A367F3AF6DD23FCFFDEF559EAAFF4 |
| M-R1 닫기 뒤 증가분 | 0 chars, BYE·송출 명령 0 |
| PGM | 8×8 표본 64개 RGB 최대값 0, 검은 화면 |
| 안전 부재 경로 | Round M runtime/prepare/config/capability 6개와 M-R1 confirm 파일 2개, 총 8개 |
정확한 UIA 구조
계획은 다음 9개 요소의 RuntimeId, PID, FrameworkId, ClassName, ControlType, Name,
AutomationId, Enabled, Offscreen, 경계 사각형과 부모·형제 관계를 모두 고정한다.
정규화된 구조의 SHA-256은
39253843B55682066E786AA9217BA5420BC7ED97E9BBC0E38A822A36C5696E75이다.
DesktopChildSiteBridge Pane (Win32)
└─ InputSite Pane (XAML)
├─ generic Popup Window: Name=Popup
└─ dialog Window: Name=프로그램 종료
├─ ContentScrollViewer
│ ├─ Text: 프로그램 종료
│ └─ Text: 프로그램을 종료하시겠습니까?
├─ Button: 종료, AutomationId=PrimaryButton
└─ Button: 취소, AutomationId=CloseButton
dialog의 Button은 위 두 개, Text는 위 두 개만 허용한다. 앱 전체에서 종료 이름의
Button은 하나여야 하고, PrimaryButton은 활성·화면 표시·InvokePattern 지원 상태여야
한다. pending, prepared, outcome-unknown 또는 방송 경고 문자열이 나타나면 확인하지
않는다. InputSite의 전체 직접 자식 RuntimeId 집합은 정확히 9개, 그중 Window
부분집합은 generic Popup과 dialog Window 2개로 고정한다.
승인 후 허용되는 유일한 흐름
- 계획, M-R1 증거, 프로세스·창·listener 세대, TCP, Network 로그, 검은 PGM과 정확한 UIA 구조를 모두 읽기 전용으로 재검증한다.
- 승인 파일과 계획·도우미 해시를 확인하고 내구성 실행 marker를 기록한다.
- 전체 상태와 승인 freshness를 다시 확인한 뒤 confirm may-have-issued journal을
CreateNew,WriteThrough,Flush(true)로 먼저 기록한다. - journal 뒤 M-R1/M-R2 control file, 전체 외부 상태, UIA RuntimeId와 구조 해시,
계획·도우미·승인을 다시 확인한다. 새로 얻은 정확한 PrimaryButton element의
UIA
Invoke를 한 번만 호출한다. - 앱·CDP·9339 listener와 기존 active TCP가 사라지고 Tornado2 세대·창·30001 listener가 유지되는지 확인한다. Network suffix는 BYE 요청 정확히 1회와 성공 0~1회만 허용하며 PGM은 계속 검은 화면이어야 한다.
CloseMainWindow 재호출, 다른 UI Invoke, 좌표 클릭·키 입력, PREPARE, TAKE IN,
NEXT, Page NEXT, TAKE OUT, DB write, 재연결, 재실행, 직접 CDP/K3D 명령,
강제 종료, 재시도와 Tornado2 창 복원은 허용하지 않는다. 어느 경계든 달라지거나
결과가 불명확하면 추가 명령 없이 즉시 중단한다.
정확한 승인 문구
아래 한 줄을 그대로 승인해야 한다. 계획 해시가 다르면 승인 효력이 없다.
회차 MBNWEB-20260712-M-R2의 확인 전용 계획 SHA-256 EEB5C9102D5A797EB459E79F29932E58E921F33C957842477FD9E0BF993E4EB4을 승인한다. M-R1 close-result SHA-256 6543B53F1D5D99B707FC2E04A1F09EA61E39714FE468FA7CF029C85A720851C9가 outcome-unknown 상태이고, 운영체제 정상 닫기 요청 CloseMainWindow가 이미 정확히 1회 소비되었으며 확인 Invoke는 0회임을 확인한다. 현재 K3D 라이선스가 유효하고 Tornado2 PID 6972가 지정된 주 프로그램임을 확인하며, 현재 실행 중인 MBN_STOCK_WEBVIEW PID 37916, 시작 시각 2026-07-12T18:59:06.3837959Z에 이미 열려 있는 '프로그램 종료' 대화상자가 '프로그램을 종료하시겠습니까?'라는 중립 문구와 '종료' PrimaryButton 및 '취소' CloseButton만 정확히 표시할 때, 기존 '종료' 확인 Invoke 정확히 1회와 그 정상 종료 과정에서 발생하는 DISCONNECT/BYE 최대 1회만 승인한다. CloseMainWindow 재호출, 다른 UI Invoke, PREPARE, TAKE IN, NEXT, Page NEXT, TAKE OUT, DB write, 재연결, 재실행, 직접 CDP/K3D 명령, 프로세스 강제 종료, 재시도 및 Tornado2 창 복원은 승인하지 않는다. 사전 조건이 하나라도 달라지거나 결과가 불명확하면 추가 명령 없이 즉시 중단한다.