# Report Inbox · 2026-08-10 · work-session

Status: receipt-shard

## 11:15 KST · M20 Benchmark manifest lifecycle와 trusted metadata finalization 보정

Receipt: `20260810-work-session-m20-benchmark-manifest-lifecycle-r01`

### 결과
- Explicit Detailed 시작에서 trusted metadata와 exact run, channel, generation 및 start counter를 고정하는 manifest v3 lifecycle을 구현했다.
- 정상 중지와 비정상 종료를 idempotent하게 finalize하고 performance, environment와 persistence correctness completeness를 분리했다.
- 기존 v2 incomplete artifact를 불변으로 유지하고 M20 worker, event 의미와 public contract는 변경하지 않았다.

### 검증
- Targeted 및 관련 regression 59개와 strict overhead gate를 통과했다.
- Base Studio Playwright를 desktop, portrait와 mobile viewport에서 통과했다.
- 실제 channel, runtime, Redis, config, Revision Set과 pointer mutation은 수행하지 않았다.

### 남은 작업
- Base Studio manifest v3 lifecycle 사용자 재-smoke와 formal legacy YOLO11 Baseline A 측정이 남았다.
- M20 persistence worker와 reliability 구현은 별도 승인 전까지 시작하지 않는다.

<!-- codex-report-receipt-v1:eyJjb21taXRzIjpbXSwicmVjZWlwdF9pZCI6IjIwMjYwODEwLXdvcmstc2Vzc2lvbi1tMjAtYmVuY2htYXJrLW1hbmlmZXN0LWxpZmVjeWNsZS1yMDEiLCJyZW1haW5pbmciOlsiQmFzZSBTdHVkaW8gbWFuaWZlc3QgdjMgbGlmZWN5Y2xlIOyCrOyaqeyekCDsnqwtc21va2XsmYAgZm9ybWFsIGxlZ2FjeSBZT0xPMTEgQmFzZWxpbmUgQSDsuKHsoJXsnbQg64Ko7JWY64ukLiIsIk0yMCBwZXJzaXN0ZW5jZSB3b3JrZXLsmYAgcmVsaWFiaWxpdHkg6rWs7ZiE7J2AIOuzhOuPhCDsirnsnbgg7KCE6rmM7KeAIOyLnOyeke2VmOyngCDslYrripTri6QuIl0sInJlc3VsdHMiOlsiRXhwbGljaXQgRGV0YWlsZWQg7Iuc7J6R7JeQ7IScIHRydXN0ZWQgbWV0YWRhdGHsmYAgZXhhY3QgcnVuLCBjaGFubmVsLCBnZW5lcmF0aW9uIOuwjyBzdGFydCBjb3VudGVy66W8IOqzoOygle2VmOuKlCBtYW5pZmVzdCB2MyBsaWZlY3ljbGXsnYQg6rWs7ZiE7ZaI64ukLiIsIuygleyDgSDspJHsp4DsmYAg67mE7KCV7IOBIOyiheujjOulvCBpZGVtcG90ZW507ZWY6rKMIGZpbmFsaXpl7ZWY6rOgIHBlcmZvcm1hbmNlLCBlbnZpcm9ubWVudOyZgCBwZXJzaXN0ZW5jZSBjb3JyZWN0bmVzcyBjb21wbGV0ZW5lc3Prpbwg67aE66as7ZaI64ukLiIsIuq4sOyhtCB2MiBpbmNvbXBsZXRlIGFydGlmYWN066W8IOu2iOuzgOycvOuhnCDsnKDsp4DtlZjqs6AgTTIwIHdvcmtlciwgZXZlbnQg7J2Y66-47JmAIHB1YmxpYyBjb250cmFjdOuKlCDrs4Dqsr3tlZjsp4Ag7JWK7JWY64ukLiJdLCJzY2hlbWFfdmVyc2lvbiI6Imx0YjEwMjEuY29kZXhfaHViLnJlcG9ydF9yZWNlaXB0LnYxIiwic2Vzc2lvbl9hbGlhcyI6Indvcmstc2Vzc2lvbiIsInRhc2siOiJNMjAgQmVuY2htYXJrIG1hbmlmZXN0IGxpZmVjeWNsZeyZgCB0cnVzdGVkIG1ldGFkYXRhIGZpbmFsaXphdGlvbiDrs7TsoJUiLCJ0aW1lc3RhbXAiOiIyMDI2LTA4LTEwVDExOjE1OjQ4KzA5OjAwIiwidmVyaWZ5IjpbIlRhcmdldGVkIOuwjyDqtIDroKggcmVncmVzc2lvbiA1OeqwnOyZgCBzdHJpY3Qgb3ZlcmhlYWQgZ2F0ZeulvCDthrXqs7ztlojri6QuIiwiQmFzZSBTdHVkaW8gUGxheXdyaWdodOulvCBkZXNrdG9wLCBwb3J0cmFpdOyZgCBtb2JpbGUgdmlld3BvcnTsl5DshJwg7Ya16rO87ZaI64ukLiIsIuyLpOygnCBjaGFubmVsLCBydW50aW1lLCBSZWRpcywgY29uZmlnLCBSZXZpc2lvbiBTZXTqs7wgcG9pbnRlciBtdXRhdGlvbuydgCDsiJjtlontlZjsp4Ag7JWK7JWY64ukLiJdfQo -->

## 11:46 KST · M20 Benchmark local file URI 입력 identity 보정

Receipt: `20260810-m20-file-uri-input-identity-r01`

### 결과
- 오프라인 file source의 raw #, 한글, 공백과 percent-encoded 경로를 한 번만 decode해 동일한 SHA-256 identity로 수집하도록 보정했다.
- 기존 allowed root, symlink, regular-file, size cap과 raw path 비노출 계약을 유지했다.

### 검증
- M20 event persistence observability targeted regression 16 passed와 6 subtests passed.
- py_compile과 git diff --check를 통과했다.

### 남은 작업
- 사용자 ch42 재-Smoke와 formal Baseline A 확정이 남았다.

<!-- codex-report-receipt-v1:eyJjb21taXRzIjpbXSwicmVjZWlwdF9pZCI6IjIwMjYwODEwLW0yMC1maWxlLXVyaS1pbnB1dC1pZGVudGl0eS1yMDEiLCJyZW1haW5pbmciOlsi7IKs7Jqp7J6QIGNoNDIg7J6sLVNtb2tl7JmAIGZvcm1hbCBCYXNlbGluZSBBIO2ZleygleydtCDrgqjslZjri6QuIl0sInJlc3VsdHMiOlsi7Jik7ZSE65287J24IGZpbGUgc291cmNl7J2YIHJhdyAjLCDtlZzquIAsIOqzteuwseqzvCBwZXJjZW50LWVuY29kZWQg6rK966Gc66W8IO2VnCDrsojrp4wgZGVjb2Rl7ZW0IOuPmeydvO2VnCBTSEEtMjU2IGlkZW50aXR566GcIOyImOynke2VmOuPhOuhnSDrs7TsoJXtlojri6QuIiwi6riw7KG0IGFsbG93ZWQgcm9vdCwgc3ltbGluaywgcmVndWxhci1maWxlLCBzaXplIGNhcOqzvCByYXcgcGF0aCDruYTrhbjstpwg6rOE7JW97J2EIOycoOyngO2WiOuLpC4iXSwic2NoZW1hX3ZlcnNpb24iOiJsdGIxMDIxLmNvZGV4X2h1Yi5yZXBvcnRfcmVjZWlwdC52MSIsInNlc3Npb25fYWxpYXMiOiJ3b3JrLXNlc3Npb24iLCJ0YXNrIjoiTTIwIEJlbmNobWFyayBsb2NhbCBmaWxlIFVSSSDsnoXroKUgaWRlbnRpdHkg67O07KCVIiwidGltZXN0YW1wIjoiMjAyNi0wOC0xMFQxMTo0NjoxNiswOTowMCIsInZlcmlmeSI6WyJNMjAgZXZlbnQgcGVyc2lzdGVuY2Ugb2JzZXJ2YWJpbGl0eSB0YXJnZXRlZCByZWdyZXNzaW9uIDE2IHBhc3NlZOyZgCA2IHN1YnRlc3RzIHBhc3NlZC4iLCJweV9jb21waWxl6rO8IGdpdCBkaWZmIC0tY2hlY2vrpbwg7Ya16rO87ZaI64ukLiJdfQo -->

## 12:09 KST · M20 전 공식 Baseline A 분석과 durable checkpoint 갱신

Receipt: `20260810-work-session-m20-baseline-a-checkpoint-r01`

### 결과
- 공식 ch42 Baseline A를 performance와 environment identity complete, persistence correctness limited로 판정했다.
- Recorder admission이 frame-thread 지배 비용임을 기존 M20과 perf owner 문서에 반영했다.

### 검증
- 공식 run과 preliminary run을 분리하고 metric의 measured, unavailable, not_applicable 경계를 확인했다.
- 문서 링크와 git diff --check를 검증했으며 runtime, channel, Redis와 pointer mutation은 수행하지 않았다.

### 남은 작업
- Bridge Mode 구현 범위 사용자 결정과 별도 persistence worker 구현 승인이 남았다.

<!-- codex-report-receipt-v1:eyJjb21taXRzIjpbXSwicmVjZWlwdF9pZCI6IjIwMjYwODEwLXdvcmstc2Vzc2lvbi1tMjAtYmFzZWxpbmUtYS1jaGVja3BvaW50LXIwMSIsInJlbWFpbmluZyI6WyJCcmlkZ2UgTW9kZSDqtaztmIQg67KU7JyEIOyCrOyaqeyekCDqsrDsoJXqs7wg67OE64-EIHBlcnNpc3RlbmNlIHdvcmtlciDqtaztmIQg7Iq57J247J20IOuCqOyVmOuLpC4iXSwicmVzdWx0cyI6WyLqs7Xsi50gY2g0MiBCYXNlbGluZSBB66W8IHBlcmZvcm1hbmNl7JmAIGVudmlyb25tZW50IGlkZW50aXR5IGNvbXBsZXRlLCBwZXJzaXN0ZW5jZSBjb3JyZWN0bmVzcyBsaW1pdGVk66GcIO2MkOygle2WiOuLpC4iLCJSZWNvcmRlciBhZG1pc3Npb27snbQgZnJhbWUtdGhyZWFkIOyngOuwsCDruYTsmqnsnoTsnYQg6riw7KG0IE0yMOqzvCBwZXJmIG93bmVyIOusuOyEnOyXkCDrsJjsmIHtlojri6QuIl0sInNjaGVtYV92ZXJzaW9uIjoibHRiMTAyMS5jb2RleF9odWIucmVwb3J0X3JlY2VpcHQudjEiLCJzZXNzaW9uX2FsaWFzIjoid29yay1zZXNzaW9uIiwidGFzayI6Ik0yMCDsoIQg6rO17IudIEJhc2VsaW5lIEEg67aE7ISd6rO8IGR1cmFibGUgY2hlY2twb2ludCDqsLHsi6AiLCJ0aW1lc3RhbXAiOiIyMDI2LTA4LTEwVDEyOjA5OjA3KzA5OjAwIiwidmVyaWZ5IjpbIuqzteyLnSBydW7qs7wgcHJlbGltaW5hcnkgcnVu7J2EIOu2hOumrO2VmOqzoCBtZXRyaWPsnZggbWVhc3VyZWQsIHVuYXZhaWxhYmxlLCBub3RfYXBwbGljYWJsZSDqsr3qs4Trpbwg7ZmV7J247ZaI64ukLiIsIuusuOyEnCDrp4HtgazsmYAgZ2l0IGRpZmYgLS1jaGVja-ulvCDqsoDspp3tlojsnLzrqbAgcnVudGltZSwgY2hhbm5lbCwgUmVkaXPsmYAgcG9pbnRlciBtdXRhdGlvbuydgCDsiJjtlontlZjsp4Ag7JWK7JWY64ukLiJdfQo -->

## 14:16 KST · M20 Baseline A2 CPU frame-copy와 Recorder 세부 계측 구현

Receipt: `20260810-work-session-m20-a2-recorder-instrumentation-r01`

### 결과
- 기존 CPU ring copy를 추가 pixel copy 없이 계측하고 Recorder spawn, pre-roll conversion/pipe, active pipe와 clip evidence를 bounded scalar로 분리했다.
- Base Studio에 frame-copy, Recorder와 retained-memory upper bound를 표시하고 공식 Baseline A는 immutable하게 유지했다.

### 검증
- M20 targeted 22건, 관련 runtime 68건과 artifact 58건을 통과했다.
- Overhead gate와 desktop/portrait/mobile Playwright 3건을 통과했다.

### 남은 작업
- 사용자 ch42 Baseline A2 측정이 대기 중이다.
- M20 persistence worker와 Baseline B는 별도 구현 승인 전 미적용이다.

<!-- codex-report-receipt-v1:eyJjb21taXRzIjpbXSwicmVjZWlwdF9pZCI6IjIwMjYwODEwLXdvcmstc2Vzc2lvbi1tMjAtYTItcmVjb3JkZXItaW5zdHJ1bWVudGF0aW9uLXIwMSIsInJlbWFpbmluZyI6WyLsgqzsmqnsnpAgY2g0MiBCYXNlbGluZSBBMiDsuKHsoJXsnbQg64yA6riwIOykkeydtOuLpC4iLCJNMjAgcGVyc2lzdGVuY2Ugd29ya2Vy7JmAIEJhc2VsaW5lIELripQg67OE64-EIOq1rO2YhCDsirnsnbgg7KCEIOuvuOyggeyaqeydtOuLpC4iXSwicmVzdWx0cyI6WyLquLDsobQgQ1BVIHJpbmcgY29weeulvCDstpTqsIAgcGl4ZWwgY29weSDsl4bsnbQg6rOE7Lih7ZWY6rOgIFJlY29yZGVyIHNwYXduLCBwcmUtcm9sbCBjb252ZXJzaW9uL3BpcGUsIGFjdGl2ZSBwaXBl7JmAIGNsaXAgZXZpZGVuY2XrpbwgYm91bmRlZCBzY2FsYXLroZwg67aE66as7ZaI64ukLiIsIkJhc2UgU3R1ZGlv7JeQIGZyYW1lLWNvcHksIFJlY29yZGVy7JmAIHJldGFpbmVkLW1lbW9yeSB1cHBlciBib3VuZOulvCDtkZzsi5ztlZjqs6Ag6rO17IudIEJhc2VsaW5lIEHripQgaW1tdXRhYmxl7ZWY6rKMIOycoOyngO2WiOuLpC4iXSwic2NoZW1hX3ZlcnNpb24iOiJsdGIxMDIxLmNvZGV4X2h1Yi5yZXBvcnRfcmVjZWlwdC52MSIsInNlc3Npb25fYWxpYXMiOiJ3b3JrLXNlc3Npb24iLCJ0YXNrIjoiTTIwIEJhc2VsaW5lIEEyIENQVSBmcmFtZS1jb3B57JmAIFJlY29yZGVyIOyEuOu2gCDqs4TsuKEg6rWs7ZiEIiwidGltZXN0YW1wIjoiMjAyNi0wOC0xMFQxNDoxNjozOCswOTowMCIsInZlcmlmeSI6WyJNMjAgdGFyZ2V0ZWQgMjLqsbQsIOq0gOugqCBydW50aW1lIDY46rG06rO8IGFydGlmYWN0IDU46rG07J2EIO2GteqzvO2WiOuLpC4iLCJPdmVyaGVhZCBnYXRl7JmAIGRlc2t0b3AvcG9ydHJhaXQvbW9iaWxlIFBsYXl3cmlnaHQgM-qxtOydhCDthrXqs7ztlojri6QuIl19Cg -->

## 14:44 KST · M20 공식 Baseline A2 분석과 durable checkpoint

Receipt: `20260810-work-session-m20-a2-analysis-r01`

### 결과
- Baseline A2를 performance/environment complete, persistence correctness limited인 비교 기준으로 판정했다.
- Recorder admission이 pre-roll pipe와 frame conversion에 지배됨을 확인하고 기존 M20·perf·runtime owner 문서에 반영했다.

### 검증
- A/A2 manifest와 trace를 immutable read-only로 교차검증했다.
- 문서 상태·링크·ID와 git diff --check를 통과했고 ch42 stopped, ch20/ch21 running을 확인했다.

### 남은 작업
- 별도 사용자 승인으로 M20 persistence worker를 구현하고 같은 ch42 조건의 Baseline B를 측정한다.
- Recorder async와 DeepStream/Profile wiring은 초기본 delta audit 뒤 재판단한다.

<!-- codex-report-receipt-v1:eyJjb21taXRzIjpbXSwicmVjZWlwdF9pZCI6IjIwMjYwODEwLXdvcmstc2Vzc2lvbi1tMjAtYTItYW5hbHlzaXMtcjAxIiwicmVtYWluaW5nIjpbIuuzhOuPhCDsgqzsmqnsnpAg7Iq57J247Jy866GcIE0yMCBwZXJzaXN0ZW5jZSB3b3JrZXLrpbwg6rWs7ZiE7ZWY6rOgIOqwmeydgCBjaDQyIOyhsOqxtOydmCBCYXNlbGluZSBC66W8IOy4oeygle2VnOuLpC4iLCJSZWNvcmRlciBhc3luY-yZgCBEZWVwU3RyZWFtL1Byb2ZpbGUgd2lyaW5n7J2AIOy0iOq4sOuzuCBkZWx0YSBhdWRpdCDrkqQg7J6s7YyQ64uo7ZWc64ukLiJdLCJyZXN1bHRzIjpbIkJhc2VsaW5lIEEy66W8IHBlcmZvcm1hbmNlL2Vudmlyb25tZW50IGNvbXBsZXRlLCBwZXJzaXN0ZW5jZSBjb3JyZWN0bmVzcyBsaW1pdGVk7J24IOu5hOq1kCDquLDspIDsnLzroZwg7YyQ7KCV7ZaI64ukLiIsIlJlY29yZGVyIGFkbWlzc2lvbuydtCBwcmUtcm9sbCBwaXBl7JmAIGZyYW1lIGNvbnZlcnNpb27sl5Ag7KeA67Cw65Co7J2EIO2ZleyduO2VmOqzoCDquLDsobQgTTIwwrdwZXJmwrdydW50aW1lIG93bmVyIOusuOyEnOyXkCDrsJjsmIHtlojri6QuIl0sInNjaGVtYV92ZXJzaW9uIjoibHRiMTAyMS5jb2RleF9odWIucmVwb3J0X3JlY2VpcHQudjEiLCJzZXNzaW9uX2FsaWFzIjoid29yay1zZXNzaW9uIiwidGFzayI6Ik0yMCDqs7Xsi50gQmFzZWxpbmUgQTIg67aE7ISd6rO8IGR1cmFibGUgY2hlY2twb2ludCIsInRpbWVzdGFtcCI6IjIwMjYtMDgtMTBUMTQ6NDQ6MTArMDk6MDAiLCJ2ZXJpZnkiOlsiQS9BMiBtYW5pZmVzdOyZgCB0cmFjZeulvCBpbW11dGFibGUgcmVhZC1vbmx566GcIOq1kOywqOqygOymne2WiOuLpC4iLCLrrLjshJwg7IOB7YOcwrfrp4HtgazCt0lE7JmAIGdpdCBkaWZmIC0tY2hlY2vrpbwg7Ya16rO87ZaI6rOgIGNoNDIgc3RvcHBlZCwgY2gyMC9jaDIxIHJ1bm5pbmfsnYQg7ZmV7J247ZaI64ukLiJdfQo -->

## 16:33 KST · M20 architecture-neutral Event Persistence Worker vertical slice 구현

Receipt: `20260810-work-session-m20-persistence-worker-r01`

### 결과
- Same-frame immutable snapshot 1개를 공유하는 bounded FIFO worker로 JPG, thumbnail, DB identity 확인과 relay를 frame thread에서 분리했다.
- Atomic Redis reservation, stage별 fail-closed, 5초 bounded drain, manifest v4 worker generation 검증과 Base Studio projection을 구현했다.
- Recorder admission과 active-frame FFmpeg pipe는 기존 frame thread owner에 유지했다.

### 검증
- Targeted worker, DB, observability와 Recorder test 35개 및 scenario regression 72개를 통과했다.
- 관련 runtime regression 119개, 두 overhead gate와 Base Studio 3-view Playwright를 통과했다.
- 실제 channel, runtime, Redis, config와 pointer mutation은 수행하지 않았다.

### 남은 작업
- 사용자 Base Studio worker UI smoke와 ch42 공식 Baseline B 측정이 남았다.
- Recorder 비동기화, retry/outbox와 DeepStream, RF-DETR, Profile wiring은 보류다.

<!-- codex-report-receipt-v1:eyJjb21taXRzIjpbXSwicmVjZWlwdF9pZCI6IjIwMjYwODEwLXdvcmstc2Vzc2lvbi1tMjAtcGVyc2lzdGVuY2Utd29ya2VyLXIwMSIsInJlbWFpbmluZyI6WyLsgqzsmqnsnpAgQmFzZSBTdHVkaW8gd29ya2VyIFVJIHNtb2tl7JmAIGNoNDIg6rO17IudIEJhc2VsaW5lIEIg7Lih7KCV7J20IOuCqOyVmOuLpC4iLCJSZWNvcmRlciDruYTrj5nquLDtmZQsIHJldHJ5L291dGJveOyZgCBEZWVwU3RyZWFtLCBSRi1ERVRSLCBQcm9maWxlIHdpcmluZ-ydgCDrs7TrpZjri6QuIl0sInJlc3VsdHMiOlsiU2FtZS1mcmFtZSBpbW11dGFibGUgc25hcHNob3QgMeqwnOulvCDqs7XsnKDtlZjripQgYm91bmRlZCBGSUZPIHdvcmtlcuuhnCBKUEcsIHRodW1ibmFpbCwgREIgaWRlbnRpdHkg7ZmV7J246rO8IHJlbGF566W8IGZyYW1lIHRocmVhZOyXkOyEnCDrtoTrpqztlojri6QuIiwiQXRvbWljIFJlZGlzIHJlc2VydmF0aW9uLCBzdGFnZeuzhCBmYWlsLWNsb3NlZCwgNey0iCBib3VuZGVkIGRyYWluLCBtYW5pZmVzdCB2NCB3b3JrZXIgZ2VuZXJhdGlvbiDqsoDspp3qs7wgQmFzZSBTdHVkaW8gcHJvamVjdGlvbuydhCDqtaztmITtlojri6QuIiwiUmVjb3JkZXIgYWRtaXNzaW9u6rO8IGFjdGl2ZS1mcmFtZSBGRm1wZWcgcGlwZeuKlCDquLDsobQgZnJhbWUgdGhyZWFkIG93bmVy7JeQIOycoOyngO2WiOuLpC4iXSwic2NoZW1hX3ZlcnNpb24iOiJsdGIxMDIxLmNvZGV4X2h1Yi5yZXBvcnRfcmVjZWlwdC52MSIsInNlc3Npb25fYWxpYXMiOiJ3b3JrLXNlc3Npb24iLCJ0YXNrIjoiTTIwIGFyY2hpdGVjdHVyZS1uZXV0cmFsIEV2ZW50IFBlcnNpc3RlbmNlIFdvcmtlciB2ZXJ0aWNhbCBzbGljZSDqtaztmIQiLCJ0aW1lc3RhbXAiOiIyMDI2LTA4LTEwVDE2OjMzOjMyKzA5OjAwIiwidmVyaWZ5IjpbIlRhcmdldGVkIHdvcmtlciwgREIsIG9ic2VydmFiaWxpdHnsmYAgUmVjb3JkZXIgdGVzdCAzNeqwnCDrsI8gc2NlbmFyaW8gcmVncmVzc2lvbiA3MuqwnOulvCDthrXqs7ztlojri6QuIiwi6rSA66CoIHJ1bnRpbWUgcmVncmVzc2lvbiAxMTnqsJwsIOuRkCBvdmVyaGVhZCBnYXRl7JmAIEJhc2UgU3R1ZGlvIDMtdmlldyBQbGF5d3JpZ2h066W8IO2GteqzvO2WiOuLpC4iLCLsi6TsoJwgY2hhbm5lbCwgcnVudGltZSwgUmVkaXMsIGNvbmZpZ-yZgCBwb2ludGVyIG11dGF0aW9u7J2AIOyImO2Wie2VmOyngCDslYrslZjri6QuIl19Cg -->

## 17:32 KST · M20 Benchmark pipeline label 보정과 service-wide Profile 2축 계약 잠금

Receipt: `20260810-work-session-m20-pipeline-label-profile-lock-r01`

### 결과
- worker exact channel/generation identity와 ready/running state로 m20_after를 판정하고 explicit false만 m20_before로 판정하도록 보정했다.
- missing, malformed와 stale worker identity는 label을 추측하지 않고 Benchmark environment identity를 incomplete 처리한다.
- DeepStream/RF-DETR 전환기의 pipeline backend와 model family를 service-wide 독립 두 축으로 잠그고 실제 wiring은 초기본 delta audit까지 보류했다.

### 검증
- M20 Benchmark targeted unittest 20개와 py_compile, git diff --check를 통과했다.
- 기존 Benchmark artifact, runtime, channel, Redis, config와 pointer mutation은 수행하지 않았다.

### 남은 작업
- 변경 commit/push와 corrected m20_after label의 공식 ch42 Baseline B 측정이 남았다.
- 실제 Profile/Compose/Triton wiring은 DeepStream/RF-DETR 초기본 delta audit 뒤 구현한다.

<!-- codex-report-receipt-v1:eyJjb21taXRzIjpbXSwicmVjZWlwdF9pZCI6IjIwMjYwODEwLXdvcmstc2Vzc2lvbi1tMjAtcGlwZWxpbmUtbGFiZWwtcHJvZmlsZS1sb2NrLXIwMSIsInJlbWFpbmluZyI6WyLrs4Dqsr0gY29tbWl0L3B1c2jsmYAgY29ycmVjdGVkIG0yMF9hZnRlciBsYWJlbOydmCDqs7Xsi50gY2g0MiBCYXNlbGluZSBCIOy4oeygleydtCDrgqjslZjri6QuIiwi7Iuk7KCcIFByb2ZpbGUvQ29tcG9zZS9Ucml0b24gd2lyaW5n7J2AIERlZXBTdHJlYW0vUkYtREVUUiDstIjquLDrs7ggZGVsdGEgYXVkaXQg65KkIOq1rO2YhO2VnOuLpC4iXSwicmVzdWx0cyI6WyJ3b3JrZXIgZXhhY3QgY2hhbm5lbC9nZW5lcmF0aW9uIGlkZW50aXR57JmAIHJlYWR5L3J1bm5pbmcgc3RhdGXroZwgbTIwX2FmdGVy66W8IO2MkOygle2VmOqzoCBleHBsaWNpdCBmYWxzZeunjCBtMjBfYmVmb3Jl66GcIO2MkOygle2VmOuPhOuhnSDrs7TsoJXtlojri6QuIiwibWlzc2luZywgbWFsZm9ybWVk7JmAIHN0YWxlIHdvcmtlciBpZGVudGl0eeuKlCBsYWJlbOydhCDstpTsuKHtlZjsp4Ag7JWK6rOgIEJlbmNobWFyayBlbnZpcm9ubWVudCBpZGVudGl0eeulvCBpbmNvbXBsZXRlIOyymOumrO2VnOuLpC4iLCJEZWVwU3RyZWFtL1JGLURFVFIg7KCE7ZmY6riw7J2YIHBpcGVsaW5lIGJhY2tlbmTsmYAgbW9kZWwgZmFtaWx566W8IHNlcnZpY2Utd2lkZSDrj4Xrpr0g65GQIOy2leycvOuhnCDsnqDqt7jqs6Ag7Iuk7KCcIHdpcmluZ-ydgCDstIjquLDrs7ggZGVsdGEgYXVkaXTquYzsp4Ag67O066WY7ZaI64ukLiJdLCJzY2hlbWFfdmVyc2lvbiI6Imx0YjEwMjEuY29kZXhfaHViLnJlcG9ydF9yZWNlaXB0LnYxIiwic2Vzc2lvbl9hbGlhcyI6Indvcmstc2Vzc2lvbiIsInRhc2siOiJNMjAgQmVuY2htYXJrIHBpcGVsaW5lIGxhYmVsIOuztOygleqzvCBzZXJ2aWNlLXdpZGUgUHJvZmlsZSAy7LaVIOqzhOyVvSDsnqDquIgiLCJ0aW1lc3RhbXAiOiIyMDI2LTA4LTEwVDE3OjMyOjQ0KzA5OjAwIiwidmVyaWZ5IjpbIk0yMCBCZW5jaG1hcmsgdGFyZ2V0ZWQgdW5pdHRlc3QgMjDqsJzsmYAgcHlfY29tcGlsZSwgZ2l0IGRpZmYgLS1jaGVja-ulvCDthrXqs7ztlojri6QuIiwi6riw7KG0IEJlbmNobWFyayBhcnRpZmFjdCwgcnVudGltZSwgY2hhbm5lbCwgUmVkaXMsIGNvbmZpZ-yZgCBwb2ludGVyIG11dGF0aW9u7J2AIOyImO2Wie2VmOyngCDslYrslZjri6QuIl19Cg -->

## 21:11 KST · M20 Baseline B와 Recorder cleanup rollout checkpoint 갱신

Receipt: `20260810-work-session-m20-recorder-cleanup-rollout-checkpoint-r01`

### 결과
- 공식 Baseline B persistence 정확성 완료와 이전 generation stale FFmpeg로 인한 resource 비교 제한을 분리해 기록했다.
- test-server env override 우선, shared Compose 기본값과 아이티원·서비스 rollout 보류, Codex 수행 ch42 canary 순서를 잠갔다.

### 검증
- M20 owner와 cleanup rollout owner의 상태 일치를 확인하고 git diff --check를 통과했다.
- process, runtime, channel, container와 config mutation은 수행하지 않았다.

### 남은 작업
- 문서 commit/push 뒤 별도 승인된 운영 Batch에서 stale child cleanup, test override, ai-worker recreate와 ch42 Recorder-active Stop canary를 수행한다.

<!-- codex-report-receipt-v1:eyJjb21taXRzIjpbXSwicmVjZWlwdF9pZCI6IjIwMjYwODEwLXdvcmstc2Vzc2lvbi1tMjAtcmVjb3JkZXItY2xlYW51cC1yb2xsb3V0LWNoZWNrcG9pbnQtcjAxIiwicmVtYWluaW5nIjpbIuusuOyEnCBjb21taXQvcHVzaCDrkqQg67OE64-EIOyKueyduOuQnCDsmrTsmIEgQmF0Y2jsl5DshJwgc3RhbGUgY2hpbGQgY2xlYW51cCwgdGVzdCBvdmVycmlkZSwgYWktd29ya2VyIHJlY3JlYXRl7JmAIGNoNDIgUmVjb3JkZXItYWN0aXZlIFN0b3AgY2FuYXJ566W8IOyImO2Wie2VnOuLpC4iXSwicmVzdWx0cyI6WyLqs7Xsi50gQmFzZWxpbmUgQiBwZXJzaXN0ZW5jZSDsoJXtmZXshLEg7JmE66OM7JmAIOydtOyghCBnZW5lcmF0aW9uIHN0YWxlIEZGbXBlZ-uhnCDsnbjtlZwgcmVzb3VyY2Ug67mE6rWQIOygnO2VnOydhCDrtoTrpqztlbQg6riw66Gd7ZaI64ukLiIsInRlc3Qtc2VydmVyIGVudiBvdmVycmlkZSDsmrDshKAsIHNoYXJlZCBDb21wb3NlIOq4sOuzuOqwkuqzvCDslYTsnbTti7Dsm5DCt-yEnOu5hOyKpCByb2xsb3V0IOuztOulmCwgQ29kZXgg7IiY7ZaJIGNoNDIgY2FuYXJ5IOyInOyEnOulvCDsnqDqsJTri6QuIl0sInNjaGVtYV92ZXJzaW9uIjoibHRiMTAyMS5jb2RleF9odWIucmVwb3J0X3JlY2VpcHQudjEiLCJzZXNzaW9uX2FsaWFzIjoid29yay1zZXNzaW9uIiwidGFzayI6Ik0yMCBCYXNlbGluZSBC7JmAIFJlY29yZGVyIGNsZWFudXAgcm9sbG91dCBjaGVja3BvaW50IOqwseyLoCIsInRpbWVzdGFtcCI6IjIwMjYtMDgtMTBUMjE6MTE6NTYrMDk6MDAiLCJ2ZXJpZnkiOlsiTTIwIG93bmVy7JmAIGNsZWFudXAgcm9sbG91dCBvd25lcuydmCDsg4Htg5wg7J287LmY66W8IO2ZleyduO2VmOqzoCBnaXQgZGlmZiAtLWNoZWNr66W8IO2GteqzvO2WiOuLpC4iLCJwcm9jZXNzLCBydW50aW1lLCBjaGFubmVsLCBjb250YWluZXLsmYAgY29uZmlnIG11dGF0aW9u7J2AIOyImO2Wie2VmOyngCDslYrslZjri6QuIl19Cg -->

## 21:26 KST · Recorder cleanup test-server pre-recreate 준비

Receipt: `20260810-work-session-m20-recorder-cleanup-prerecreate-r01`

### 결과
- 이전 ch42 stale FFmpeg가 이미 종료돼 process signal 없이 incomplete MP4 evidence만 보존했다.
- test-server Compose env owner에 Recorder Stop cleanup override를 활성화하고 예정값 1과 timeout 5를 확인했다.

### 검증
- 현재 ai-worker는 cleanup 0인 기존 container로 재시작 없이 유지되고 shared Compose fallback과 Git tracked 파일은 불변이다.
- ch42 stale event FFmpeg 0과 ai-worker running·restart count 0을 확인했다.

### 남은 작업
- 사용자가 ai-worker service만 controlled recreate한 뒤 ch20/ch21 복구를 확인하고 별도 ch42 Recorder-active Stop canary를 진행한다.

<!-- codex-report-receipt-v1:eyJjb21taXRzIjpbXSwicmVjZWlwdF9pZCI6IjIwMjYwODEwLXdvcmstc2Vzc2lvbi1tMjAtcmVjb3JkZXItY2xlYW51cC1wcmVyZWNyZWF0ZS1yMDEiLCJyZW1haW5pbmciOlsi7IKs7Jqp7J6Q6rCAIGFpLXdvcmtlciBzZXJ2aWNl66eMIGNvbnRyb2xsZWQgcmVjcmVhdGXtlZwg65KkIGNoMjAvY2gyMSDrs7Xqtazrpbwg7ZmV7J247ZWY6rOgIOuzhOuPhCBjaDQyIFJlY29yZGVyLWFjdGl2ZSBTdG9wIGNhbmFyeeulvCDsp4TtlontlZzri6QuIl0sInJlc3VsdHMiOlsi7J207KCEIGNoNDIgc3RhbGUgRkZtcGVn6rCAIOydtOuvuCDsooXro4zrj7wgcHJvY2VzcyBzaWduYWwg7JeG7J20IGluY29tcGxldGUgTVA0IGV2aWRlbmNl66eMIOuztOyhtO2WiOuLpC4iLCJ0ZXN0LXNlcnZlciBDb21wb3NlIGVudiBvd25lcuyXkCBSZWNvcmRlciBTdG9wIGNsZWFudXAgb3ZlcnJpZGXrpbwg7Zmc7ISx7ZmU7ZWY6rOgIOyYiOygleqwkiAx6rO8IHRpbWVvdXQgNeulvCDtmZXsnbjtlojri6QuIl0sInNjaGVtYV92ZXJzaW9uIjoibHRiMTAyMS5jb2RleF9odWIucmVwb3J0X3JlY2VpcHQudjEiLCJzZXNzaW9uX2FsaWFzIjoid29yay1zZXNzaW9uIiwidGFzayI6IlJlY29yZGVyIGNsZWFudXAgdGVzdC1zZXJ2ZXIgcHJlLXJlY3JlYXRlIOykgOu5hCIsInRpbWVzdGFtcCI6IjIwMjYtMDgtMTBUMjE6MjY6MjQrMDk6MDAiLCJ2ZXJpZnkiOlsi7ZiE7J6sIGFpLXdvcmtlcuuKlCBjbGVhbnVwIDDsnbgg6riw7KG0IGNvbnRhaW5lcuuhnCDsnqzsi5zsnpEg7JeG7J20IOycoOyngOuQmOqzoCBzaGFyZWQgQ29tcG9zZSBmYWxsYmFja-qzvCBHaXQgdHJhY2tlZCDtjIzsnbzsnYAg67aI67OA7J2064ukLiIsImNoNDIgc3RhbGUgZXZlbnQgRkZtcGVnIDDqs7wgYWktd29ya2VyIHJ1bm5pbmfCt3Jlc3RhcnQgY291bnQgMOydhCDtmZXsnbjtlojri6QuIl19Cg -->

## 21:51 KST · ch42 Recorder-active Stop cleanup canary

Receipt: `20260810-work-session-m20-recorder-active-stop-canary-r01`

### 결과
- ch42를 한 번 시작해 자연 event Recorder와 현재 generation FFmpeg를 확인한 뒤 Stop을 한 번 수행했다.
- Stop 처리 시점에는 Recorder가 이미 자연 종료되어 cleanup attempted/stopped/killed가 모두 0이었으므로 canary는 INCONCLUSIVE로 판정했다.
- M20 worker 7개 job은 모두 완료됐고 새 clip 7개는 정상 finalize됐으며 ch42는 stopped로 종료됐다.

### 검증
- ch42 current-generation FFmpeg 0, worker drain complete, unfinished 0, retained bytes 0을 확인했다.
- ch20은 running과 MJPEG가 유지됐고 ch21 외부 RTSP blocked 상태는 변하지 않았다.
- 이전 incomplete clip은 이번 canary 전 ai-worker recreate 시각에 6.8초 valid MP4로 finalize됐으며 이번 canary의 삭제나 rewrite가 아님을 확인했다.

### 남은 작업
- cleanup gate의 실제 active Recorder 정리를 증명하려면 감지와 Stop 호출을 한 흐름으로 결합한 별도 1회 canary 승인이 필요하다.
- clean Baseline B resource comparison은 cleanup canary PASS 뒤 재개한다.

<!-- codex-report-receipt-v1:eyJjb21taXRzIjpbXSwicmVjZWlwdF9pZCI6IjIwMjYwODEwLXdvcmstc2Vzc2lvbi1tMjAtcmVjb3JkZXItYWN0aXZlLXN0b3AtY2FuYXJ5LXIwMSIsInJlbWFpbmluZyI6WyJjbGVhbnVwIGdhdGXsnZgg7Iuk7KCcIGFjdGl2ZSBSZWNvcmRlciDsoJXrpqzrpbwg7Kad66qF7ZWY66Ck66m0IOqwkOyngOyZgCBTdG9wIO2YuOy2nOydhCDtlZwg7Z2Q66aE7Jy866GcIOqysO2Vqe2VnCDrs4Trj4QgMe2ajCBjYW5hcnkg7Iq57J247J20IO2VhOyalO2VmOuLpC4iLCJjbGVhbiBCYXNlbGluZSBCIHJlc291cmNlIGNvbXBhcmlzb27snYAgY2xlYW51cCBjYW5hcnkgUEFTUyDrkqQg7J6s6rCc7ZWc64ukLiJdLCJyZXN1bHRzIjpbImNoNDLrpbwg7ZWcIOuyiCDsi5zsnpHtlbQg7J6Q7JewIGV2ZW50IFJlY29yZGVy7JmAIO2YhOyerCBnZW5lcmF0aW9uIEZGbXBlZ-ulvCDtmZXsnbjtlZwg65KkIFN0b3DsnYQg7ZWcIOuyiCDsiJjtlontlojri6QuIiwiU3RvcCDsspjrpqwg7Iuc7KCQ7JeQ64qUIFJlY29yZGVy6rCAIOydtOuvuCDsnpDsl7Ag7KKF66OM65CY7Ja0IGNsZWFudXAgYXR0ZW1wdGVkL3N0b3BwZWQva2lsbGVk6rCAIOuqqOuRkCAw7J207JeI7Jy866-A66GcIGNhbmFyeeuKlCBJTkNPTkNMVVNJVkXroZwg7YyQ7KCV7ZaI64ukLiIsIk0yMCB3b3JrZXIgN-qwnCBqb2LsnYAg66qo65GQIOyZhOujjOuQkOqzoCDsg4ggY2xpcCA36rCc64qUIOygleyDgSBmaW5hbGl6ZeuQkOycvOupsCBjaDQy64qUIHN0b3BwZWTroZwg7KKF66OM65CQ64ukLiJdLCJzY2hlbWFfdmVyc2lvbiI6Imx0YjEwMjEuY29kZXhfaHViLnJlcG9ydF9yZWNlaXB0LnYxIiwic2Vzc2lvbl9hbGlhcyI6Indvcmstc2Vzc2lvbiIsInRhc2siOiJjaDQyIFJlY29yZGVyLWFjdGl2ZSBTdG9wIGNsZWFudXAgY2FuYXJ5IiwidGltZXN0YW1wIjoiMjAyNi0wOC0xMFQyMTo1MToyMiswOTowMCIsInZlcmlmeSI6WyJjaDQyIGN1cnJlbnQtZ2VuZXJhdGlvbiBGRm1wZWcgMCwgd29ya2VyIGRyYWluIGNvbXBsZXRlLCB1bmZpbmlzaGVkIDAsIHJldGFpbmVkIGJ5dGVzIDDsnYQg7ZmV7J247ZaI64ukLiIsImNoMjDsnYAgcnVubmluZ-qzvCBNSlBFR-qwgCDsnKDsp4DrkJDqs6AgY2gyMSDsmbjrtoAgUlRTUCBibG9ja2VkIOyDge2DnOuKlCDrs4DtlZjsp4Ag7JWK7JWY64ukLiIsIuydtOyghCBpbmNvbXBsZXRlIGNsaXDsnYAg7J2067KIIGNhbmFyeSDsoIQgYWktd29ya2VyIHJlY3JlYXRlIOyLnOqwgeyXkCA2LjjstIggdmFsaWQgTVA066GcIGZpbmFsaXpl65CQ7Jy866mwIOydtOuyiCBjYW5hcnnsnZgg7IKt7KCc64KYIHJld3JpdGXqsIAg7JWE64uY7J2EIO2ZleyduO2WiOuLpC4iXX0K -->
