docs: prepare Round M live validation
This commit is contained in:
@@ -121,3 +121,42 @@ Gate B 문구는 Gate A 성공과 command-free preflight 뒤에만 사용한다.
|
||||
source, package, installed runtime, Live 설정, cut, selector, 대상
|
||||
PID/start/listener/window, helper 또는 계획이 바뀌거나 승인/runtime/preflight가 15분을
|
||||
넘으면 승인을 사용하지 않고 새 회차로 돌아간다.
|
||||
|
||||
## 실행 결과 — 종료된 실패 회차
|
||||
|
||||
Round L은 재시도 없이 `FAIL_KNOWN_CLEANED`로 종료했다. 실행은
|
||||
`2026-07-12T17:56:59.1576171Z`부터 `17:57:05.4284241Z`까지 6.270807초였고,
|
||||
승인 나이는 시작 시점 기준 43.0371499초로 유효했다. `outcomeUnknown=false`다.
|
||||
|
||||
실패 원인은 frozen PGM 창이 실행 시점에 최소화돼 strict target preflight가 거부한
|
||||
것이다.
|
||||
|
||||
> `The frozen window is hidden or minimized.`
|
||||
|
||||
실패는 execution marker, capability 생성과 앱 시작보다 앞에서 발생했다. 따라서 앱
|
||||
launch, CONNECT/HELLO, PREPARE, TAKE IN, NEXT, Page NEXT, DB write, TAKE OUT,
|
||||
DISCONNECT와 retry는 모두 0건이다. `prepareIssued=0`,
|
||||
`prepareMayHaveBeenIssued=false`이며 명령 결과는 명확하다.
|
||||
|
||||
사후 read-only 확인에서 PGM handle 592052는 `visible=true`, `iconic=true`, owner 6972,
|
||||
Network Monitoring handle 79286은 `visible=true`, `iconic=false`, owner 6972였다.
|
||||
Tornado PID/start ticks/30001 listener는 계획과 같았다. 비명령 cleanup은 성공했고
|
||||
앱/CDP listener, Live 설정, 임시 설정, DPAPI capability는 남지 않았다.
|
||||
|
||||
승인 회차 종료 뒤 송출 명령 없이 표준 Win32 동기 `ShowWindow(SW_RESTORE)`를 PGM에
|
||||
한 번 적용해 `visible=true`, `iconic=false`, owner 6972를 확인했다. 비동기 restore가
|
||||
최소화 플래그를 해제하지 못한 사실도 후속 회귀에 보존한다.
|
||||
|
||||
| 증거 | bytes | SHA-256 |
|
||||
|---|---:|---|
|
||||
| Round L 계획 | 15,987 | `23E3A6A5400166A47835E146DCC2D19C181E2100D1485DB428F1B10718D89928` |
|
||||
| Gate A 승인 | 1,085 | `A361843C2E810CEAA2F838F4AA953C4D9910670BD458C3974BBA915DA8B73962` |
|
||||
| Gate A 결과 | 3,421 | `F57BEA9E5F4A215DBB944DCFDC22D8989A5418BDC3910B19B2A11ED9B795FE4D` |
|
||||
|
||||
Round L 승인과 명령 예산은 폐기했다. 같은 계획이나 승인을 재사용하지 않는다. 후속
|
||||
회차는 frozen window identity를 먼저 검증하고 command-free synchronous restore를
|
||||
수행한 뒤 strict visible/non-iconic 검사를 통과해야 한다.
|
||||
|
||||
이 교정은 새 계획
|
||||
[`LIVE_VALIDATION_PLAN_MBNWEB-20260712-M.md`](LIVE_VALIDATION_PLAN_MBNWEB-20260712-M.md)에
|
||||
고정했다. Round M 역시 별도 승인 전에는 실행하지 않는다.
|
||||
|
||||
131
docs/LIVE_VALIDATION_PLAN_MBNWEB-20260712-M.md
Normal file
131
docs/LIVE_VALIDATION_PLAN_MBNWEB-20260712-M.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# MBNWEB-20260712-M 실제 PGM 검증 계획
|
||||
|
||||
이 문서는 Round L의 명령 송신 전 창 상태 실패를 교정한 새 Gate A 회차를 고정한다.
|
||||
현재 상태는 **계획 생성 완료·승인 대기**다. 앱, CDP, K3D/Tornado2 명령은 아직
|
||||
실행하지 않았다.
|
||||
|
||||
| 항목 | 고정값 |
|
||||
|---|---|
|
||||
| 계획 파일 | `artifacts\pgm-evidence\MBNWEB-20260712-M\round-plan.json` |
|
||||
| 계획 | 19,042 bytes, `7A1141C5F276729E340227CEEAA48B0E6018632BBA51F43AA94636084AA3C301` |
|
||||
| schema | `4` |
|
||||
| 생성 시각 | `2026-07-12T18:44:01.0754197Z` |
|
||||
| source HEAD / origin main | `4e9ae447897b17862dedb3bc6906963b1793d0cb` |
|
||||
| 계획 생성 시 실제 명령 | 앱·벤더·창 조작·CONNECT·PREPARE 모두 0건 |
|
||||
|
||||
Round M은 Round L의 retry나 남은 예산 사용이 아니다. 새 계획, 새 승인, 새 one-shot
|
||||
예산을 사용하는 별도 회차다.
|
||||
|
||||
## Round L 종료 근거
|
||||
|
||||
| 항목 | 값 |
|
||||
|---|---|
|
||||
| 상태 | `FAIL_KNOWN_CLEANED`, `outcomeUnknown=false` |
|
||||
| 계획 | `23E3A6A5400166A47835E146DCC2D19C181E2100D1485DB428F1B10718D89928` |
|
||||
| Gate A 승인 | `A361843C2E810CEAA2F838F4AA953C4D9910670BD458C3974BBA915DA8B73962` |
|
||||
| 결과 | 3,421 bytes, `F57BEA9E5F4A215DBB944DCFDC22D8989A5418BDC3910B19B2A11ED9B795FE4D` |
|
||||
| 실패 | frozen PGM handle 592052가 `visible=true`, `iconic=true` |
|
||||
| 앱 launch / 벤더 명령 | 0 / 0 |
|
||||
| CONNECT / PREPARE / DISCONNECT | 0 / 0 / 0 |
|
||||
| execution marker | 생성되지 않음 |
|
||||
|
||||
L 승인은 폐기됐고 재사용하지 않는다. L 종료 뒤 수행한 read-only 확인과 표준 Win32
|
||||
동기 restore 관측은 후속 설계 근거일 뿐 L 실행 결과로 소급하지 않는다.
|
||||
|
||||
## 창 사전복원 교정
|
||||
|
||||
Gate A는 실행 marker, capability, 앱, CDP와 벤더 명령보다 앞에서 다음 순서를
|
||||
강제한다.
|
||||
|
||||
1. 설치 package, vendor 등록, Live 설정과 cut을 read-only로 검증한다.
|
||||
2. MBN 앱과 CDP 9339 listener가 없음을 확인한다.
|
||||
3. 승인 유효성을 확인한다.
|
||||
4. Tornado PID/start ticks, 실행 파일·서명, `0.0.0.0:30001` 단일 listener와
|
||||
PGM/Network Monitoring의 유일한 exact top-level handle/title/owner를 검증한다.
|
||||
5. 두 창의 원래 visible/iconic/cloaked/placement를 첫 UI 변경 전에 모두 캡처한다.
|
||||
6. 필요한 창에만 동기 `ShowWindow`의 `SW_RESTORE` 또는 `SW_SHOW`를 창별 최대 1회
|
||||
호출한다.
|
||||
7. API 반환값을 성공으로 간주하지 않고 최대 5초 동안 실제
|
||||
visible/non-iconic/non-cloaked 사후 상태를 확인한다.
|
||||
8. helper 내부 중간 실패는 두 창을 즉시 원상복구하고 exact placement까지 확인한다.
|
||||
9. 성공한 원본 상태는 execution marker 전까지 Gate A 메모리에 보존한다. 이후
|
||||
`pre-round-window-visibility.json`은 복원 후 상태가 아니라 이 원본을 저장한다.
|
||||
10. 다시 승인 유효성과 strict desktop target을 검증하고 운영 폴더 closed set을
|
||||
확인한 뒤 execution marker를 쓴다. capability는 marker 뒤에 초기화한다.
|
||||
|
||||
preflight 자체의 파일 생성, capability, 앱 명령과 벤더 명령은 모두 0건이다. 파일
|
||||
기반 snapshot 전 실패는 메모리 원본으로, 이후 실패는 authoritative snapshot으로
|
||||
원복한다. `ShowWindowAsync` fallback과 같은 창에 대한 반복 호출은 없다.
|
||||
|
||||
첫 identity 검사 자체가 helper evidence를 반환하기 전에 실패하면 결과의
|
||||
`windowsRemainArmed`는 실제 mutation 여부를 추정하지 않고 보수적으로 `true`가 될 수
|
||||
있다. 이는 명령 발행 증거가 아니라 수동 reconciliation 필요 표시로 해석한다.
|
||||
|
||||
## 고정 대상과 입력
|
||||
|
||||
계획 생성 직전 read-only 관측 시각은 `2026-07-12T18:44:00.9005006Z`다. 이 관측은
|
||||
정보성 기록이며 실행 시 helper가 전부 다시 검증한다.
|
||||
|
||||
| 항목 | 값 |
|
||||
|---|---|
|
||||
| Tornado | PID 6972, start ticks `639193655349284515` |
|
||||
| listener | `0.0.0.0:30001`, 1개, owner 6972 |
|
||||
| PGM | handle 592052, owner 6972, visible, non-iconic, uncloaked |
|
||||
| Network Monitoring | handle 79286, owner 6972, visible, non-iconic, uncloaked |
|
||||
| MBN app / CDP 9339 | 0 / 0 |
|
||||
| MSIX | `1B0BA713619CC3BD7CB3E03D78FD1EB1CEAF49E7D50F5C00DDFB483917BA5437` |
|
||||
| installed runtime | `168D1FB8D6487C41C8CEAA828B4D9515A38DB3A970F8EB44FA930ABDD577B8E9` |
|
||||
| installed manifest | 76,119 bytes, `9631E8188E10F23970F43593B705957A215AE01E2760FE714B08518DB0571A9B` |
|
||||
| Live 설정 | 895 bytes, `63C6F386D73D8740B7B10994668ED14D95C3D7B68025B0DF034C3F18D660E582` |
|
||||
| cut | `5001.t2s`, 895,922 bytes, `99CE3B689A42D8C42BEB09A86FA10C2D7C1AEF4F50D324D81276C1A1E4C4D8A7` |
|
||||
| selector | `KOSPI / 삼성전자 / 1열판기본 / CURRENT / 005930`, page 1, fade 6 |
|
||||
|
||||
## 고정 helper와 command-free 시험
|
||||
|
||||
| 파일 | bytes | SHA-256 |
|
||||
|---|---:|---|
|
||||
| `round-m-gate-a.ps1` | 154,026 | `37340B4B74BE856F109A13D037217951CAF741212CD32F1CEE374647A9AC38EF` |
|
||||
| `round-m-gate-a-cdp.mjs` | 73,292 | `1D118202CDB9D37315683063BD4DB1083F4EBAC822BE2B3E60A1A08226091BEF` |
|
||||
| `round-m-gate-b.ps1` | 104,988 | `4DD6F4C7DF1768058E090FA492339EF022A6E6C7A5D1C637C2544E182C44A02C` |
|
||||
| `round-m-gate-b.mjs` | 98,253 | `FE5CBF1E13004022AA25174BC8828CE5A1953D249CBECD388D4F4AE99AFF41DB` |
|
||||
| `round-m-window-arm.ps1` | 28,525 | `21D403BC8EA6569C19734E6DE017B4C3DEB5389A9BE0D4E0D17775D2C27D32CD` |
|
||||
| `round-m-desktop.ps1` | 31,248 | `1E3ABAE50B1337AEA5CCE05CC8125D04F4D6AA0FC2441FD98381B5165032175A` |
|
||||
| `round-m-monitor.ps1` | 29,900 | `B1CFEBC4A35347ADE5B1B402641EEA19A6975997C05C2726C74D1F4E72694B30` |
|
||||
|
||||
| 시험 | bytes | SHA-256 |
|
||||
|---|---:|---|
|
||||
| PowerShell 정적·manifest·window 계약 | 22,651 | `A3E425530119FBE758BE96303C4FB256CD1D901B28243571C0D9B815E441B6F5` |
|
||||
| Node 시간·Int64 계약 | 2,782 | `5141DC0AE0BB3220C7EBB464F4023E838BCF096BE4C11A9B844632C31C8A7935` |
|
||||
| 계획 생성기 | 17,624 | `F4ABF9E1906EE9AC69140EF534553447DCBAFE0326FD8742D5910775BFADAED8` |
|
||||
|
||||
Windows PowerShell 5.1 AST 5개와 Node 구문 3개, identifier-aware 이관,
|
||||
`backgroundKind` 보존, L iconic 실패, API false여도 사후 상태 성공, already-shown 0회,
|
||||
5초 timeout, identity drift 0회, 부분 실패 self-rollback, maximized `showCmd=3` 원복과
|
||||
snapshot 이후 ShowWindow 0회 계약이 통과했다.
|
||||
K manifest ordinal 역전 41개와 M 기준 0개, 의미 집합 289/289, 3개 문화권 불변성도
|
||||
통과했다. 계획 원문에는 start ticks가 정확히 한 번 있고 반올림 값은 없다.
|
||||
|
||||
## 폐쇄 집합과 명령 예산
|
||||
|
||||
승인 전 운영 폴더는 helper 7개, installed manifest, Live 설정, 계획의 정확한 10개
|
||||
파일이다. `gate-a.json` 생성 뒤 Gate A 시작 시에는 정확한 11개만 허용한다.
|
||||
preflight는 파일을 만들지 않으므로 두 번째 closed-set 검사도 11개다.
|
||||
|
||||
Gate A 예산은 CONNECT 1회, PREPARE 5001/page 1 1회와 명확한 known-outcome
|
||||
중단 시 정상 DISCONNECT 최대 1회다. TAKE IN, NEXT, Page NEXT, DB write와 retry는
|
||||
0회다. timeout이나 결과 불명확 상태에서는 어떤 명령도 반복하지 않는다.
|
||||
|
||||
## 승인 문구
|
||||
|
||||
Gate A는 다음 한 문장을 그대로 승인받은 뒤에만 실행한다.
|
||||
|
||||
> 회차 MBNWEB-20260712-M의 계획 SHA-256 7A1141C5F276729E340227CEEAA48B0E6018632BBA51F43AA94636084AA3C301을 승인한다. 현재 K3D 라이선스가 유효함을 확인하며, 현재 PGM 대상 Live CONNECT 1회와 PREPARE 5001 page 1 실행, Gate A가 명확한 known-outcome 상태에서 중단될 때 DISCONNECT 1회를 승인한다. TAKE IN, NEXT, DB write는 아직 승인하지 않는다.
|
||||
|
||||
Gate B는 Gate A가 `PASS_PREPARED`로 끝나고 command-free preflight가 새로 통과한
|
||||
뒤에만 별도로 승인받는다.
|
||||
|
||||
> 회차 MBNWEB-20260712-M의 계획 SHA-256 7A1141C5F276729E340227CEEAA48B0E6018632BBA51F43AA94636084AA3C301을 다시 확인했다. 현재 PGM 대상 TAKE IN 5001 page 1 정확히 1회, OnScenePlayed 확인 후 자동 갱신 최대 1회, TAKE OUT All 정확히 1회와 DISCONNECT 1회를 승인한다. NEXT와 DB write 및 결과 불명확 시 재시도는 승인하지 않는다.
|
||||
|
||||
source, package, manifest, 설정, cut, selector, PID/start/listener/window, helper, 계획이
|
||||
바뀌거나 승인 또는 preflight가 허용 시간을 넘으면 승인과 예산을 폐기하고 새 회차로
|
||||
돌아간다.
|
||||
@@ -14,7 +14,7 @@
|
||||
| `s5025` trusted 수동 파일 | 외부 CP949 source 통합 검증 통과; 실제 파일/환경은 계속 Git 밖에서 회차별 preflight |
|
||||
| `s5006` `Video\큐브배경.vrv` | 현재 승인 Cuts root에서 누락 |
|
||||
| `s6001` 해외지수 영상 | 국가별 `Video\20201008_<국가>.vrv` 13개가 현재 승인 Cuts root에서 누락; 외부자산 필요 |
|
||||
| 이번 마이그레이션 WebView workflow의 실제 Tornado2 검증 | **최신 성공은 승인된 5001/5074 범위의 Round H. Round J/K는 각각 pre-dispatch 명령 0건으로 종료됐고 수정된 Round L은 Gate A 승인 대기; 35개 전체의 실제 PGM 검증으로 확대 해석하지 않음** |
|
||||
| 이번 마이그레이션 WebView workflow의 실제 Tornado2 검증 | **최신 성공은 승인된 5001/5074 범위의 Round H. Round J/K/L은 각각 pre-dispatch 명령 0건으로 종료됐고 창 preflight를 교정한 Round M은 Gate A 승인 대기; 35개 전체의 실제 PGM 검증으로 확대 해석하지 않음** |
|
||||
|
||||
1.0.2 Visual Studio 개발 등록본을 signed 1.0.3으로 교체할 때 `Remove-AppxPackage -PreserveApplicationData`를 사용했다. 재등록 구간에서 바뀐 파일은 Windows package Settings transaction log `settings.dat.LOG1/LOG2`뿐이었고, WebView LocalState와 외부 `%LOCALAPPDATA%\MBN_STOCK_WEBVIEW` 운영 데이터는 삭제·덮어쓰지 않았다. 이 패키지 검증 회차는 기본 설정 부재와 환경 override 0건을 확인한 `DryRun`으로만 실행했으며 Tornado 실제 명령은 보내지 않았다.
|
||||
|
||||
@@ -90,7 +90,7 @@ range에는 그 추가 PREPARE/PLAY를 반영하지 않은 불일치가 있었
|
||||
|
||||
이 실패 뒤 `maximumAutomaticRefreshesPerTakeIn` trusted JSON-only 상한을 추가했다. 기본 `null`은 원본 연속 갱신을 유지하고, 실제 검증 설정의 `1`은 scheduler와 실제 refresh dispatch 경계에서 두 번째 실행을 이중 차단한다. 상태는 `refreshCompletedCount`, `refreshMaximumCount`, `refreshLimitReached`를 제공하며, 마지막 refresh `OnScenePlayed`가 drain되기 전에는 count가 상한에 도달해도 `refreshLimitReached=false`를 유지한다. 검증은 `completed=1`, `maximum=1`, `limitReached=true`, `refreshActive=false`, `playCompletionPending=false`를 모두 확인해야 한다. 변경된 package는 Round I 승인/계획을 재사용할 수 없으며 새 package hash, 새 회차 계획과 새 CONNECT/PREPARE/TAKE IN 승인이 필요하다.
|
||||
|
||||
### Round J/K pre-dispatch 실패와 Round L 교정
|
||||
### Round J/K/L pre-dispatch 실패와 Round M 교정
|
||||
|
||||
Round J `MBNWEB-20260712-J`는 계획 SHA-256
|
||||
`8B51E43AFC5F0E330A8DEF3B38DF071B071E5814FC96258AA9505935D1B43956`에 대한
|
||||
@@ -135,6 +135,25 @@ TAKE IN, NEXT, Page NEXT, DB write와 retry는 0이다. 세부 계획은
|
||||
[`LIVE_VALIDATION_PLAN_MBNWEB-20260712-L.md`](LIVE_VALIDATION_PLAN_MBNWEB-20260712-L.md)에
|
||||
고정했다.
|
||||
|
||||
승인된 Round L Gate A는 manifest와 시간·Int64 검사를 통과했지만 frozen PGM
|
||||
handle 592052가 `visible=true`, `iconic=true`여서 strict desktop target 검사에서
|
||||
execution marker 전에 종료됐다. 결과는 `FAIL_KNOWN_CLEANED`,
|
||||
`outcomeUnknown=false`이며 앱 launch, CONNECT, PREPARE, TAKE IN, NEXT, DB write,
|
||||
DISCONNECT와 retry는 모두 0건이다. Gate A 결과 SHA-256은
|
||||
`F57BEA9E5F4A215DBB944DCFDC22D8989A5418BDC3910B19B2A11ED9B795FE4D`다. L 승인과
|
||||
예산은 폐기했고 재사용하지 않는다.
|
||||
|
||||
새 Round M은 PID/start/exe/signature/listener와 유일한 exact 창 identity를 먼저
|
||||
검증한 뒤, 필요한 창에만 동기 `ShowWindow`를 창별 최대 1회 적용한다. 성공 판정은
|
||||
API 반환값이 아니라 5초 이내 visible/non-iconic/non-cloaked 사후 상태다. 두 창의
|
||||
원본 placement는 첫 변경 전에 메모리에 보존하며 helper 내부 부분 실패, execution
|
||||
marker 전 Gate A 실패와 marker 이후 실패 모두 exact 원상복구 경로가 있다. preflight
|
||||
동안 파일, capability, 앱 명령과 벤더 명령은 0건이다. schema 4 계획은 19,042 bytes,
|
||||
SHA-256 `7A1141C5F276729E340227CEEAA48B0E6018632BBA51F43AA94636084AA3C301`이며
|
||||
승인 전 실제 명령은 0건이다. 세부 계획과 정확한 승인문은
|
||||
[`LIVE_VALIDATION_PLAN_MBNWEB-20260712-M.md`](LIVE_VALIDATION_PLAN_MBNWEB-20260712-M.md)에
|
||||
고정했다.
|
||||
|
||||
이 실제 Live PGM 증거는 회차에 허용된 5001과 5074에 한정된다. 35개 scene builder 전체 동등성은 자동 테스트, 55-query 실데이터 smoke와 [`SCENE_EQUIVALENCE.md`](SCENE_EQUIVALENCE.md) 매트릭스로 유지하며, 나머지 scene이 실제 PGM에서 각각 송출됐다는 의미로 기록하지 않는다.
|
||||
|
||||
## 화면/계약과 운영 검증의 분리
|
||||
@@ -358,7 +377,9 @@ COM 명령 전 validation에서 명시적으로 거부됐고 Network Monitoring/
|
||||
|
||||
### 출력이 명확히 active이고 엔진이 정상인 경우
|
||||
|
||||
Gate A에 포함된 TAKE OUT을 한 번 실행한다. 성공 callback과 PGM 종료 화면을 확인한 뒤 Disconnect한다. 같은 TAKE OUT을 확인용으로 반복하지 않는다.
|
||||
해당 회차에서 명시적으로 승인된 TAKE OUT을 한 번 실행한다. 현재 M 계열에서는 이
|
||||
권한이 Gate B에만 있다. 성공 callback과 PGM 종료 화면을 확인한 뒤 승인 범위의
|
||||
Disconnect를 실행하며, 같은 TAKE OUT을 확인용으로 반복하지 않는다.
|
||||
|
||||
### 결과가 불명확한 경우
|
||||
|
||||
|
||||
@@ -149,5 +149,22 @@ K 역전 41개를 재현하고 L 역전 0, exact/대소문자 중복 0, 3개 문
|
||||
command-free로 검증했다. Gate A/B에 exact schema·NFC·안전 경로·ordinal 재검증을
|
||||
추가했다. Node 계획 생성기의 18자리 Tornado start ticks 반올림도 승인 전에 폐기하고
|
||||
Int64 보존 회귀를 추가했다. 최종 L 계획 SHA-256은
|
||||
`23E3A6A5400166A47835E146DCC2D19C181E2100D1485DB428F1B10718D89928`이다. 계획 고정
|
||||
`23E3A6A5400166A47835E146DCC2D19C181E2100D1485DB428F1B10718D89928`이다.
|
||||
|
||||
승인된 L Gate A는 위 교정을 통과했지만 PGM 창이 최소화된 상태여서 strict desktop
|
||||
target 검사에서 execution marker 전에 `FAIL_KNOWN_CLEANED`로 종료했다.
|
||||
`outcomeUnknown=false`이고 앱 launch, CONNECT, PREPARE, TAKE IN, NEXT, DB write,
|
||||
DISCONNECT와 retry는 모두 0건이다. Gate A 승인 SHA-256은
|
||||
`A361843C2E810CEAA2F838F4AA953C4D9910670BD458C3974BBA915DA8B73962`, 결과 3,421 bytes의
|
||||
SHA-256은 `F57BEA9E5F4A215DBB944DCFDC22D8989A5418BDC3910B19B2A11ED9B795FE4D`다.
|
||||
L 승인과 예산은 폐기했고 재사용하지 않는다.
|
||||
|
||||
새 [`LIVE_VALIDATION_PLAN_MBNWEB-20260712-M.md`](LIVE_VALIDATION_PLAN_MBNWEB-20260712-M.md)은
|
||||
창 identity를 먼저 검증한 뒤 필요한 창에만 동기 `ShowWindow`를 창별 최대 1회
|
||||
적용하고, 5초 actual postcondition과 exact 원상복구를 요구한다. 원래 두 창의
|
||||
placement는 첫 변경 전에 메모리에 보존돼 helper 내부 부분 실패, execution marker 전
|
||||
실패와 이후 실패를 모두 복구한다. preflight 동안 파일, capability, 앱·벤더 명령은
|
||||
0건이다. Gate A/CDP/Gate B는 동일한 schema 4와 16-field preflight 계약을 검증한다.
|
||||
최종 M 계획은 19,042 bytes, SHA-256
|
||||
`7A1141C5F276729E340227CEEAA48B0E6018632BBA51F43AA94636084AA3C301`다. 계획 고정
|
||||
시점의 앱/Tornado 명령은 0건이며 새 Gate A 승인 전에는 실행하지 않는다.
|
||||
|
||||
Reference in New Issue
Block a user