docs: record round j gate failure and round k plan
This commit is contained in:
@@ -97,16 +97,52 @@ 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가 현재 유효하다는 사용자 확인을 포함한다.
|
||||
Round J는 이미 종료됐다. 아래 문구와 실제 승인은 모두 폐기했으며 어떤 실행에도
|
||||
다시 사용하지 않는다.
|
||||
|
||||
당시 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 후에만 사용한다.
|
||||
Gate B 문구는 Gate A 성공과 command-free preflight 후에만 사용할 예정이었으나,
|
||||
Gate A가 실패했으므로 승인받거나 사용하지 않았다.
|
||||
|
||||
> 회차 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 판단으로 돌아간다.
|
||||
|
||||
## 실행 결과 — 종료된 실패 회차
|
||||
|
||||
Round J는 재시도 없이 `FAIL_KNOWN_CLEANED`로 종료했다. 실행은
|
||||
`2026-07-12T14:37:47.4048219Z`부터 `14:37:47.7401332Z`까지 0.3353113초였고,
|
||||
승인 나이는 59.8392524초로 유효했다. `outcomeUnknown=false`다.
|
||||
|
||||
실패 원인은 Windows PowerShell 5.1에서 승인 시각을 검사할 때 `System.DateTime`과
|
||||
`System.DateTimeOffset`을 직접 뺀 것이다.
|
||||
|
||||
> `Cannot find an overload for "op_Subtraction" and the argument count: "2".`
|
||||
|
||||
실패는 execution marker와 앱 시작보다 앞에서 발생했다. 따라서 앱 launch/CONNECT,
|
||||
HELLO/native request, PREPARE, TAKE IN, NEXT, Page NEXT, DB write, TAKE OUT,
|
||||
DISCONNECT, retry는 모두 0건이다. `gate-a-execution.json`, PREPARE journal,
|
||||
runtime manifest, Network Monitoring delta, screenshot, Gate B 파일이 없는 것은
|
||||
pre-launch 실패와 일치한다.
|
||||
|
||||
비명령 cleanup은 모두 성공했다. 앱/CDP listener, 설치된 Live 설정, 임시 설정,
|
||||
DPAPI capability, read lease, armed window 상태는 남지 않았다. 사후 대상 확인에서도
|
||||
Tornado PID/start ticks/30001 listener/실행 파일은 계획과 같았지만, 이는 Gate A runtime
|
||||
증거가 아니라 실패 후 읽기 전용 관찰이다.
|
||||
|
||||
| 증거 | SHA-256 |
|
||||
|---|---|
|
||||
| Round J 계획 | `8B51E43AFC5F0E330A8DEF3B38DF071B071E5814FC96258AA9505935D1B43956` |
|
||||
| Gate A 승인 | `F7337D737A9675F06E1B82EA3503C3445014E2DF2527453B4183560A4E6620FF` |
|
||||
| Gate A 결과 | `BC6FBD867A7BAC01E5785AD6A3B488709FDBC5E778BDF4479D35CA73A02C19F1` |
|
||||
|
||||
Round J 승인과 명령 예산은 폐기했다. 같은 계획이나 승인을 재사용하지 않으며 수정본은
|
||||
별도 [`MBNWEB-20260712-K`](LIVE_VALIDATION_PLAN_MBNWEB-20260712-K.md) 회차에서만
|
||||
검증한다.
|
||||
|
||||
120
docs/LIVE_VALIDATION_PLAN_MBNWEB-20260712-K.md
Normal file
120
docs/LIVE_VALIDATION_PLAN_MBNWEB-20260712-K.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# MBNWEB-20260712-K 실제 PGM 검증 계획
|
||||
|
||||
최종 계획 작성 시각: 2026-07-13 00:02 KST
|
||||
|
||||
계획 JSON: 14,794 bytes
|
||||
계획 SHA-256:
|
||||
`8B25D2E9987AECF90526752CD9CF9BAB769D2DA4F689064334BE4039FC2E0BC6`
|
||||
|
||||
계획 원본은 Git 제외 로컬 파일
|
||||
`artifacts\pgm-evidence\MBNWEB-20260712-K\round-plan.json`이다. 계획 고정 시점의
|
||||
Round K 실제 앱·Tornado2 명령은 0건이며 승인, 앱, CDP listener, 설치된 Live 설정,
|
||||
DPAPI capability도 없다.
|
||||
|
||||
Round K는 Round J의 retry나 남은 예산 사용이 아니다. 새 회차·새 계획·새 one-shot
|
||||
예산이며 새 승인을 요구한다.
|
||||
|
||||
## 이전 회차 결박
|
||||
|
||||
| 항목 | 값 |
|
||||
|---|---|
|
||||
| Round J status | `FAIL_KNOWN_CLEANED`, `outcomeUnknown=false` |
|
||||
| Round J 계획 | `8B51E43AFC5F0E330A8DEF3B38DF071B071E5814FC96258AA9505935D1B43956` |
|
||||
| Round J Gate A | `F7337D737A9675F06E1B82EA3503C3445014E2DF2527453B4183560A4E6620FF` |
|
||||
| Round J 결과 | `BC6FBD867A7BAC01E5785AD6A3B488709FDBC5E778BDF4479D35CA73A02C19F1` |
|
||||
| J 실제 앱 launch/vendor command | `0 / 0` |
|
||||
|
||||
J는 Windows PowerShell 5.1의 `DateTime - DateTimeOffset` 연산 오류로 execution marker
|
||||
전에 끝났다. J 승인과 결과는 K authorization으로 복사하거나 재사용하지 않는다.
|
||||
|
||||
## 수정 및 명령 없는 회귀시험
|
||||
|
||||
Gate A 승인 나이 계산을 같은 형식끼리 수행하고 `Math.Max`의 `double` overload를
|
||||
명시했다.
|
||||
|
||||
```powershell
|
||||
$age = [DateTimeOffset]::UtcNow - $approvalAtUtc.ToUniversalTime()
|
||||
return [Math]::Max([double]0, [Math]::Round([double]$age.TotalSeconds, 3))
|
||||
```
|
||||
|
||||
실제 Windows PowerShell 5.1에서 다음을 검증했다.
|
||||
|
||||
| 경계 | 결과 |
|
||||
|---|---|
|
||||
| 기존 혼합 형식 연산 | J와 같은 `MethodException` 재현 |
|
||||
| 기존 `Math.Max(0, 60.125)` | `Int32 60` 손실 재현 |
|
||||
| 미래 `+5.000초` | 허용, `double 0`으로 clamp |
|
||||
| 미래 `+5.001초` | 거부 |
|
||||
| 승인 나이 `900.000초` | 허용, `double 900` |
|
||||
| 승인 나이 `900.001초` | 거부 |
|
||||
| 승인 나이 `60.125초` | `double 60.125` 보존 |
|
||||
|
||||
정적 시험은 운영 회차 폴더 밖에 보관한다.
|
||||
|
||||
- PowerShell: `E9118D2FDCF0D79EA8D67EBF4D8F30B9478D4CA7C7EA8D9C61DB7BD25AA5F1AC`
|
||||
- Node temporal: `EB81A5F3EA69CA9B8D80507694673D84B78DE9E57C73CBF3EE9775C274FE50D9`
|
||||
|
||||
## 동결된 입력과 helper
|
||||
|
||||
package, Live 설정, 설치 manifest, cut과 selector는 J의 승인된 값과 같다.
|
||||
|
||||
- MSIX: `1B0BA713619CC3BD7CB3E03D78FD1EB1CEAF49E7D50F5C00DDFB483917BA5437`
|
||||
- 설치 runtime: `168D1FB8D6487C41C8CEAA828B4D9515A38DB3A970F8EB44FA930ABDD577B8E9`
|
||||
- 설치 289-file manifest: `9234575267F7D1A8A1045246E5128BD755CE9A3976DA83EE00A1AF4ABEE51552`
|
||||
- Live 설정: `63C6F386D73D8740B7B10994668ED14D95C3D7B68025B0DF034C3F18D660E582`
|
||||
- cut: 5001.t2s, 895,922 bytes,
|
||||
`99CE3B689A42D8C42BEB09A86FA10C2D7C1AEF4F50D324D81276C1A1E4C4D8A7`
|
||||
- selector: `KOSPI / 삼성전자 / 1열판기본 / CURRENT / 005930`, page 1, fade 6
|
||||
|
||||
| helper | SHA-256 |
|
||||
|---|---|
|
||||
| `round-k-gate-a.ps1` | `F45D4506F988A8C01051C94D505E9C26536C9ADF197864FB0B77D75A1E167A13` |
|
||||
| `round-k-gate-a-cdp.mjs` | `A337C3A7EA1A087BBBA135F64E257A2CD01A4109033CE78CC6FB36F1C3D6BC25` |
|
||||
| `round-k-gate-b.ps1` | `9B26968D7A28E8AAD0DB3F7806225D3FE5A9D4B28E3658DDB6781D5F5A2418BF` |
|
||||
| `round-k-gate-b.mjs` | `28F87538BB0CBC285322CA08BC691C97601F0F7AFCC8AC93DCD2919E14F6EA69` |
|
||||
| `round-k-window-arm.ps1` | `EFB649F804727BAD9D1FD31E48DB48D3BEF65E885E1355BB611390F2A2C5B07B` |
|
||||
| `round-k-desktop.ps1` | `1E3ABAE50B1337AEA5CCE05CC8125D04F4D6AA0FC2441FD98381B5165032175A` |
|
||||
| `round-k-monitor.ps1` | `B1CFEBC4A35347ADE5B1B402641EEA19A6975997C05C2726C74D1F4E72694B30` |
|
||||
|
||||
독립 감사 결과 P0/P1은 0건이다. K helper에는 J 식별자가 없고, Gate A/B의 capability,
|
||||
lease, selector, terminal correlation, OutcomeUnknown, exact target/runtime binding은 그대로
|
||||
유지된다.
|
||||
|
||||
## 폐쇄형 prearm
|
||||
|
||||
승인 전 운영 K 폴더는 정확히 10개 파일이어야 한다. `gate-a.json`을 생성한 실행
|
||||
시점에는 다음 11개만 허용한다.
|
||||
|
||||
1. `round-plan.json`, `gate-a.json`, `live-config.json`, `installed-runtime-manifest.json`
|
||||
2. 위 표의 helper 7개
|
||||
|
||||
폴더, reparse, 미지 파일, `*.tmp`, partial, static-test, 누락·중복은 capability 생성 전에
|
||||
거부한다. 이 검사는 계획/승인 해석 전과 capability 초기화 직전에 두 번 수행한다.
|
||||
|
||||
## 명령 예산과 예상 증거
|
||||
|
||||
Gate A는 CONNECT 1회와 PREPARE 5001/page 1 1회만 허용한다. TAKE IN, NEXT,
|
||||
Page NEXT, DB write는 0이다. 명확한 known-outcome 중단에서만 정상 종료에 의한
|
||||
DISCONNECT 최대 1회를 허용한다.
|
||||
|
||||
Gate B는 별도 즉시 승인 뒤 TAKE IN 1회, 자동 갱신 최대 1회, TAKE OUT All 1회,
|
||||
DISCONNECT 1회를 단일 observer로 수행한다. NEXT, DB write, retry는 0이다.
|
||||
|
||||
- Gate A 완료 `[R]`: 정확히 39 marker
|
||||
- Gate B 최종 누적 `[R]`: 정확히 117 marker, 의미상 vendor request 114
|
||||
- 누적 PREPARE/PLAY/OnScenePlayed: cap 도달 전 `3 / 2 / 2`
|
||||
- 최종 refresh: `completed=1`, `maximum=1`, `limitReached=true`, `CAPPED · 1/1`
|
||||
|
||||
## 승인 문구
|
||||
|
||||
Gate A는 다음 한 문장을 그대로 승인받아야 한다.
|
||||
|
||||
> 회차 MBNWEB-20260712-K의 계획 SHA-256 8B25D2E9987AECF90526752CD9CF9BAB769D2DA4F689064334BE4039FC2E0BC6을 승인한다. 현재 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-K의 계획 SHA-256 8B25D2E9987AECF90526752CD9CF9BAB769D2DA4F689064334BE4039FC2E0BC6을 다시 확인했다. 현재 PGM 대상 TAKE IN 5001 page 1 정확히 1회, OnScenePlayed 확인 후 자동 갱신 최대 1회, TAKE OUT All 정확히 1회와 DISCONNECT 1회를 승인한다. NEXT와 DB write 및 결과 불명확 시 재시도는 승인하지 않는다.
|
||||
|
||||
source, package, installed runtime, Live 설정, cut, selector, 대상
|
||||
PID/start/listener/window, helper 또는 계획이 바뀌거나 승인/runtime/preflight가 15분을
|
||||
넘으면 승인을 사용하지 않고 새 회차로 돌아간다.
|
||||
@@ -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 실제 PGM 완료; 35개 전체의 실제 PGM 검증으로 확대 해석하지 않음** |
|
||||
| 이번 마이그레이션 WebView workflow의 실제 Tornado2 검증 | **최신 성공은 승인된 5001/5074 범위의 Round H. Round J는 pre-dispatch 명령 0건으로 종료됐고 수정된 Round K는 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,6 +90,32 @@ 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 pre-dispatch 실패와 Round K 시간 검증
|
||||
|
||||
Round J `MBNWEB-20260712-J`는 계획 SHA-256
|
||||
`8B51E43AFC5F0E330A8DEF3B38DF071B071E5814FC96258AA9505935D1B43956`에 대한
|
||||
Gate A 승인을 정확히 한 번 사용했지만, Windows PowerShell 5.1에서 승인 나이를
|
||||
`System.DateTime - System.DateTimeOffset`으로 계산하면서 execution marker 전에
|
||||
실패했다. 결과는 `FAIL_KNOWN_CLEANED`, `OutcomeUnknown=false`다. 앱 launch,
|
||||
CONNECT, PREPARE, TAKE IN, NEXT, Page NEXT, DB write, TAKE OUT, DISCONNECT와
|
||||
retry는 모두 0건이다. Gate A 결과 SHA-256은
|
||||
`BC6FBD867A7BAC01E5785AD6A3B488709FDBC5E778BDF4479D35CA73A02C19F1`이다.
|
||||
비명령 cleanup은 성공했고 앱/CDP/설정/capability/lease가 남지 않았다. J 승인과
|
||||
명령 예산은 폐기하며 같은 계획으로 재시도하지 않는다.
|
||||
|
||||
Round K `MBNWEB-20260712-K`는 별도 회차이며 계획 SHA-256은
|
||||
`8B25D2E9987AECF90526752CD9CF9BAB769D2DA4F689064334BE4039FC2E0BC6`이다.
|
||||
승인 나이는 `[DateTimeOffset]::UtcNow`와 UTC `DateTimeOffset`끼리 계산하고,
|
||||
`Math.Max`에는 `double` 인수를 명시해 소수초를 보존한다. Windows PowerShell 5.1
|
||||
회귀시험은 `+5.000초` 허용/`+5.001초` 거부, `900.000초` 허용/`900.001초`
|
||||
거부와 `60.125초` 보존을 확인한다. Gate A는 승인 파일 생성 뒤 정확히 계획·승인·
|
||||
Live 설정·installed manifest·계획에 SHA로 묶인 helper 7개만 있는지 계획 해석 전과
|
||||
capability 생성 직전에 검사한다. 폴더, reparse, 미지·임시·partial·static-test 파일,
|
||||
누락과 중복은 모두 fail-closed다. K는 새 Gate A 승인을 받기 전에는 어떤 앱이나
|
||||
Tornado 명령도 실행하지 않는다. 현재 승인 전 운영 폴더는 정확히 10개 파일이며,
|
||||
Gate A 예산은 CONNECT 1회, PREPARE 5001/page 1 1회, 명확한 known-outcome 중단의
|
||||
DISCONNECT 최대 1회다. TAKE IN, NEXT, Page NEXT, DB write와 retry는 0이다.
|
||||
|
||||
이 실제 Live PGM 증거는 회차에 허용된 5001과 5074에 한정된다. 35개 scene builder 전체 동등성은 자동 테스트, 55-query 실데이터 smoke와 [`SCENE_EQUIVALENCE.md`](SCENE_EQUIVALENCE.md) 매트릭스로 유지하며, 나머지 scene이 실제 PGM에서 각각 송출됐다는 의미로 기록하지 않는다.
|
||||
|
||||
## 화면/계약과 운영 검증의 분리
|
||||
|
||||
@@ -107,13 +107,29 @@ Round I 계획에는 자동 refresh 1회가 허용됐지만 일부 예상 native
|
||||
회차의 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이다.
|
||||
Round J 계획과 종료 결과는
|
||||
[`LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md`](LIVE_VALIDATION_PLAN_MBNWEB-20260712-J.md)에
|
||||
보존했다. 계획 SHA-256은
|
||||
`8B51E43AFC5F0E330A8DEF3B38DF071B071E5814FC96258AA9505935D1B43956`이고,
|
||||
Gate A 승인 SHA-256은
|
||||
`F7337D737A9675F06E1B82EA3503C3445014E2DF2527453B4183560A4E6620FF`,
|
||||
Gate A 결과 SHA-256은
|
||||
`BC6FBD867A7BAC01E5785AD6A3B488709FDBC5E778BDF4479D35CA73A02C19F1`이다.
|
||||
J는 Windows PowerShell 5.1에서 `DateTime - DateTimeOffset` 승인 나이 계산이
|
||||
실패해 execution marker와 앱 시작 전에 `FAIL_KNOWN_CLEANED`로 종료했다.
|
||||
앱 launch, CONNECT, PREPARE와 금지 명령은 모두 0건이며 `outcomeUnknown=false`다.
|
||||
비명령 cleanup은 성공했고 앱/CDP/설정/capability/lease가 남지 않았다. J 승인과
|
||||
명령 예산은 폐기했고 재사용하지 않는다.
|
||||
|
||||
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 상태다.
|
||||
수정된 새 회차는
|
||||
[`LIVE_VALIDATION_PLAN_MBNWEB-20260712-K.md`](LIVE_VALIDATION_PLAN_MBNWEB-20260712-K.md)에
|
||||
고정했다. 계획 SHA-256은
|
||||
`8B25D2E9987AECF90526752CD9CF9BAB769D2DA4F689064334BE4039FC2E0BC6`이다.
|
||||
승인 나이 산술을 `DateTimeOffset`끼리 수행하고 `Math.Max`의 `double` overload를
|
||||
명시했다. Windows PowerShell 5.1에서 미래 시각 `+5.000/+5.001초`, 승인 나이
|
||||
`900.000/900.001초`, 소수 나이 `60.125초` 경계를 command-free로 검증했다.
|
||||
이는 기존 구문 검사만으로 발견하지 못한 런타임 형식 의미를 직접 검증한다.
|
||||
K Gate A는 승인 파일 생성 시 운영 폴더의 정확한 11개 allowlist를 두 번 검사하며,
|
||||
정적 시험 파일·미지 파일·폴더·reparse·누락·중복을 capability 생성 전에 거부한다.
|
||||
실제 operator workflow 입력은
|
||||
`KOSPI / 삼성전자 / 1열판기본 / CURRENT / 005930`, page 1, fade 6으로 유지한다.
|
||||
|
||||
Reference in New Issue
Block a user