{"commit":{"body":[{"label":"Why","text":"현장과 USB 및 임시 경로에만 있던 반자동 유지보수 소스의 Git 보관 누락을 보완한다."},{"label":"What","text":"ct APP 적용·주소/CA·작업 기록·관측 도구, 한국어 LLM/GUI 실행기, Windows 연결 안내와 asset 지문을 보존한다. 기존 Auth/TLS는 canonical path/hash로 참조하고 작은 source export 검증을 추가한다."},{"label":"Impact","text":"실행 중인 test/현장 Runtime과 USB r03은 변경하지 않는다. SDK/model/binaries/인증/DB/원본은 Git에 넣지 않으며 si source/setup 최소 권한과 sudo 경계를 기록한다."},{"label":"Verify","text":"Python3.12 표적10PASS, 48 source hash 및 export PASS, Python26/JSON6/shell5 문법 PASS, git diff --check PASS. 현장 si source124파일 read/write와4개 폴더 실제 쓰기, 설치 유지보수18개 hash 확인. Web 로그인401/WSS와 새IP/GUI/Windows 수용은 별도 확인."},{"label":"Rollback","text":"이 commit의 도구 보관·문서만 이전 상태로 되돌릴 수 있다. 현장 image/세션/DB/설정의 자동 rollback이나 installer 재실행은 하지 않는다."}],"title":"ops(offline): 아이서티 유지보수 도구와 권한 검증 기준 보존"},"created_at":"2026-09-28T09:09:43+00:00","expires_at":"2026-09-29T09:09:43+00:00","job_id":"contextra-icerti-offline-source-20260928-r01","paths":[{"change":"added","content_sha256":"4c0daf7e1be407e6656735787ad0e783fe97bff86f38650f2bb3bdeb2910b9fb","path":"docs/deployment/ICERTI_OFFLINE_MAINTENANCE.ko.md"},{"change":"modified","content_sha256":"9abe97c27a88cf4375d0c86363175c2b69ef90081fee6e0d8308cf1460c4adde","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/README.ko.md"},{"change":"added","content_sha256":"b25fcc71a3622728a15feaa646a9ffce92b4912a54b83f13be991b836f9d5db1","path":"docs/profiles/ltb1021/topics/runtime-lifecycle/validation/20260928T180549+0900-validation-offline-prep-closeout.md"},{"change":"added","content_sha256":"34a9420eeba99ae67b66c194944a4f597a20075ef1fef319e751aa9b38c65b43","path":"tools/icerti_offline/.gitignore"},{"change":"added","content_sha256":"0e8ccafaa6314f42e474801423a264798d56d8bf9a7b4a4959bb67b2a4adadaa","path":"tools/icerti_offline/README.ko.md"},{"change":"added","content_sha256":"aeef9d8e24d3de96dee87d246a5f4ab5998737724e2cffec19c6247432af352b","path":"tools/icerti_offline/USB_README.ko.md"},{"change":"added","content_sha256":"f86b05114cff52d959dc608e71305e635ac5c2ac1d8826ec2d9ad5e0e34eeb4b","path":"tools/icerti_offline/agent.py"},{"change":"added","content_sha256":"90382f0da1937932695852c5a2a8dad90472185028aac2ce5babe34d76cfbb91","path":"tools/icerti_offline/assets-manifest.json"},{"change":"added","content_sha256":"94fb30ffd833955a3316cbc5048f3d83946dd70d79188b5f6fb7ced60c8c3765","path":"tools/icerti_offline/build_usb.py"},{"change":"added","content_sha256":"ad2fb1c04489fb074d4b22a4f494c2922c4dfdd2882983028f2cc1bc0190792c","path":"tools/icerti_offline/ct-agent"},{"change":"added","content_sha256":"5b3799b4f28bcbecab66dec80935cc24229571af6d3665fd0900efb682589691","path":"tools/icerti_offline/ct-gui"},{"change":"added","content_sha256":"d8bb7d21195de93dc798d4bd4ab4b9028bd456953bf6dd748a7c06e8ffe5cf90","path":"tools/icerti_offline/ct-llm"},{"change":"added","content_sha256":"e3a0e737fc76125f51bd6b22aabec7ae49e04cbade6d7c562eae5f351c5de16d","path":"tools/icerti_offline/ct_llm.py"},{"change":"added","content_sha256":"fba9e52fb7bdefcbab25d9f4b815d5dca2ce8417a70a4de20cc4bd53a261cf8a","path":"tools/icerti_offline/finalize_tools.py"},{"change":"added","content_sha256":"786d048aa735b312873223ee9ffa4d850f01ada733c18aed256641ee0efd9a24","path":"tools/icerti_offline/gui-manifest.json"},{"change":"added","content_sha256":"dcc0bb8a0d83316572121f8c93ac9abd2870bbec929f3d39f8d97bfda976aedf","path":"tools/icerti_offline/gui-session.sh"},{"change":"added","content_sha256":"8225253f91d6ee50756c5ccbdb935c5ce8a0efb214a7e6bb31e2ef65e5e37166","path":"tools/icerti_offline/install_access.py"},{"change":"added","content_sha256":"e5d23ca15b2694bbf001d18f2b436a4b465667c5cefe29aff6081a62d977aa7e","path":"tools/icerti_offline/install_acl.py"},{"change":"added","content_sha256":"99c38c4fa842bb798510898d3745f01291a6f1585af1934577813e8209ad6cfc","path":"tools/icerti_offline/install_agent.py"},{"change":"added","content_sha256":"f2de456144871a34448fc37052547bc57ec8a0bb1b842d293a326ee483aa6c74","path":"tools/icerti_offline/install_commands.py"},{"change":"added","content_sha256":"2f9b912f0310134d40cbf9f4e90e41be07439afc195ee8e00c8fb7347ae8bd86","path":"tools/icerti_offline/install_gui.py"},{"change":"added","content_sha256":"0e21375fe40cdda4fa180fdb9bf166fbb0bbf938b67328da34d57e1ebfadd1a7","path":"tools/icerti_offline/install_local_tools.py"},{"change":"added","content_sha256":"46b9d12436ec2d8c7a2a3398db2e8fdbdfda97352da59329b97991cf2ee33724","path":"tools/icerti_offline/install_maintenance.py"},{"change":"added","content_sha256":"de8c91c1acb0c7ea840a7c76929ff29d73bd83475cc04657f61607145b153a07","path":"tools/icerti_offline/maintenance/NETWORK_TRANSITION.ko.md"},{"change":"added","content_sha256":"71c82e85a1166a4c653b1d01728cb6eb7f61f96c2cce0558d53a10d98dbcbd8e","path":"tools/icerti_offline/maintenance/OFFLINE_OPERATIONS.ko.md"},{"change":"added","content_sha256":"0e9628e3e4a69c216c85e52ca5fd65304f35e4f8efcce96352897954ad2f1c24","path":"tools/icerti_offline/maintenance/apply_source.py"},{"change":"added","content_sha256":"f2e8d121d67891722841eaf9752879fc3848232e0027c9f3a4ea80d757193a66","path":"tools/icerti_offline/maintenance/connection.py"},{"change":"added","content_sha256":"b132cf3a31d105f30abaa05230fb43d161da72af6ff35f5cbfe012a53c360665","path":"tools/icerti_offline/maintenance/ct"},{"change":"added","content_sha256":"2e418354c23e0b10a0be0533d2bcddc051e960ce959360a968affbf5bcaea328","path":"tools/icerti_offline/maintenance/ct.py"},{"change":"added","content_sha256":"eb2e24fa39cf7d655bd47782332345dc1745d32b9cd09bebeaca1d5530356575","path":"tools/icerti_offline/maintenance/gpu_metrics.py"},{"change":"added","content_sha256":"1a11ae882b446ed1ee5d9652a1fb37ea0ff6edc44cab73312049f9312fc094d3","path":"tools/icerti_offline/maintenance/maintenance_guard.py"},{"change":"added","content_sha256":"574d90f0b0c6ee142782012e658033266e6986b3703c565d8c0ba39d9d45d6fa","path":"tools/icerti_offline/maintenance/network_apply.py"},{"change":"added","content_sha256":"b4bdfa45dc39220000bdcf75582a2466077cc815e48cc27e1819f5038b25c280","path":"tools/icerti_offline/maintenance/network_prepare.py"},{"change":"added","content_sha256":"9298a1f30291783503a4137ca54ba0c105c9fedb1fbdfe556c333b306b71e33f","path":"tools/icerti_offline/maintenance/observability.py"},{"change":"added","content_sha256":"60339cefce9b90a7140f3dc29adcc23a7948cc0b6b650009f1413cd9be62f911","path":"tools/icerti_offline/maintenance/source_prepare.py"},{"change":"added","content_sha256":"37ec8a9463dcfcf9a8879cb212c8c5e592be514acb598a0910c20fafbcfec8d3","path":"tools/icerti_offline/maintenance/test_tools.py"},{"change":"added","content_sha256":"547e25a592baab997f3d1df8e2a1259bb87d80489d4f1e0b59bf7776f1427727","path":"tools/icerti_offline/maintenance/work_record.py"},{"change":"added","content_sha256":"8fdd83c0347b71816c28026e2966590aaa9c1de1792f04e9d4d4910ad50cd53a","path":"tools/icerti_offline/observability/images.json"},{"change":"added","content_sha256":"9e47339398ed6fc51fc01112b5e5598e7080956b54c30aa39050297081e0d961","path":"tools/icerti_offline/observability/verified-images.json"},{"change":"added","content_sha256":"c0b4dab05362c77e3e428d33ece7e2993fabaf372da760db8253934bfd7d9384","path":"tools/icerti_offline/publish_guides.py"},{"change":"added","content_sha256":"79b0efb599c29e784ba647037d2cae1ecf5246525ff637e395d70b66cf1f2a61","path":"tools/icerti_offline/source-manifest.json"},{"change":"added","content_sha256":"6bc8817bd15924dabc881bca0820e5cc95a9f4391bb09688a39d403d8d17a964","path":"tools/icerti_offline/stop_channels.py"},{"change":"added","content_sha256":"880f39a2c4113a6f4835bdf157d072bf928cf262f4755a38b4fb1c9a2c15f146","path":"tools/icerti_offline/system.ko.txt"},{"change":"added","content_sha256":"3aab014c42a44b92d4df42c25e8d58197c956fca7ddc3b88bc3629bdf2b2a739","path":"tools/icerti_offline/test_verify_sources.py"},{"change":"added","content_sha256":"bf0e7220eb292a6c13715851c13c6b8c3b0875b11c648263157e038883142f0f","path":"tools/icerti_offline/verify_sources.py"},{"change":"added","content_sha256":"6ebb781f6f0beaaa94671720558fc2faad7208e24759e8200e4c8c11e59daede","path":"tools/icerti_offline/windows/OFFLINE_AGENT.ko.md"},{"change":"added","content_sha256":"b5830c040fd19bf697b9e8f8b82d43056ce03ecc3176ecd10f3d9d927e7e6ce0","path":"tools/icerti_offline/windows/Open-LlmTunnel.ps1"},{"change":"added","content_sha256":"7dc106d8945b25b9200f3215f453c7cc8cda777bdfb384f5e47b833deb855818","path":"tools/icerti_offline/windows/WINDOWS_PREP.ko.md"},{"change":"added","content_sha256":"a8da4187d00b47123b56e49752de56da3a0feb049176609f5500d861a2a1b8c5","path":"tools/icerti_offline/windows/opencode.json"}],"plan_hash":"fba09410176ccfaf0c2030698c5c5fe790991785e42775c078202d1671db483c","profile":"ltb1021","push":{"branch":"task/runtime-lifecycle-refactor","mode":"upstream","remote":"origin","remote_identity":"sha256:3a9ce41319a2ebea","upstream_head":"9192464ad509952f0c05fe3847f1c21f50e8c2b9","upstream_ref":"origin/task/runtime-lifecycle-refactor"},"repository":{"baseline_head":"9192464ad509952f0c05fe3847f1c21f50e8c2b9","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":["Python3.12: test_verify_sources 4 PASS; maintenance/test_tools 6 PASS","verify_sources: 48 hashes PASS and new source-only export PASS; Python26/JSON6/shell5 syntax PASS","si source124 readable/writable; app/inbox/outbox/notes create-read-write-cleanup PASS; installed18 hashes match","git diff --check PASS; no Runtime/USB re-deploy; WSS401 remains separate"]}
