{"commit":{"body":[{"label":"Why","text":"승인된 임시 네트워크 우회와 최신 관제 계약으로 인증/최소 WSS 경로를 완결하고 실제 수용 범위를 분리한다."},{"label":"What","text":"로그인/CSR CLI, session 인계와 bounded 복구, WSS4개 action/heartbeat, 부모 상태 조회와 Gateway 경로 및 배포 상한을 연결했다."},{"label":"Impact","text":"새 Analytics/Sidecar/Gateway 반영과 두 채널 정상 Stop/reap/Start를 수행했다. 모델·Redis·Event 원장·원격 관제 설정은 보존하고 Artifact Off를 유지했다."},{"label":"Verify","text":"표적32/영향22/최종image5 PASS(중복 포함), nginx/Compose/source hash PASS. 실제 관제 WSS bootstrap/heartbeat와 READY, 두 채널 결과/Redis각10.02FPS·queue/stale/drop증가0. 외부 Web REST/media는 미확인이다."},{"label":"Rollback","text":"자동 rollback 없음. 원본 산출물과 호출 원장을 보존하고 임시 neighbor 제거 방법을 기록했다. 최초 관제 오류는 동료가 수정하고 재기동했다."}],"title":"feat(secure-bridge): 인증 bootstrap과 실제 관제 WSS 연결 수용"},"created_at":"2026-09-18T04:22:55+00:00","expires_at":"2026-09-19T04:22:55+00:00","job_id":"20260918-contextra-secure-wss-runtime-r01","paths":[{"change":"modified","content_sha256":"69ae47e1475559de5dd5233bb8fb6c3dc6a81cf5adf1485e81f462a308f335a1","path":"app/secure_control.py"},{"change":"modified","content_sha256":"9cf86d9b20284ac9cd7fe71c096566714646387dd8b21847759542577a1002a7","path":"control_sidecar/Dockerfile"},{"change":"modified","content_sha256":"49d0c249b8797cc388e07520b905946f85a45cb865109e58ba80c58da615c75b","path":"control_sidecar/auth.py"},{"change":"modified","content_sha256":"269bfb0e96356f214c15cf6127cd5ceb7420e0e4267577e956fc70ceb8fd6973","path":"control_sidecar/config.py"},{"change":"modified","content_sha256":"354722aa160edcb148f68ffd4fc3afc3f571de4986a01df8a2bb475aa8115f3d","path":"control_sidecar/main.py"},{"change":"modified","content_sha256":"8c0e00f82ba754d60fdb14b8d9cad56768d025f0018f4b6c6e28b44cc9a064df","path":"control_sidecar/requirements.txt"},{"change":"modified","content_sha256":"4d411e88cfc7b1ee3acfccb4f827b673596709b32b22fc02f687366cb5ce9ec1","path":"control_sidecar/transport.py"},{"change":"added","content_sha256":"b232b82d9962139062ee18a844a3603f9b94bfa1e46735e4219cc50562d9b2d9","path":"control_sidecar/websocket.py"},{"change":"modified","content_sha256":"d3235f313237eda097c2e1824e680cb63eb665b08b8b34a64ea990fd3995ac06","path":"deploy/secure-bridge.compose.yml"},{"change":"modified","content_sha256":"c8555d1463624f7e25b46038533491632ca5ad27c20c45a071d6f33d25f8fe50","path":"deploy/secure-bridge.env.example"},{"change":"modified","content_sha256":"cce0418c76378d312ecc244325c91e1ad64913e7918926ea7a4ad57d180ca127","path":"docker/secure-gateway.conf.template"},{"change":"modified","content_sha256":"3ab3d316bc4faebf54a0e1024a2330dbfa04061c1e105181a8bd0e5812bacec6","path":"docs/integration/SECURE_BRIDGE_PROVISION.ko.md"},{"change":"modified","content_sha256":"cd5656076c9d42527972e452715c20125052c210e5c53e5657d71e22eab2b66f","path":"docs/integration/SECURE_REST_BRIDGE.ko.md"},{"change":"modified","content_sha256":"d9292f07f9b4b2b40f56c39e450a68cbd8a1b651d8da943d1ac4efebfd50b9bf","path":"docs/integration/SECURE_REST_BRIDGE_HANDOFF.ko.md"},{"change":"modified","content_sha256":"6a6add6a9358b16a2b012cdd35071ac621a24b5abd3879969fe5f8065b91b5c3","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/README.ko.md"},{"change":"added","content_sha256":"b6a1e9c54ebb0a487ef971c8866cc856bfcaf24ffb9f928248e779d07db0e66f","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/decision/20260918T130122+0900-decision-secure-bootstrap.md"},{"change":"added","content_sha256":"d8345cc505c02be510997a2c1d546cc414d55214ce32c230d68bdd644b37bd27","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/runs/20260918T130122+0900-run-secure-wss-prepared.md"},{"change":"added","content_sha256":"8166f343e31cebe77402b8a63d5592d96a4ca9f1886a2d9627ea7a52d8d13002","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/runs/20260918T131803+0900-run-secure-wss-runtime.md"},{"change":"modified","content_sha256":"68da7f8d15a34693240c357b54aeac7f8ca093434a05c83266a356d29cbfa778","path":"tests/test_secure_bridge.py"},{"change":"modified","content_sha256":"6dbdf8293cd47d57d477c97bd9f7ac779afb55115d4cdb06ad7697bfd6787ea7","path":"tests/test_secure_bridge_provision.py"},{"change":"modified","content_sha256":"9e7698c1d5064d6c03561a8d63746166450f1b798243e76348904a5a6614b3ba","path":"tests/test_secure_bridge_tls_gateway.py"},{"change":"added","content_sha256":"c25503698062a3925a25cef955881ab6f35a608096fcbf8b6fa47b4f40631f68","path":"tests/test_secure_bridge_wss.py"},{"change":"added","content_sha256":"610420e6bf93f676f60a5ae6de453430bcc876e84e4f4f1cd3aef545cb819ed1","path":"tools/secure_bridge_enroll.py"}],"plan_hash":"6e07f18cb6faba797635ae2bcadbd1dae74c1df505a9f2d85b5d8b57b736db23","profile":"ltb1021","push":{"branch":"task/runtime-lifecycle-refactor","mode":"upstream","remote":"origin","remote_identity":"sha256:3a9ce41319a2ebea","upstream_head":"1fade25380833fce299ffb56aedf54a38c9cd3be","upstream_ref":"origin/task/runtime-lifecycle-refactor"},"repository":{"baseline_head":"1fade25380833fce299ffb56aedf54a38c9cd3be","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":["Targeted fixtures PASS; actual Manager login/certificate/WSS READY and heartbeat8 confirmed","Two channels 20.07s result/Redis10.02FPS, queue0, stale/drop delta0; ledger unchanged; Artifact Off","AST/Markdown links/git diff --check/Compose/nginx/source hash PASS; external Web REST/media not tested"]}
