{"commit":{"body":[{"label":"Why","text":"매 Frame의 같은 RUNNING 등록이 pending Frame을 상태-only 항목으로 덮어써 전송 유실을 발생시켰다."},{"label":"What","text":"run/generation/state 동일 등록을 no-op으로 만들고 기본Off bounded publisher 진단으로 교체 종류와 대기·write wall/CPU를 구분한다."},{"label":"Impact","text":"상태 전환·새 run·Stop·heartbeat·최신1개와 Redis 상한은 보존한다.3채널 Off running 유지,새Frame 교체12건과Redis10FPS 미달은 남았다."},{"label":"Verify","text":"최종source/image35 tests PASS.진단 상태교체4건에서 교정후0,결과약10FPS/Redis9.77~9.86FPS,오류/stale/drop0.설정과비대상보존·상세계측Off·diff/JSON/CSV/link검증."},{"label":"Rollback","text":"대상 채널 정상Stop 뒤 저장된 이전image/Compose/env로 최소 복원한다.카메라설정·sender·Redis·모델·산출물은 변경하지 않는다."}],"title":"fix(metadata): 동일 상태 등록의 대기 Frame 유실 방지"},"created_at":"2026-09-15T07:35:53+00:00","expires_at":"2026-09-16T07:35:53+00:00","job_id":"contextra-publisher-20260915-163137","paths":[{"change":"modified","content_sha256":"0866ef51ebf52f482f61c82395018dc68f609fb529495342db61fd07d3483405","path":"app/api/streams.py"},{"change":"modified","content_sha256":"f1de394dbc2726e0454f488345855d8fd3ca330d940865e43038cad1bad61031","path":"app/metadata_publisher.py"},{"change":"added","content_sha256":"61da37a83bcc22c70f36b984329df88ffb491bf1ea702d7454f11f9ade52a238","path":"app/publisher_metrics.py"},{"change":"added","content_sha256":"d93a53a5fe96ab5184f8523b79f216de8f17541255aa8e2ad2eca7c079505649","path":"tests/test_publisher_metrics.py"},{"change":"modified","content_sha256":"e127f9f2da905126740635156c787af1ff235a1dd381399ae2a90c0e77337d40","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/README.ko.md"},{"change":"added","content_sha256":"3a987a8c9dc0d481a9a6d70d04581ffb2e5f7c5ecd5403e5873238cb2b0d073c","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/decision/20260915T163137+0900-decision-publisher-state-noop.md"},{"change":"added","content_sha256":"2913a747b81ed99eff485439078e9712f9280a53527c7d638b8f5e31f334dcef","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/runs/20260915T163137+0900-run-publisher-state-noop.md"}],"plan_hash":"c41e74f66f88303bc23b8015b07ba0d52b271df5b26af0b84350a5d31273bb14","profile":"ltb1021","push":{"branch":"task/runtime-lifecycle-refactor","mode":"upstream","remote":"origin","remote_identity":"sha256:3a9ce41319a2ebea","upstream_head":"9881249f91d9d4a9c210592ea2fbce6500de1e73","upstream_ref":"origin/task/runtime-lifecycle-refactor"},"repository":{"baseline_head":"9881249f91d9d4a9c210592ea2fbce6500de1e73","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/image35 tests;24초 전후관측;3채널 정상cleanup와재기동;상태교체0·Frame교체12잔존;설정/서비스보존;diff/links/JSON/CSV PASS"]}
