# Web 무패치 시나리오 시연 배포

Last reviewed: 2026-11-02 12:37:32 KST.
Owner: Contextra AI의 시나리오 호환·현장 적용 절차. 상태: `FIGHT/FALL 11/3 시연용 잠정 완료 / 추가 고도화 보류`.
실제 실행 이력은 [Runtime Lifecycle](../profiles/ltb1021/topics/runtime-lifecycle/README.ko.md)의 timestamp 기록이 소유한다. 이 가이드는 운영 적용 완료 증거가 아니다.

## 목적과 역할

검토 영상으로 수용한 고정 시나리오 후보를 기존 Web 수정 없이 AI 설치본에 연결하고, 사용자가 브라우저로 확인하는 절차다. 싸움 다음에 쓰러짐을 개선할 때도 절차를 재사용하되, 엔진·규칙·score·Event 기대는 시나리오마다 별도 확정한다.

- Codex: 실제 소스/설정/배포 기준 확인, 호환 adapter, 승인된 AI 반영, bounded 기술 확인, 재현·복귀 기록.
- 사용자: Web Start/Stop·시각 평가·시연 수용 판단. Web 동료의 패치는 선행 필수가 아니다.
- 실제 배포 요청 전에는 source/문서 합의와 운영 반영을 구분한다. AI가 임의로 시험 채널을 자동 Start하지 않는다.
- Web DB의 Start 상태로부터 정상 재요청이 유입되는 것은 별개다. 유지보수 뒤 이를 AI의 자발적 Start나 회수 실패로 오인하지 않는다.

## 현재 싸움 적용 합의

현재 배포와 사용자 설정을 유지하며 개발·튜닝만 보류한다. 사람 score 약0.35의 사용자 관찰과 군중 씬 잔여 오이벤트는 [Owner 현재 상태](../profiles/ltb1021/topics/runtime-lifecycle/README.ko.md#싸움-시연-현재-상태)를 따른다. 11/3 시연 이후 별도 요청까지 고도화를 보류하고, camera6·Tracker 보관시간 비교와 PostgreSQL 동시성 검사2개·장시간 안정성·정오탐 일반화의 미검증 범위도 유지한다. 전체 채널 수용 완료를 뜻하지 않는다.

- 2026-11-01 후속: [Event 재무장·지속 재알림 적용](../profiles/ltb1021/topics/runtime-lifecycle/run/20261101T152102+0900-run-icerti-r5-notification-deployment.md). 공용 R5 판정은 유지하고2초 재무장·기존cooldown 재알림을 source-only로 반영했다. camera24의75초 실제 Event6건과 사용자 알람/미디어 확인을 받았다. 아래 최초 배포의 source 기준과 후속 알림 패치를 구분하며 현장 actual source/image는 최신 실행 기록을 따른다.
- 최초 통합 기준: 고정 R5 통합 source `458d5ead4e1e54e7e39c15f72a9ef5206fa768ed`. [Web 설정 계약](../integration/FIGHT_R5_WEB_CONFIG.ko.md), [격리 검증](../profiles/ltb1021/topics/runtime-lifecycle/run/20261031T103126+0900-run-fight-r5-runtime-integration.md).
- 아이서티는 특정 채널만 고르는 시험이 아니라 **기존28채널과 신규 Web 등록 template의 FIGHT 기본 엔진을 R5**로 반영했다. 기존 등록·저장 채널, 신규 등록 및 반복 Start·재기동 후에도 같은 정책을 유지한다.
- 공용 source는 채널별 private `fight.engine` 선택이며 미지정은 legacy다. 아이서티의 저장 채널과 신규 template/default에 R5를 명시해 정합화했고 다른 설치본의 fallback은 바꾸지 않았다. 별도 수동 설정을 작성할 때도 이 명시적 선택 계약을 따른다.
- 기존 legacy 저장값을 이번 전환의 자동 예외로 남기지 않는다. legacy 선택 경로는 명시적 비상 복귀용으로 보존한다. 구현 방법과 exact 파일은 현장 baseline 확인 후 잠근다.
- 전체 R5는 모든 채널을 강제 Start하거나 FIGHT를 강제 On하는 의미가 아니다. Web의 On/Off·ROI·공통 cooldown을 유지하며, 다른 시나리오·test·101·청계산·SSIMS에는 기본값 변경을 전파하지 않는다.
- R5 조건은 고정한다. 사람0.25·관절0.10 하한, 구형 동작 필드 무시, 버전1 설정의 생략/오류/실효값 정책과 실시간 빨강 표시를 유지한다.

## 현재 쓰러짐 적용 합의

11/2 사용자 시각 평가에 따라 **11/3 시연용 잠정 완료**로 정리했다. camera6·8·9의 시연 수용 제외·탑뷰 관찰·두 고도화 제안과 항목별 상세 미확정은 [Owner 현재 상태](../profiles/ltb1021/topics/runtime-lifecycle/README.ko.md#쓰러짐-공간-후보-현재-상태)와 [후속 과제](../profiles/ltb1021/topics/runtime-lifecycle/README.ko.md#쓰러짐-후속-과제)를 따른다. 제외·보류는 채널 Stop/FALL Off가 아니며 현재 배포·사용자 설정을 유지한다. 이번 문서 정리에서 코드·운영 설정 변경·Runtime 조회·추가 시험은 하지 않았다.

[FALL R2 최초 통합·배포 기록](../profiles/ltb1021/topics/runtime-lifecycle/run/20261101T194121+0900-run-fall-r2-runtime-deployment.md)은 R1+D1/D2와 기존28채널·신규template R2 전환의 근거다. 최신 source/persistent 복귀 진입점은 [11/2 공개 설정 적용](../profiles/ltb1021/topics/runtime-lifecycle/run/20261102T121749+0900-run-fall-r2-public-config-deployment.md), 현행 계약은 [Web 명세](../integration/FALL_R2_WEB_CONFIG.ko.md)다. FIGHT·다른 시나리오·Tracker를 보존하며 FALL 강제On·채널 강제Start는 하지 않는다.

- 구형 각도·회복 요청은 R2에서 무시한다. 새 버전 블록은 engine 선택이 아니다. 11/2에는 기존 공통 score2개·cooldown 외에 R1 몸통/다리와 D1 무릎의 제한된 각도3개를 version1 optional로 공개했다. 기본50/50/140에서 판정은 불변이며 기존 score·cooldown·ROI·On/Off는 유지했다.
- 11/2 적용은 source6파일과 기존28채널·template의 r2 각도 기본값만 정합화했다. Gateway hold→기존 채널/Event drain→Analytics 교체→readiness/실효값 확인→Gateway 복구를 수행했다. 브라우저 확인 요청·대기·별도 Start·알람 유도 없이 AI 확인까지 마감했으며 자연 Web 재요청은 허용했다.
- 마지막 최종 충족2초 재무장, 기존 FALL cooldown 재알림과 현재/1초 유지 빨강을 구현했다. 회복 분류·중복 legacy 경로는 실행하지 않는다.
- 기존image 기반 source-only 패치, 설정/기본값 CAS·backup, Gateway 유입 차단→교체→설정 정합→readiness→유입 복구를 수행했다. source·image·복귀 transaction은 실행 기록을 따른다.
- **11/1 배포 승인에서는 브라우저 확인 요청/대기·별도Start·알람 유도·60~120초 관측을 생략했다.** 당시 AI readiness·설정·중대한 오류의 bounded 확인까지 마감했고 브라우저 수용은 미확인이었다. 이후 11/2 사용자 시각 평가를 위 범위로 수용하되 FALL 알람·썸네일·클립 각각의 상세 검증 완료로 확대하지 않는다. 당시 예외를 다른 배포의 자동 smoke 면제 규칙으로 확대하지 않는다.

## 반복 Start를 고려한 반영

Web은 DB가 Start인 채널에 주기적으로 Start를 재전송한다는 사용자 설명이다. 약1초는 참고값이며 이번에 실제 주기를 측정하거나 Web 코드를 수정한 사실이 아니다. 상세 계약은 [SECURE_REST_BRIDGE](../integration/SECURE_REST_BRIDGE.ko.md#web-desired-state-재전송과-유지보수)를 따른다.

1. 저장된 Web 의도와 AI의 현재 실행을 구분한다. AI Stop만으로 Web DB가 Stop으로 바뀌지 않는다.
2. 준비 중의 반복 요청으로 구형 engine 선택이 다시 저장되거나 승인하지 않은 mixed source/config가 실행되지 않도록 실제 ingress·저장·기동 순서를 정한다.
3. 무유입 구간이 필요하면 exact 요청에서 허용된 Gateway 중지 또는 사용자 Web Stop을 사용한다. Web DB/재요청 주기를 임의 변경하거나 임시 우회 경로를 만들지 않는다.
4. source·지속 default·기존 설정을 정합화한 뒤 정상 유입을 복구한다. 재유입 Start는 새 R5 설정을 유지해야 하며, 같은 실효 입력은 불필요한 restart나 run 교체를 만들지 않아야 한다.
5. 입력 URI·시간 anchor·ROI 등 실제 변경은 단순 중복과 구분한다. 모든 Start를 내용과 관계없이 무시하는 식으로 처리하지 않는다.
6. 복구 후 Web에서 재시작된 허용 채널을 반복 Stop하지 않는다. 사용자가 수동 시험을 맡은 이후 Codex가 별도 Start/Stop을 대신하지 않는다.

## 배포 전·실행·수용

| 단계 | 해야 할 일 | 완료 기준 |
| --- | --- | --- |
| 후보 고정 | 사용자 시각 수용 범위, 코드·규칙·설정 지문 연결 | 샘플 수용과 라이브 일반화를 구분 |
| 실제 baseline | branch/source/image/transaction, mount·model·설정·ct와 현장 Start 모드 확인 | 다른 세대의 source를 섞지 않음 |
| 호환 묶음 | 현장 image 기반 필요한 최소 일관된 패치 준비 | 최신 branch 전체 이식·모델 재변환·다중 ROI 전환을 끼워 넣지 않음 |
| 복귀 준비 | 이전 source/image·persistent default·채널 설정 snapshot과 CAS 보존 | 원래 실효값까지 돌아갈 방법 확보 |
| 반영 | 승인된 Contextra 컨테이너만 교체·필요한 설정 정합화 | 같은 컨테이너의 다른 채널 일시 중단 가능성을 승인 범위로 취급 |
| AI 준비 | source/config 반영과 process readiness·오류 여부 확인 | 사용자 브라우저 검토 단계로 넘길 준비 완료 |
| 사용자 시험 | 기존 Web 요청·표시·실제 알람·썸네일·클립 확인 | 사용자 피드백과 bounded 로그로 수용/잔여사항 분리 |
| 마감 | 최종 persistent 상태·운영 상태·복귀 지점 기록 | 임시값과 자동복구를 남기지 않고 다음 반복에 재사용 가능 |

R5 재알림 배포에서는 실제 Event·썸네일/클립·브라우저 확인을 수행했고 기록에 남겼다. 후속 FALL R2 배포는 위 별도 승인 범위대로 AI 확인까지만 수행했다. 정상 Web 재요청에 따른 자연 Event는 허용하되 mock POST·과거 Event 재전송·알람 유도와 cooldown 임의 변경은 하지 않는다. 기존 인증·목적지·보관 정책은 유지한다.

정상 수용 시 R5 배포와 기본 설정은 유지하고 채널 실행 여부는 사용자가 결정한다. 실패하면 영향·원인·복귀안을 보고한다. 승인 없는 자동 rollback·재Start는 하지 않는다. Web의 정상 재요청에 따른 실행과 Codex의 제어 호출은 기록에서 구분한다.

## 최소 검증

- **필수 1 / 설정·반복 요청:** 구형 Web, 기존/신규 채널, 재기동 후 R5 실효값, 생략/score 하한/오류/no-op를 확인한다. 변경 없는 규칙은 기존 cache 검증을 재사용하고 설정 연결 변경에 필요한 검사만 추가한다.
- **필수 2 / 출력·알람:** 실제 기여 객체와1초 유지의 빨강, 미관측 해제, Event 중복 억제, 실제 알람/썸네일/클립을 확인한다. 짧은 처리 상태 확인을 장시간10FPS 보장으로 확대하지 않는다.
- **권장:** 비싸움 비교자료 한 개의 짧은 수동 확인. 사용자가 허용한 채널만 시험하며 정오탐은 사용자가 판단한다.
- **보류:** 장시간·자연 장면 일반화, 비대상 서버 반영, 새 Web 설정 UI 패치, 다른 시나리오 동시 개선.

## 실제 실행 뒤 남길 항목

배포 전에 기존 ERROR가 발견되고 사용자가 조사를 요청하면 상태 리셋보다 근거 보존을 먼저 한다. 원본은 승인된 서버의 제한 폴더에, 동료용 자료는 마스킹본으로 분리한다. 채널/run/generation·최초 오류·최종 상태·요청/응답을 연결하고 원인 확인과 책임 추정을 구분한다. [6채널 사례](../profiles/ltb1021/topics/runtime-lifecycle/analysis/20261101T101310+0900-analysis-icerti-six-channel-errors.md)는 첫 보존 사례이며, R5가 입력 경로 오류까지 해결한다고 표현하지 않는다.

하나의 새 timestamp 실행 기록에 대상 서버·source/image·patch manifest, 원래/최종 persistent 설정 지문, 실제 명령 또는 재실행 helper, 작업 순서, 중단·유입 복구, 사용자 시험 결과, rollback 절차를 연결한다. 원문 secret·인증 URL은 기록하지 않는다. 별도 확인 없이 복붙 재실행할 수 있다는 의미는 아니며 매번 actual baseline과 CAS를 다시 확인한다.

첫 실제 적용의 명령/helper·지문·설정 전환·복귀 기준은 [최초 R5 배포 기록](../profiles/ltb1021/topics/runtime-lifecycle/run/20261101T102749+0900-run-icerti-r5-deployment.md)에 연결했다. 당시 영상 문제 보류·Web 수용 미완료와 후속 재알림 반영·camera24 사용자 확인을 구분한다. 쓰러짐의 별도 후보 수용·통합·적용은 위 FALL R2 기록을 따른다. R5 score·판정 규칙·Event 수치를 쓰러짐에 자동 복제하지 않는다.
