{"commit":{"body":[{"label":"Why","text":"9월 최소 구현을 위해 승인된 Identity와 설정 저장 신뢰성을 기존 Runtime Shell에 연결한다."},{"label":"What","text":"Frame 계약, Stream Router와 공통 Service, run UUID, Overlay transaction 및 미공개 Web Facade 초안을 구현했다."},{"label":"Impact","text":"기존 API operation 유지 및 저장 오류 fail-closed. Web route는 미활성이고 실제 Runtime 변경은 없다."},{"label":"Verify","text":"Host 28개와 Native 경계 격리 9개 PASS, AST route 26개 일치, compileall 및 diff-check PASS. HTTP와 전체 suite는 의존성 부족으로 검증 대기."},{"label":"Rollback","text":"이번 source와 문서 변경을 하나의 commit 단위로 검토한다. image와 Runtime 반영은 수행하지 않았다."}],"title":"feat(runtime-control): Identity 계약과 Stream 설정 적용 경계 분리"},"created_at":"2026-09-09T03:31:30+00:00","expires_at":"2026-09-10T03:31:30+00:00","job_id":"20260909-identity-facade","paths":[{"change":"modified","content_sha256":"c52ee9197b7def45fa0c1d5ffb0f400eae61a837324bcd9f02f3fc05265888d5","path":"app/main.py"},{"change":"modified","content_sha256":"d6d1f9550c30ec7f9e161fd9224ef17f6b622dc7360b32caac38bfd83759495f","path":"app/runtime_state.py"},{"change":"modified","content_sha256":"e776b22fea01cdf525d4a4fba8ad9dcdaed6af4fb77ae87566665ab5998cd35d","path":"app/stream_lifecycle.py"},{"change":"modified","content_sha256":"bee000bca79228ea22e9b14a21257f7d98f6b1dc77256e5aba9da54946352797","path":"app/stream_manager.py"},{"change":"modified","content_sha256":"e80ab6c463dfc48f130b4ced25916b8170228c621aa4dfd5a4c470df8451e71f","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/README.ko.md"},{"change":"modified","content_sha256":"b814075cdbc1529992fb47c99412f8cda2e47d81996eade543f358e41721e133","path":"tests/test_stream_lifecycle.py"},{"change":"added","content_sha256":"21efefe79fae67b4a3586c75709da33fef3508e6acb1dbf4fa7df3a169112ed9","path":"app/api/__init__.py"},{"change":"added","content_sha256":"5fc65a18d48de2b1b39e319de3aa2cee1783d964d90dd6231e769207ac17688b","path":"app/api/errors.py"},{"change":"added","content_sha256":"418d89c15b4183a0bc8d46c131ab3634db1fcd329b3aa32f464bbf9a1b21f756","path":"app/api/streams.py"},{"change":"added","content_sha256":"e003d962e490fb387abd6b42015d6e3a3b0dd572d7ac0c55bd97c1a4fdb59eb7","path":"app/api/web_cameras.py"},{"change":"added","content_sha256":"d1ab1e48bc010e3a06b03b50d517d36512a74f53a68653cadcbe358a6ab842c7","path":"app/application/__init__.py"},{"change":"added","content_sha256":"6ada167d92b72ff11d355595e8f601ab55702f1693747da89fd18f2fe009ff14","path":"app/application/streams.py"},{"change":"added","content_sha256":"b34ef2827cdd8723d20e6be4853849a10c8a3e1030b07f8292b78093ca0835dd","path":"app/contracts/__init__.py"},{"change":"added","content_sha256":"e11ea192a5433127d341839bda879c4f37008779e5cfc704641011e37f6308bd","path":"app/contracts/cameras.py"},{"change":"added","content_sha256":"89a87c9abf007caad182d023b1148d73fe295b8d63b39a2554c45e6187dd7cbc","path":"app/contracts/frames.py"},{"change":"added","content_sha256":"a911fc44dd077e2ef560b4b8a0f7d2962f4254405fc5ebee7185bf5fe2fda9f0","path":"app/stream_config_store.py"},{"change":"added","content_sha256":"fd87057752bf3b96eb0161486e7a432ee75a18a580b05781cd6ff99bc5759ed1","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/decision/20260909T122527+0900-decision-identity-facade-september-minimum.md"},{"change":"added","content_sha256":"5b505537eb0bcff90cf2367ef758f51b9a2c2f2e611908a0b75e1fd4d106bca9","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/validation/20260909T122527+0900-validation-identity-facade-partial.md"},{"change":"added","content_sha256":"cd6037a75a0957cf7c7486c652dce9f8f6f3eeb587925ba92d5e30cc1a9ee317","path":"tests/test_identity_contracts.py"},{"change":"added","content_sha256":"33836fc3f29a37b2b716f874db54bb6810a2aaa1fd56916ed16ce24bb2046921","path":"tests/test_stream_apply.py"},{"change":"added","content_sha256":"1129eb5e8cf42a2f9fa7829b1589e7586ed1e11532a1aaab1ad6facda043c041","path":"tests/test_web_facade.py"}],"plan_hash":"9cb0addf45fc8f7e5c9707f6d524ea6ef051ab4f15abef2383ea200c028e2cb1","profile":"ltb1021","push":{"branch":"task/runtime-lifecycle-refactor","mode":"upstream","remote":"origin","remote_identity":"sha256:3a9ce41319a2ebea","upstream_head":"46b5543e7f7ee136ef6d2ea36751427b5bb9f4c6","upstream_ref":"origin/task/runtime-lifecycle-refactor"},"repository":{"baseline_head":"46b5543e7f7ee136ef6d2ea36751427b5bb9f4c6","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":["37 scoped tests PASS (9 use native boundary stubs); full suite dependency blocked; HTTP/OpenAPI WAIT; compileall PASS; route AST 26 match; diff-check PASS"]}
