{"commit":{"body":[{"label":"Why","text":"9월 AI Metadata 제공을 위해 내부 후보 보존과 외부 표시·송신을 분리한다."},{"label":"What","text":"불변 FrameResult, bounded transport composition, 표시 설정 CAS, opt-in JPEG와 동일 JSON, build context를 준비했다."},{"label":"Impact","text":"source와 관련 test/Owner만 변경했다. image·운영 Redis·모델·Runtime은 미반영이며 표시0.1은 다음 시험에서 명시 적용한다."},{"label":"Verify","text":"관련97 tests와 후속20 tests PASS. SDK Frame wrapper list 보관 오류를 교정하고 실제 CPU SDK→fake sink PASS. 실제 Redis/GPU pixel/배포는 WAIT."},{"label":"Rollback","text":"이 변경을 되돌릴 수 있다. 실제 적용값 변경0이며 다음 배포의 image/env/settings/Redis CAS 복원 범위를 Owner에 기록했다."}],"title":"feat(metadata): Redis·동일 Frame 시각 확인 source 연결"},"created_at":"2026-09-11T07:08:18+00:00","expires_at":"2026-09-18T07:08:18+00:00","job_id":"ltb1021-contextra-metadata-connect-20260911","paths":[{"change":"modified","content_sha256":"1a3de5bb899d2d5ae62357b3ac97c4c4031dbb862e0ac96ad3b5935a4f1f8934","path":".dockerignore"},{"change":"modified","content_sha256":"0a8a1c4790e51df6ccf84ee74180baf43c121026706dd50eda8fdc88a0401e56","path":"app/api/streams.py"},{"change":"modified","content_sha256":"f51fe934c802a6549538c8570e4adeaa63d7a48112dc53805c7ce478fb0ee937","path":"app/application/streams.py"},{"change":"modified","content_sha256":"f8628750ce22fdf9f4b12986ada025033ec9632e4670ceb9709e5ba58d836daf","path":"app/contracts/visualization.py"},{"change":"modified","content_sha256":"c4030e29e8501d16abf6d10bc2b00ae45b9a3fbb1ff5ef80bbd1ae1b57dc5dc4","path":"app/det_result_path.py"},{"change":"modified","content_sha256":"5a4b7ba8d0e5e632ca0f0d0611d660262f0698610cc4d2f62983f8ae0017d56e","path":"app/main.py"},{"change":"modified","content_sha256":"5c20df2ad1c77600370ecbdb192e37e0ba6413b1a9325dd883fc15f4fd2e8c2d","path":"app/metadata_publisher.py"},{"change":"modified","content_sha256":"1f57fa66d0b6a34ed675542aaf894812d24d5bd2d67a0757616766ad19034026","path":"app/metadata_samples.py"},{"change":"added","content_sha256":"57154e405f2259ade574c77ec22b24787df9094a6a73f7e1e473cbfbad8fecf5","path":"app/metadata_runtime.py"},{"change":"added","content_sha256":"3ec573c8fc4b10efb343e60d05331d104a174010fb8f2ae0f95c2bf8562de649","path":"app/metadata_visual.py"},{"change":"modified","content_sha256":"c6528c260f3b47bb4c50fe32a1c8bf5f52242cae6d92df20adb56fb2dcf7f616","path":"app/multi_pipeline.py"},{"change":"modified","content_sha256":"edf289fe4bb8c29a13bd7b827706cf297ed4d3a9e384bfbbc0dc4c8cda2c1be1","path":"app/stream_manager.py"},{"change":"added","content_sha256":"ecb1ec097049cec6d717978d939ab716a19dbabdee63c68b7ff35a0d0c9f99d9","path":"app/stream_settings.py"},{"change":"modified","content_sha256":"66a0c644158b0e320201901964179d47291698488bc3bf6952a54a3a39ab53bb","path":"tests/sdk_frame_identity_probe.py"},{"change":"modified","content_sha256":"d03e24043bfd4a173e7b3778a094450065897c115a8262554e09e23322c1c5a8","path":"tests/test_composition_architecture.py"},{"change":"modified","content_sha256":"c969c9760ecfbd18aace7230bd9d1b6df11b5f547a6dc2bf7246a456d292d4c3","path":"tests/test_stream_apply.py"},{"change":"added","content_sha256":"35e9d0b9ea2094309795cef00bc9fe0e7a7228c4e69275a37b299163f1024cc5","path":"tests/test_metadata_build_context.py"},{"change":"added","content_sha256":"fcd3a89794569cb27ad2c4a86d1a768ae64cc1cf0e274cfe117c6a941b226e9d","path":"tests/test_metadata_connection.py"},{"change":"modified","content_sha256":"51d124b52cc3679cad5b776a0a902bc960aa3602bc324b5c42f43a2efed4d340","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/README.ko.md"},{"change":"added","content_sha256":"959fd91b6032e51f083647fcf4b9ac4d4224eff7f4ea1d01f8846709c6447a8e","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/decision/20260911T155808+0900-decision-frame-result-display-sharing.md"},{"change":"added","content_sha256":"9d871abc07a92ae415d4a337dd314000db24d60c3410afd7ef9c148822b86f05","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/validation/20260911T155808+0900-validation-metadata-transport-visual-source.md"}],"plan_hash":"a6219e16731ed5359bd96a6c68b2ff55c2144a184315e76f5666661d18628b96","profile":"ltb1021","push":{"branch":"task/runtime-lifecycle-refactor","mode":"upstream","remote":"origin","remote_identity":"sha256:3a9ce41319a2ebea","upstream_head":"bd5ed86f9f95f28143d2f7bd09c0843e4726fcb6","upstream_ref":"origin/task/runtime-lifecycle-refactor"},"repository":{"baseline_head":"bd5ed86f9f95f28143d2f7bd09c0843e4726fcb6","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":["isolated 97 tests PASS; final 20 tests and SDK fake sink PASS; source syntax/links/diff checks PASS; no deployment"]}
