{"commit":{"body":[{"label":"Why","text":"Frame교체5건이 다른채널 sink호출중 발생해 공통worker 대기를 확인했고 저장100개 확대는별도로승인됐다."},{"label":"What","text":"bounded monotonic 시점·순수sink계측, 고정worker pool·채널고정배정·독립sink를 구현하고 stream_length100을명시한다."},{"label":"Impact","text":"test workers4와stream_length100을actual/persistent에정합화했다.같은채널순서·최신1개·TTL10초·상한·ACL·Tracking/Scenario Off보존."},{"label":"Verify","text":"source/image41 tests PASS.24초3채널Redis9.99FPS·교체/오류/만료0·각100개확인.정상cleanup·3채널running·설정/비대상보존·진단Off·diff/links/JSON/CSV검증."},{"label":"Rollback","text":"정상Stop 후workers1로복원가능하며stream_length100은별도유지가능하다.이전image/Compose/env원장을사용하고Redis재시작/FLUSH/산출물삭제는하지않는다."}],"title":"fix(metadata): 전송 worker 격리와 채널별 Redis100개 반영"},"created_at":"2026-09-15T08:36:11+00:00","expires_at":"2026-09-16T08:36:11+00:00","job_id":"contextra-publisher-timeline-20260915-173031","paths":[{"change":"modified","content_sha256":"e4ecd862530ac6e566430fe6ad485ee2d1d8ac0ec2760eecec42719792efc98a","path":"app/api/streams.py"},{"change":"modified","content_sha256":"b391e9a87b0e12601a4b03414b4bb01399fafcfb71fc8b48687cce981acdf4e9","path":"app/application/streams.py"},{"change":"modified","content_sha256":"91b13179397d5303090ae67cc4ffc5657802e657651301efa106c97014cf20dd","path":"app/metadata_publisher.py"},{"change":"modified","content_sha256":"8ff600229ea54908535f2bd255484eaa499df39fd264d84c65c4267bcfc6f7c7","path":"app/metadata_runtime.py"},{"change":"modified","content_sha256":"7072a787e2d3642094841ab144128380bd164e5aa07891641d0fe6e692f2685c","path":"app/publisher_metrics.py"},{"change":"modified","content_sha256":"d0b972d036a294be5ffce64937346f1c3d9690ea9db06dd14c1f17b67afe126f","path":"docker-compose.yml"},{"change":"modified","content_sha256":"cfe9a8573fe687a0c7e1032508a67ab2809beb1fcd71d9bd1b5d2ea734caf852","path":"tests/test_metadata_demo_limits.py"},{"change":"modified","content_sha256":"d36f8295fda0ef0bcf6f9ac09d7e203876619dde8c36b81b3fc14c53e8e37a90","path":"tests/test_publisher_metrics.py"},{"change":"modified","content_sha256":"b78f33fefee7ee941f27859486dd37c0f997ccfdefd41b284bacc49a31b0bb52","path":"docs/integration/metadata-web-review.ko.md"},{"change":"modified","content_sha256":"34daae7d751c16f8e20371ab335a26da10eb46ee3c9e6f3cfa20ac5dc6a5c6aa","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/README.ko.md"},{"change":"added","content_sha256":"7bd8d204abe136ec41b4e500e14d85f870acc39dee5f94cbb1301fc4ba6aa8ec","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/decision/20260915T173031+0900-decision-publisher-lanes-buffer100.md"},{"change":"added","content_sha256":"55814f686f3ce0ebb21074d15fc25ea17b59e5c10bcb31923ca19915a6272e34","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/runs/20260915T173031+0900-run-publisher-timeline-buffer100.md"}],"plan_hash":"0f4d56311ad1aefe8da837de7520a4d9b933e1d345f2c6b1f9040ad476d8041a","profile":"ltb1021","push":{"branch":"task/runtime-lifecycle-refactor","mode":"upstream","remote":"origin","remote_identity":"sha256:3a9ce41319a2ebea","upstream_head":"3ed6c35b5bf7a3da9d26679eefbaedefbd25a71c","upstream_ref":"origin/task/runtime-lifecycle-refactor"},"repository":{"baseline_head":"3ed6c35b5bf7a3da9d26679eefbaedefbd25a71c","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":["source/image41 tests;단일worker5교체시점과4worker교체0대조;각100개/TTL갱신;RTP/nullID60표본;actual/persistent정합;diff/links/JSON/CSV PASS"]}
