{"commit":{"body":[{"label":"Why","text":"PR13 첫 Frame에서 iterator 종료 후 무효화된 SDK FrameMetadata를 읽어 채널 process가 segfault로 종료됐다."},{"label":"What","text":"SharedIngress/ProviderGate에서 borrowed wrapper 대신 순회 중 owned FrameEnvelope를 복사하고 수명/단일Frame 회귀 테스트와 운영 기록을 보완했다."},{"label":"Impact","text":"파일1개 delta Analytics image만 반영. 모델/threshold/SDK/Tracking 계약은 보존. Gateway/WSS 재개와 정상 Stop/reap 확인."},{"label":"Verify","text":"Python3.12 표적21 PASS. Pose/Fire 단독 및 2/3-provider Frame 처리, RTSP1/decoder1/branch3, Redis Frame/PTS와 Stop PASS. 단독단계 reader helper 실패는 mixed 단계에서 기존 ACL reader로 정정. 자연FALL4건 Artifact READY이나 HTTP400 INVALID_PARAMS 전송 미수용. 브라우저 NOT RUN."},{"label":"Rollback","text":"이전 image/전체Compose/private baseline 보존. 자동rollback/재Start 없음. 이전 PR13 image는 알려진 native crash가 있어 무검증 복귀하지 않는다."},{"label":"Related","text":"PR13-INTEGRATION-01; Event 수신400과 실제브라우저는후속"}],"title":"fix(runtime): SDK Frame wrapper 수명 오류와 native crash 수정"},"created_at":"2026-09-23T03:26:29+00:00","expires_at":"2026-09-24T03:26:29+00:00","job_id":"20260923-contextra-pr13-framefix-r01","paths":[{"change":"modified","content_sha256":"cccefb38889d7fd43af8e5c3424b0a9116523c6394d6948505a8a3e25fc56993","path":"app/single_decode_pipeline.py"},{"change":"modified","content_sha256":"b61918982528ea9c40de64eb963e4bfa7fa8739d8a9091e9706b5e9c0f814b9f","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/README.ko.md"},{"change":"added","content_sha256":"ddd091f599955cd3ba379ad1bb970f0a00b891344c839423f7d085648baad6d3","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/runs/20260923T122048+0900-run-pr13-frame-wrapper-fix.md"},{"change":"modified","content_sha256":"89dc141d6ecad9d906752a0b24d03aa82c3a9310205f944b36f1d682a926f83c","path":"docs/scenarios/SCENARIO_PARAMETERS_INTERNAL.ko.md"},{"change":"modified","content_sha256":"2fd65e76017ad1c4a1cc7e94d8c612e044c498b393fe81c4037014acac0d7930","path":"docs/scenarios/SCENARIO_TUNING_GUIDE.ko.md"},{"change":"modified","content_sha256":"29930cc6fc079df38da989c7fba9b2e7a9ff37f25e98eb23a1ca9e7f1454ed9e","path":"docs/scenarios/SCENARIO_WEB_READY.ko.md"},{"change":"modified","content_sha256":"1e142631238ae456d36b184367ee59970ae7d57251bd0814dc5fa9a6592dcdb7","path":"tests/test_pr13_boundaries.py"}],"plan_hash":"c5ae94a8c04c47aed1a4ad0e29f6fa327e6105e8049e9522eebb8420510d8434","profile":"ltb1021","push":{"branch":"task/runtime-lifecycle-refactor","mode":"upstream","remote":"origin","remote_identity":"sha256:3a9ce41319a2ebea","upstream_head":"fe6e94c39f44388ce2c0bcfc262287f98cb309f6","upstream_ref":"origin/task/runtime-lifecycle-refactor"},"repository":{"baseline_head":"fe6e94c39f44388ce2c0bcfc262287f98cb309f6","branch":"task/runtime-lifecycle-refactor","worktree":"/workspace/contextra-analytics-runtime-lifecycle-refactor"},"schema_version":"ltb1021.codex_hub.git_closeout_manifest.v1","session_alias":"work-session","verify":["Python3.12 21 targeted tests PASS; actual single/2/3-provider flow and Stop/reap PASS","One RTSP socket/decoder thread, three provider threads; Redis reader Frame/PTS/objectRef checks; four models READY and WSS connected","Natural FALL4 artifact READY / HTTP400 INVALID_PARAMS; no replay; browser/slow-branch fault injection NOT RUN; diff and doc links PASS"]}
