Migrate remaining legacy operator workflows
This commit is contained in:
59
docs/TRUSTED_BACKGROUND_ROOT.md
Normal file
59
docs/TRUSTED_BACKGROUND_ROOT.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# 원본 F2/F3 배경과 신뢰 배경 루트
|
||||
|
||||
검수 기준 원본은 읽기 전용
|
||||
`C:\Users\MD\source\repos\MBN_STOCK_N\MBN_STOCK_N\MainForm.cs`이다.
|
||||
|
||||
## 원본 동작
|
||||
|
||||
- `T2S_FOLDER_PATH`는 실행 폴더의 `Cuts\`이다.
|
||||
- F2/`btnback_Click`는 먼저 `Cuts\..\배경\기본.vrv`를 기본값으로 두고,
|
||||
`배경` 폴더에서 vrv/jpg/png 파일 선택 창을 연다.
|
||||
- F3/`ckback_CheckedChanged`가 배경을 끄면 파일 값을 비우고, 다시 켜면
|
||||
항상 `배경\기본.vrv`로 복원한다.
|
||||
- 변경된 값은 이후 장면 PREPARE의 공통 배경 mutation에 사용된다.
|
||||
|
||||
## 새 구현
|
||||
|
||||
`SceneDirectory`(Cuts)는 기존 장면과 장면 내부 자산만 계속 담당한다. 운영자
|
||||
F2/F3 배경은 별도 `LegacyBackgroundDirectory`에서만 해석하며 두 allowlist
|
||||
root를 합치거나 서로 대신 사용하지 않는다.
|
||||
|
||||
```json
|
||||
{
|
||||
"sceneDirectory": "D:\\Tornado\\Cuts",
|
||||
"legacyBackgroundDirectory": "D:\\Tornado\\배경",
|
||||
"legacySceneBackgroundKind": "None",
|
||||
"legacySceneBackgroundAssetPath": null
|
||||
}
|
||||
```
|
||||
|
||||
`legacyBackgroundDirectory`를 생략하면 원본 배치와 동일하게
|
||||
`SceneDirectory\..\배경`을 계산한다. 설정 파일과 환경 변수
|
||||
`MBN_STOCK_PLAYOUT_LEGACY_BACKGROUND_DIRECTORY` 중 환경 변수가 우선한다.
|
||||
배경 파일 경로는 Web 메시지로 입력받지 않으며 네이티브 F2 picker 결과만 받는다.
|
||||
|
||||
F2/F3는 IDLE에서만 변경할 수 있고 변경은 다음 PREPARE부터 적용된다. F2는
|
||||
원본처럼 picker를 열기 전에 `기본.vrv` 복원을 시도하지만, 그 파일이 신뢰 검증을
|
||||
통과하지 못하면 재생 가능한 mutation으로 만들지 않는다. F3로 다시 켤 때도
|
||||
이전 사용자 선택 파일이 아니라 원본과 같은 `기본.vrv`를 새로 검증한다.
|
||||
|
||||
## Fail-closed 검증
|
||||
|
||||
배경 root와 파일은 사용할 때마다 다음 조건을 모두 만족해야 한다.
|
||||
|
||||
- 절대 root가 실제 디렉터리이며 root와 모든 조상 디렉터리가 reparse point가 아님
|
||||
- 상대 파일이 root 내부에 있고 허용 확장자이며 누락되지 않음
|
||||
- 열린 파일 handle이 가리키는 최종 canonical path가 검사한 경로와 동일함
|
||||
- 열린 대상이 directory/reparse point가 아닌 non-empty regular file임
|
||||
- hard link 수가 정확히 1임
|
||||
- 검사 중 디렉터리 조상과 파일 handle은 delete/rename 공유를 허용하지 않음
|
||||
|
||||
root나 파일이 없거나 검증 결과가 불명확하면 경로를 Web/오류에 노출하지 않고
|
||||
F2/F3 또는 PREPARE를 거부한다. Cuts root로의 fallback은 없다.
|
||||
|
||||
## 현재 자산 확인
|
||||
|
||||
2026-07-12에 원본 `bin\Debug\Cuts`의 형제 `bin\Debug\배경`과
|
||||
`배경\기본.vrv`를 확인했으나 둘 다 존재하지 않았다. 따라서 자산이 배치되기
|
||||
전까지 현재 환경의 기본 배경은 의도대로 fail closed 상태다. 실제 vrv 파일은
|
||||
Git/MSIX에 포함하지 않는다.
|
||||
Reference in New Issue
Block a user