feat: add audited one-shot prepare gate

This commit is contained in:
2026-07-18 12:29:09 +09:00
parent 1302b1b92f
commit 5379511b8a
25 changed files with 6188 additions and 41 deletions

View File

@@ -215,6 +215,35 @@ Network Monitoring/PGM 관찰 담당자:
대상, cut, selector, page, 횟수 중 하나라도 바뀌면 같은 회차 승인을 재사용하지 않는다.
#### 5001 PREPARE 전용 one-shot Gate A
현재 5001/page 1 연결 검증은 [`New-LegacyPgmPreparePlan.ps1`](../scripts/New-LegacyPgmPreparePlan.ps1),
[`Invoke-LegacyPgmPrepareGate.ps1`](../scripts/Invoke-LegacyPgmPrepareGate.ps1),
[`Test-LegacyPgmPrepareGate.mjs`](../scripts/Test-LegacyPgmPrepareGate.mjs)의 고정 계약을 사용한다.
계획 생성과 `ValidatePlan`은 명령을 보내지 않으며, 실행은 clean/pushed `main`, 정확한 Release x64
MSIX와 package runtime, 원본 `5001.t2s`, K3D 등록, PGM PID/시작 시각/listener, 15분 이내의
별도 승인 파일이 모두 일치할 때만 열린다. 실제 DTO를 만드는 로컬 `database.local.json`도 내용이나
비밀번호를 노출하지 않고 경로·크기·SHA-256으로 고정해 실행 동안 read lease를 유지한다.
이 게이트의 허용 예산은 현재 PGM `CONNECT` 1회와 삼성전자 `5001` page 1 `PREPARE` 1회뿐이다.
`TAKE IN`, `NEXT`, Page NEXT, `TAKE OUT`, `DISCONNECT`, 자동 재연결, DB write와 재시도는 모두 0회다.
앱은 WebView 생성 전에 process-lifetime 권한을 캡처하고, native engine은 동일 권한으로 exact PGM,
exact cut lease, exact Live profile과 SDK dispatch 직전 만료를 다시 검사한다. Gate A 동안 DB mutation,
로컬 영구 저장, Fade와 배경 변경도 native 경계 전에 거부한다.
Oracle/MariaDB 설정 override와 managed runtime startup hook/profiler 환경값은 process/user/machine
어느 범위에서도 허용하지 않으며 app과 helper의 상속 환경에서도 제거한다.
raw one-shot capability는 명령줄·계획·증적·Web 상태에 기록하지 않는다. package-context wrapper와
Node helper는 current-user ACL named pipe로 각 parent가 OS PID·실행 파일·시작 시각·package/parent
identity를 확인한 직후에만 필요한 값을 한 번 받는다. 감시 실패나 제한 시간 초과에서는 pipe를 먼저
폐기하고 control-plane helper만 fail-stop한다. 이는 앱, PGM, Tornado 또는 K3D 프로세스를 종료하거나
vendor cleanup 명령을 보내는 권한이 아니다.
성공 시 앱과 session은 `PREPARED 5001` 상태로 그대로 두고 별도 승인 없는 cleanup을 하지 않는다.
결과가 불명확하면 helper 증적을 `OutcomeUnknown`으로 남기고 앱 종료, 반대 명령, 재실행 또는 같은
PREPARE 반복을 하지 않는다. 다음 단계는 Network Monitoring과 PGM을 사람이 확인한 뒤 새 계획과
새 승인을 만드는 것이다.
### Gate B: TAKE IN 직전 승인
PREPARE 결과와 Network Monitoring 상태를 운영자가 확인한 후, TAKE IN 직전에 다음과 같이 명시적인 승인을 받아야 한다.