From 5cb1aaca8f2624f3d824cbd0577e0a2278d89876 Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sun, 12 Jul 2026 22:52:55 +0900 Subject: [PATCH] docs: freeze round j live validation plan --- .../LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md | 112 ++++++++++++++++++ docs/RELEASE_1_0_5_AUDIT.md | 11 ++ 2 files changed, 123 insertions(+) create mode 100644 docs/LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md diff --git a/docs/LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md b/docs/LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md new file mode 100644 index 0000000..8b71c0a --- /dev/null +++ b/docs/LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md @@ -0,0 +1,112 @@ +# MBNWEB-20260712-J 실제 PGM 검증 계획 + +최종 계획 작성 시각: 2026-07-12 22:47 KST + +계획 JSON SHA-256: +`8B51E43AFC5F0E330A8DEF3B38DF071B071E5814FC96258AA9505935D1B43956` + +계획 원본은 Git 제외 로컬 파일 +`artifacts\pgm-evidence\MBNWEB-20260712-J\round-plan.json`이다. 최종 계획을 +고정한 시점까지 Round J의 실제 앱·Tornado2 명령은 0건이며, 회차 전용 Live 설정과 +일회용 capability도 설치하지 않았다. + +기존 Round I 계획 SHA-256 +`D221841A15593A987FB944648F0ACE0AC5940936AEE16C74DC9B901A2F45B332`에 +대한 승인은 Round J에서 재사용하지 않는다. Round I은 자동 갱신 상한 위반으로 이미 +실패 처리됐고, 이 문서의 새 계획에는 수정된 1.0.5 package와 별도 승인 두 단계가 적용된다. + +## 고정 입력 + +| 항목 | 값 | +|---|---| +| package source | `df60e09884acac2e9cb47d50ba902fa13cf7e154` | +| signed MSIX | `1.0.5.0`, x64 | +| MSIX SHA-256 | `1B0BA713619CC3BD7CB3E03D78FD1EB1CEAF49E7D50F5C00DDFB483917BA5437` | +| installed runtime SHA-256 | `168D1FB8D6487C41C8CEAA828B4D9515A38DB3A970F8EB44FA930ABDD577B8E9` | +| installed 289-file manifest | `9234575267F7D1A8A1045246E5128BD755CE9A3976DA83EE00A1AF4ABEE51552` | +| Live 설정 SHA-256 | `63C6F386D73D8740B7B10994668ED14D95C3D7B68025B0DF034C3F18D660E582` | +| 자동 refresh 상한 | `maximumAutomaticRefreshesPerTakeIn=1` | +| scene | 5001/page 1, KOSPI 삼성전자 `1열판기본 / CURRENT / 005930` | +| cut SHA-256 | `99CE3B689A42D8C42BEB09A86FA10C2D7C1AEF4F50D324D81276C1A1E4C4D8A7` | +| reconnect/retry | 비활성 / 0 | + +최종 계획 시점의 대상은 PID 6972, start ticks `639193655349284515`, PGM handle +592052, Network Monitoring handle 79286, TCP 30001 listener owner PID 6972 한 개다. +Tornado2 실행 파일은 59,915,776 bytes, SHA-256 +`BCB192063DF485D0CAD03C91B4698936F0DB9F7B2F19B8EB52DF309A78F313C4`, +`NotSigned`로 고정했다. 이 값 중 하나라도 바뀌면 승인을 재사용하지 않는다. + +## 동결된 자동화 + +독립 정적 감사 결과 P0/P1은 0건이다. PowerShell 5.1 AST와 Node 구문, 교정된 selector, +PREPARE permit, Gate B 이중 permit, terminal correlation, DPAPI capability, config/cut read +lease, OutcomeUnknown/no-close, NODE/WebView override 차단을 검증했다. + +| 파일 | SHA-256 | +|---|---| +| `round-j-gate-a.ps1` | `3A5A36EED94C4B85AE580FE61FEF102FE83D208575CD159B389788E3E79C172A` | +| `round-j-gate-a-cdp.mjs` | `5B89152ABF688FC6439095B2E7B906E937530BF7E182BCB2C16BD593DA141274` | +| `round-j-gate-b.ps1` | `D7FD8C40B97AF6BC1C3314D7364EAB0007E66F402135E1F01E81ACA8846C8CAE` | +| `round-j-gate-b.mjs` | `BD7102E49B7DF5B11AD774BB32B2CA8EA7506A44E6A7350E205CC8DC1BF9BB6E` | +| `round-j-window-arm.ps1` | `D6A939859424982A32A711F101162796493652335209D11C2F35802954F70798` | +| `round-j-desktop.ps1` | `1E3ABAE50B1337AEA5CCE05CC8125D04F4D6AA0FC2441FD98381B5165032175A` | +| `round-j-monitor.ps1` | `B1CFEBC4A35347ADE5B1B402641EEA19A6975997C05C2726C74D1F4E72694B30` | + +실행 runtime도 Visual Studio 2026 Node v24.12.0 +`2FFE3ACC0458FDDE999F50D11809BBE7C9B7EF204DCF17094E325D26ACE101D8`와 +Windows PowerShell 5.1 +`0FF6F2C94BC7E2833A5F7E16DE1622E5DBA70396F31C7D5F56381870317E8C46`의 +정확한 절대 경로·크기·해시로 고정했다. + +## 명령 예산과 단계 + +Gate A는 CONNECT 1회와 PREPARE 5001/page 1 1회만 허용한다. TAKE IN, NEXT, +Page NEXT, DB write는 허용하지 않는다. Gate A가 명확한 known-outcome 상태에서 중단될 +때만 fresh native/CDP/Tornado 상태를 다시 확인하고 정상 종료에 의한 DISCONNECT 1회를 +사용할 수 있다. timeout 또는 모순이면 앱을 닫지 않고 비명령 정리만 한다. + +Gate A 성공 후에는 다음 조건을 모두 만족해야 Gate B preflight를 만든다. + +1. `gate-a-runtime.json`이 exact PREPARED 5001/page 1과 동일 guard nonce를 기록한다. +2. Gate A 이후 15분 이내이고 계획·source·package·target·config·cut이 그대로다. +3. command-free preflight가 Gate A inner guard를 default-disarmed 상태로 복원한다. +4. Gate B 승인 파일이 runtime manifest와 preflight 양쪽 SHA-256을 참조한다. +5. DPAPI CurrentUser 일회용 capability를 소비하고 두 guard가 같은 permit을 동기 소비한다. + +Gate B의 단일 observer는 제어권을 반환하지 않고 TAKE IN 1회, 최초 OnScenePlayed 확인, +자동 갱신 최대 1회, CAPPED 1/1 확인, TAKE OUT All 1회, 정상 종료/DISCONNECT 1회를 +수행한다. NEXT, DB write, retry 예산은 모두 0이다. + +## 예상 Network Monitoring multiset + +Gate A PREPARE 완료 시 `[R]` marker는 정확히 39개다. + +- HELLO 1, LOAD 5001 1, CHANGE_EFFECT_SET 5001 1, BACKGROUND 5001 1 +- BEGIN 1, VALUE_SET 8, VISIBLE 23, QUERY 5001 표시 marker 2, PREPARE 5001 1 +- PLAY, STOPAL, UNLOAD, BYE, 다른 scene, NEXT, DB write는 0 + +Gate B 종료 후 누적 `[R]` marker는 정확히 117개다. + +- HELLO 1, LOAD 5001 1, CHANGE_EFFECT_SET 5001 2, BACKGROUND 5001 3 +- BEGIN 3, VALUE_SET 24, VISIBLE 69, QUERY 5001 표시 marker 6, PREPARE 5001 3 +- PLAY 2, STOPAL 1, UNLOAD 5001 1, BYE 1 +- 의미상 vendor request는 114개이며 다른 scene, NEXT, DB write, retry는 0 + +Gate B cap 도달 전 누적 PREPARE/PLAY/OnScenePlayed는 3/2/2다. 첫 PLAY는 initial +TAKE IN, 둘째 PLAY는 자동 갱신 한 번이다. 최종 callback을 drain한 뒤 +`completed=1`, `maximum=1`, `limitReached=true`, `refreshActive=false`, +`playCompletionPending=false`, Web `CAPPED · 1/1`을 확인해야 한다. + +## 승인 문구 + +Gate A 승인 문구는 아래 한 문장을 그대로 사용한다. 승인 시각은 15분 이내의 canonical +UTC로 별도 기록되며 K3D license가 현재 유효하다는 사용자 확인을 포함한다. + +> 회차 MBNWEB-20260712-J의 계획 SHA-256 8B51E43AFC5F0E330A8DEF3B38DF071B071E5814FC96258AA9505935D1B43956을 승인한다. 현재 K3D 라이선스가 유효함을 확인하며, 현재 PGM 대상 Live CONNECT 1회와 PREPARE 5001 page 1 실행, Gate A가 명확한 known-outcome 상태에서 중단될 때 DISCONNECT 1회를 승인한다. TAKE IN, NEXT, DB write는 아직 승인하지 않는다. + +Gate B 문구는 Gate A 성공과 command-free preflight 후에만 사용한다. + +> 회차 MBNWEB-20260712-J의 계획 SHA-256 8B51E43AFC5F0E330A8DEF3B38DF071B071E5814FC96258AA9505935D1B43956을 다시 확인했다. 현재 PGM 대상 TAKE IN 5001 page 1 정확히 1회, OnScenePlayed 확인 후 자동 갱신 최대 1회, TAKE OUT All 정확히 1회와 DISCONNECT 1회를 승인한다. NEXT와 DB write 및 결과 불명확 시 재시도는 승인하지 않는다. + +계획·helper·source·package·target 중 하나라도 바뀌거나 승인/preflight/runtime이 15분을 +넘으면 해당 승인을 사용하지 않고 새 계획 또는 별도 cleanup 판단으로 돌아간다. diff --git a/docs/RELEASE_1_0_5_AUDIT.md b/docs/RELEASE_1_0_5_AUDIT.md index bfdd8db..788dee2 100644 --- a/docs/RELEASE_1_0_5_AUDIT.md +++ b/docs/RELEASE_1_0_5_AUDIT.md @@ -106,3 +106,14 @@ Round I 계획에는 자동 refresh 1회가 허용됐지만 일부 예상 native 계획 SHA-256에 대한 Gate A 승인 전에는 CONNECT/PREPARE를 보내지 않고, 같은 회차의 Gate B 승인 전에는 TAKE IN을 보내지 않는다. 결과 불명확 상태에서는 어떤 명령도 반복하지 않는다. + +새 회차 계획은 [`LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md`](LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md)에 고정했다. 최종 계획 SHA-256은 +`8B51E43AFC5F0E330A8DEF3B38DF071B071E5814FC96258AA9505935D1B43956`이다. +실제 operator workflow에서 다시 확인한 5001 입력은 +`KOSPI / 삼성전자 / 1열판기본 / CURRENT / 005930`, page 1, fade 6이다. + +Gate A/B 자동화는 독립 정적 감사 P0/P1 0건, PowerShell 5.1/Node 구문, +교정된 selector 통합 모의시험, PREPARE·TAKE IN·TAKE OUT 이중 one-shot guard, +terminal correlation, DPAPI capability, config/cut read lease, exact Network Monitoring +39/117 marker multiset 검사를 통과했다. 계획을 고정한 시점에는 실제 Round J 명령 +0건, Live 설정·capability 미설치, 앱/CDP listener 0 상태다.