docs: freeze round j live validation plan
This commit is contained in:
112
docs/LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md
Normal file
112
docs/LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md
Normal file
@@ -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 판단으로 돌아간다.
|
||||
@@ -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 상태다.
|
||||
|
||||
Reference in New Issue
Block a user