{ "id": "ShariXKnowledgeRepositoryUpdateWatchBPMN", "page": "sharixopen:knowledge:scenarios:repository_update_watch", "area": "open", "type": "procedure", "title": "Монитор обновлений repository_update_watch", "status": "review", "schema_version": 1, "relations": { "related_to": [ "ShariXKnowledgeOpenKnowledgeModulesHandlers", "ShariXKnowledgeScenarios" ], "depends_on": [ "ShariXKnowledgeOpenKnowledgeModulesHandlers", "ShariXKnowledgeOpenKnowledgeModulesSysadmin" ], "verified_by": [ "ShariXKnowledgeVerification" ] }, "extensions": { "taxonomy": { "domain": "operations", "lifecycle": "implemented", "component": "sharix_sysadmin, handlers_backend, dbsynce", "parents": [ "ShariXKnowledgeScenarios" ], "terms": [ "audience_operator", "audience_administrator", "audience_developer", "audience_reviewer", "audience_ai", "product_sharix_open", "product_shared", "material_scenario", "topic_development_git", "topic_operations_diagnostics", "topic_handlers_blockly", "sysadmin", "repository_updates", "optional_handler", "source_snapshot", "source_evidence", "bpmn", "blockly", "generated_python" ] }, "diagram": { "format": "bpmn", "executable": false }, "source_evidence": [ { "repository": "sharix-open-sysadmin", "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb", "path": "handler_contributions.py", "sha256": "96182d34efae36a2abf6b0ea81f61690f4d16d422a8e387a28ebf221eb520d82" }, { "repository": "sharix-open-sysadmin", "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb", "path": "handlers/repository_update_watch.py", "sha256": "4dae269db5f8a96b1d74aece1faae3a68a0378569c48a47535c012a4bf4de6d3" }, { "repository": "sharix-open-sysadmin", "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb", "path": "handlers/blockly/repository_update_watch.json", "sha256": "adaf5e5633e81617b525906621c226680744698187a3c4e31cae56f4fe5b71db" }, { "repository": "sharix-open-sysadmin", "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb", "path": "services/repository_update_handler.py", "sha256": "2e9ba086f017a1f4ba3c11b59ef0362d3a2039fb177cd54767f4b506eb2ae6b2" }, { "repository": "sharix-open-sysadmin", "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb", "path": "services/repository_updates.py", "sha256": "3f36c0ec4efdb07377be0e9b0c04d7557982f6c8ea6c7c98b1500053bc8e0689" }, { "repository": "sharix-open-sysadmin", "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb", "path": "services/source_provenance.py", "sha256": "b89683e9a17d5d0202290f40cfa78d57aa6751691fb2a6ed0af06e2da75e477f" }, { "repository": "sharix-open-handlers-backend", "commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "optional_blockly_codegen.py", "sha256": "139b8250a40292fc756dca9f415ce2a474644bc4ebfd69270b71b29ea3c7047a" }, { "repository": "sharix-open-handlers-backend", "commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/optional_handler_runtime.py", "sha256": "de2c71b8b35bdd3ff81827a597c24cd87eb35441251012911d1ab2baacf38639" }, { "repository": "sharix-open-handlers-backend", "commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808" }, { "repository": "sharix-open-handlers-backend", "commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "main.py", "sha256": "66b7df94fedbec931ed4cb2d4e1afd9cf0386e14ed0932e22b15eb301cd792d7" }, { "repository": "sharix-open-backend", "commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_optional.py", "sha256": "0ff88578f68777a67fcf9624fabb580f829f3acbce041816b0c835495d6a3e2d" }, { "repository": "sharix-open-backend", "commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/optional_handler_runtime.py", "sha256": "fd4fd4cf0e2fd4b9d6c2a658f9acc7784e819306540a0995660e114a8e7bca72" }, { "repository": "sharix-open-backend", "commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/handler_contributions.py", "sha256": "98b32d6f8b27eb51dce8f767d5c45a42fd08cf5f8d749eff95da286183dda00f" }, { "repository": "sharix-open-backend", "commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "urls.py", "sha256": "61ffd2f0563291da2dcc9488a5443cb5e2c0395108740a6700034cfd90548158" }, { "repository": "sharix-open-tickets", "commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/handler_auth.py", "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425" } ], "handler_process": { "handler_id": "repository_update_watch", "source_kind": "git_module_contribution", "canonical_python_verified": true, "reviewed_on": "2026-10-29", "generator": "tools/generate_handler_bpmn.py", "generator_sha256": "df8e4edc0deb91d2010aeeb481f2778de6a9dbbdc21ee1e210c6f07a9b24de2d", "models": { "cycle": "2651ce1764ac14b1feb73ebf9ddcad785ea438add6b4580311c2dfb5acda9927", "evidence": "81cbfa7bc7552a90c5953ea46e1ad146220dbf06ebd6a8362f5638d0d2cd66a9" }, "provider_code": "sharix_sysadmin", "canonical_renderer": "handlers_backend/optional_blockly_codegen.py", "typed_operations": [ "repository_updates.refresh_public" ] }, "classification": { "schema": "sharix.knowledge.classification.v1", "products": [ "sharix_open", "shared" ], "audiences": [ "operator", "administrator", "developer", "reviewer", "ai" ], "material": "scenario", "topics": [ "development/git", "operations/diagnostics", "handlers/blockly" ], "tag_terms": [ "audience_operator", "audience_administrator", "audience_developer", "audience_reviewer", "audience_ai", "product_sharix_open", "product_shared", "material_scenario", "topic_development_git", "topic_operations_diagnostics", "topic_handlers_blockly", "sysadmin", "repository_updates", "optional_handler", "source_snapshot", "source_evidence", "bpmn", "blockly", "generated_python" ], "registry_document": "ShariXKnowledgeClassification", "state_meaning": "implemented — описана проверенная реализация исходников; серверный runtime отдельно; review — состояние текста" }, "editorial_review": { "date": "2026-10-31", "scope": "Конкретизация действий, условий, результатов и диагностики; перечисления; исходные BPMN сохранены", "current_source_records_verified": 15, "original_source_evidence_recheck": "После git fetch все исходные SHA-256 совпали; source_evidence содержит текущие проверенные commits", "canonical_regeneration": { "kind": "optional", "compared_python_paths": [ "handlers/repository_update_watch.py" ], "generator_sources_verified": 11, "handler_executed": false, "paths_from_contribution": true }, "runtime_checked": false, "source_commit_update": { "repository": "sharix-open-sysadmin", "old_commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "new_commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb", "rechecked_source_files": 6, "all_bytes_equal": true, "diagram_documentation": "Сохранена исходная редакция BPMN, хеши кода совпадают" } } }, "content_sha256": "e4b4dfa50e1d5923d81b766d617b607794c8c48e6f6c3774a5bdd8389664015c", "schema": 1 } ====== Монитор обновлений repository_update_watch ====== ~~NOCACHE~~ **Назначение:** [[sharixopen:knowledge:classification:materials#scenarij_processa|Сценарий процесса]]. **Продукт:** [[sharixopen:knowledge:classification:products#sharix_open|ShariX Open]] · [[sharixopen:knowledge:classification:products#obschij_komponent|Общий компонент]]. **Для кого:** [[sharixopen:knowledge:classification:audiences#operator_razvjortyvanija|Оператор развёртывания]] · [[sharixopen:knowledge:classification:audiences#administrator|Администратор]] · [[sharixopen:knowledge:classification:audiences#razrabotchik|Разработчик]] · [[sharixopen:knowledge:classification:audiences#recenzent_i_prijomschik|Рецензент и приёмщик]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]]. **Темы:** [[sharixopen:knowledge:classification:topics#git|Разработка → Git]] · [[sharixopen:knowledge:classification:topics#diagnostika|Эксплуатация → Диагностика]] · [[sharixopen:knowledge:classification:topics#blockly|Обработчики → Blockly]]. **Область:** публичный контракт ShariX Open/shared Sysadmin. **Обработчик:** ''repository_update_watch'', module contribution ''sharix_sysadmin'', без типа/статуса Ticket. 31.10.2026 исходники повторно получены из Git. Module-owned Python совпал с optional renderer; пути взяты из contribution, отдельно проверены callback и общий launcher. Сам обработчик и его внешние действия при анализе не запускались. Выбранная версия, настройки и работоспособность конкретной установки проверяются отдельно. ===== Назначение и границы ===== Монитор обновляет сведения об установленных управляемых repositories: * configured deployment target — источник, настроенный для развёртывания; * canonical upstream target — исходный upstream. Он не выполняет git pull/merge, переключение рабочих веток, миграции, установку версии или restart. Найденное обновление — основание для решения оператора. Contribution по умолчанию disabled, version builtin; это optional-возможность, не обязательная зависимость обычной установки. В текущем опубликованном модуле blockly_editable=true и есть module-owned workspace/generated Python. Blockly содержит typed operation repository_updates.refresh_public с интервалом 21600 секунд. Исполняется сгенерированный Python, а не Blockly JSON; BPMN isExecutable=false. ===== Интервал, API и повтор (BPMN) ===== {"notes": ["Описательная BPMN, isExecutable=false; optional Blockly Python побайтово проверен.", "requires_xmpp=False; Django-free process вызывает объявленную backend operation.", "21600 секунд — интервал после успешного завершения; первый запуск сразу, память теряется при рестарте.", "Проверка evidence не выполняет install/pull/merge/restart."], "sources": [{"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "handler_contributions.py", "repository": "sharix-open-sysadmin", "sha256": "96182d34efae36a2abf6b0ea81f61690f4d16d422a8e387a28ebf221eb520d82"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "handlers/repository_update_watch.py", "repository": "sharix-open-sysadmin", "sha256": "4dae269db5f8a96b1d74aece1faae3a68a0378569c48a47535c012a4bf4de6d3"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "handlers/blockly/repository_update_watch.json", "repository": "sharix-open-sysadmin", "sha256": "adaf5e5633e81617b525906621c226680744698187a3c4e31cae56f4fe5b71db"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "services/repository_update_handler.py", "repository": "sharix-open-sysadmin", "sha256": "2e9ba086f017a1f4ba3c11b59ef0362d3a2039fb177cd54767f4b506eb2ae6b2"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "services/repository_updates.py", "repository": "sharix-open-sysadmin", "sha256": "3f36c0ec4efdb07377be0e9b0c04d7557982f6c8ea6c7c98b1500053bc8e0689"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "services/source_provenance.py", "repository": "sharix-open-sysadmin", "sha256": "b89683e9a17d5d0202290f40cfa78d57aa6751691fb2a6ed0af06e2da75e477f"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "optional_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "139b8250a40292fc756dca9f415ce2a474644bc4ebfd69270b71b29ea3c7047a"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/optional_handler_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "de2c71b8b35bdd3ff81827a597c24cd87eb35441251012911d1ab2baacf38639"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "main.py", "repository": "sharix-open-handlers-backend", "sha256": "66b7df94fedbec931ed4cb2d4e1afd9cf0386e14ed0932e22b15eb301cd792d7"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_optional.py", "repository": "sharix-open-backend", "sha256": "0ff88578f68777a67fcf9624fabb580f829f3acbce041816b0c835495d6a3e2d"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/optional_handler_runtime.py", "repository": "sharix-open-backend", "sha256": "fd4fd4cf0e2fd4b9d6c2a658f9acc7784e819306540a0995660e114a8e7bca72"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/handler_contributions.py", "repository": "sharix-open-backend", "sha256": "98b32d6f8b27eb51dce8f767d5c45a42fd08cf5f8d749eff95da286183dda00f"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "urls.py", "repository": "sharix-open-backend", "sha256": "61ffd2f0563291da2dcc9488a5443cb5e2c0395108740a6700034cfd90548158"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/handler_auth.py", "repository": "sharix-open-tickets", "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"}]} watch_start watch_due watch_call watch_ok watch_save watch_wait watch_repeat watch_error watch_Flow_0 watch_Flow_0 watch_Flow_1 watch_Flow_2 watch_Flow_1 watch_Flow_3 watch_Flow_3 watch_Flow_4 watch_Flow_6 watch_Flow_4 watch_Flow_5 watch_Flow_2 watch_Flow_5 watch_Flow_7 watch_Flow_8 base_optional_handler_interval watch_Flow_8 watch_Flow_6 watch_Flow_7 OptionalHandlerContext не требует XMPP и выполняет общий identity preflight. Далее generated process_cycle вызывает run_operation_every с явным интервалом **21600 секунд (6 часов)**. Поведение шестичасового интервала: - Первый проход вызывает operation сразу. - После успешного HTTP/JSON status=ok сохраняется monotonic-время завершения. - До истечения 21600 секунд запрос пропускается. - После рестарта первая проверка выполняется заново. Таймер хранится в памяти; это не календарный cron с фиксированным временем суток. Внешний процессный цикл ждёт INTERVAL_TIME через exit_event.wait, то есть остановка прерывает ожидание. При исключении operation last_run не обновляется; ошибка логируется, следующий базовый цикл может повторить запрос. Но SOURCE_UNAVAILABLE или PRIVATE_AUTH_REQUIRED в успешно возвращённом evidence не являются исключением API: такой status=ok начинает обычный шестичасовой интервал. Узкий backend endpoint: - Проверяет HasHandlerAPIKey и identity. - Находит materialized contribution и объявленную operation этого handler. - Требует capability repository.update.watch. - Вызывает только зарегистрированный callback для объявленного operation code. Текст и payload не становятся произвольными командами ОС. ===== Внешний Git и snapshot (BPMN) ===== {"notes": ["Описательная BPMN, isExecutable=false; optional Blockly Python побайтово проверен.", "requires_xmpp=False; Django-free process вызывает объявленную backend operation.", "21600 секунд — интервал после успешного завершения; первый запуск сразу, память теряется при рестарте.", "Проверка evidence не выполняет install/pull/merge/restart."], "sources": [{"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "handler_contributions.py", "repository": "sharix-open-sysadmin", "sha256": "96182d34efae36a2abf6b0ea81f61690f4d16d422a8e387a28ebf221eb520d82"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "handlers/repository_update_watch.py", "repository": "sharix-open-sysadmin", "sha256": "4dae269db5f8a96b1d74aece1faae3a68a0378569c48a47535c012a4bf4de6d3"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "handlers/blockly/repository_update_watch.json", "repository": "sharix-open-sysadmin", "sha256": "adaf5e5633e81617b525906621c226680744698187a3c4e31cae56f4fe5b71db"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "services/repository_update_handler.py", "repository": "sharix-open-sysadmin", "sha256": "2e9ba086f017a1f4ba3c11b59ef0362d3a2039fb177cd54767f4b506eb2ae6b2"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "services/repository_updates.py", "repository": "sharix-open-sysadmin", "sha256": "3f36c0ec4efdb07377be0e9b0c04d7557982f6c8ea6c7c98b1500053bc8e0689"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "services/source_provenance.py", "repository": "sharix-open-sysadmin", "sha256": "b89683e9a17d5d0202290f40cfa78d57aa6751691fb2a6ed0af06e2da75e477f"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "optional_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "139b8250a40292fc756dca9f415ce2a474644bc4ebfd69270b71b29ea3c7047a"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/optional_handler_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "de2c71b8b35bdd3ff81827a597c24cd87eb35441251012911d1ab2baacf38639"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "main.py", "repository": "sharix-open-handlers-backend", "sha256": "66b7df94fedbec931ed4cb2d4e1afd9cf0386e14ed0932e22b15eb301cd792d7"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_optional.py", "repository": "sharix-open-backend", "sha256": "0ff88578f68777a67fcf9624fabb580f829f3acbce041816b0c835495d6a3e2d"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/optional_handler_runtime.py", "repository": "sharix-open-backend", "sha256": "fd4fd4cf0e2fd4b9d6c2a658f9acc7784e819306540a0995660e114a8e7bca72"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/handler_contributions.py", "repository": "sharix-open-backend", "sha256": "98b32d6f8b27eb51dce8f767d5c45a42fd08cf5f8d749eff95da286183dda00f"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "urls.py", "repository": "sharix-open-backend", "sha256": "61ffd2f0563291da2dcc9488a5443cb5e2c0395108740a6700034cfd90548158"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/handler_auth.py", "repository": "sharix-open-tickets", "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"}]} api_start api_auth api_inventory api_visibility api_private api_git api_cache api_end api_Flow_0 api_Flow_0 api_Flow_1 api_Flow_1 api_Flow_2 api_Flow_2 api_Flow_3 api_Flow_4 api_Flow_3 api_Flow_5 api_Flow_4 api_Flow_6 api_Flow_5 api_Flow_6 api_Flow_7 api_Flow_7 {"notes": ["Описательная BPMN, isExecutable=false; optional Blockly Python побайтово проверен.", "requires_xmpp=False; Django-free process вызывает объявленную backend operation.", "21600 секунд — интервал после успешного завершения; первый запуск сразу, память теряется при рестарте.", "Проверка evidence не выполняет install/pull/merge/restart."], "sources": [{"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "handler_contributions.py", "repository": "sharix-open-sysadmin", "sha256": "96182d34efae36a2abf6b0ea81f61690f4d16d422a8e387a28ebf221eb520d82"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "handlers/repository_update_watch.py", "repository": "sharix-open-sysadmin", "sha256": "4dae269db5f8a96b1d74aece1faae3a68a0378569c48a47535c012a4bf4de6d3"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "handlers/blockly/repository_update_watch.json", "repository": "sharix-open-sysadmin", "sha256": "adaf5e5633e81617b525906621c226680744698187a3c4e31cae56f4fe5b71db"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "services/repository_update_handler.py", "repository": "sharix-open-sysadmin", "sha256": "2e9ba086f017a1f4ba3c11b59ef0362d3a2039fb177cd54767f4b506eb2ae6b2"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "services/repository_updates.py", "repository": "sharix-open-sysadmin", "sha256": "3f36c0ec4efdb07377be0e9b0c04d7557982f6c8ea6c7c98b1500053bc8e0689"}, {"commit": "60e386e892793ffe37b8f0d842330c6e5635068e", "path": "services/source_provenance.py", "repository": "sharix-open-sysadmin", "sha256": "b89683e9a17d5d0202290f40cfa78d57aa6751691fb2a6ed0af06e2da75e477f"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "optional_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "139b8250a40292fc756dca9f415ce2a474644bc4ebfd69270b71b29ea3c7047a"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/optional_handler_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "de2c71b8b35bdd3ff81827a597c24cd87eb35441251012911d1ab2baacf38639"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "main.py", "repository": "sharix-open-handlers-backend", "sha256": "66b7df94fedbec931ed4cb2d4e1afd9cf0386e14ed0932e22b15eb301cd792d7"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_optional.py", "repository": "sharix-open-backend", "sha256": "0ff88578f68777a67fcf9624fabb580f829f3acbce041816b0c835495d6a3e2d"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/optional_handler_runtime.py", "repository": "sharix-open-backend", "sha256": "fd4fd4cf0e2fd4b9d6c2a658f9acc7784e819306540a0995660e114a8e7bca72"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/handler_contributions.py", "repository": "sharix-open-backend", "sha256": "98b32d6f8b27eb51dce8f767d5c45a42fd08cf5f8d749eff95da286183dda00f"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "urls.py", "repository": "sharix-open-backend", "sha256": "61ffd2f0563291da2dcc9488a5443cb5e2c0395108740a6700034cfd90548158"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/handler_auth.py", "repository": "sharix-open-tickets", "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"}]} view_start view_identity view_current view_show view_stale view_Flow_0 view_Flow_0 view_Flow_1 view_Flow_1 view_Flow_2 view_Flow_3 view_Flow_2 view_Flow_3 Sysadmin собирает локальные source facts, отдельно определяет configured deployment target и canonical upstream target. Для public-целей выполняет anonymous ls-remote и при необходимости сравнение истории во временном repository. В рабочем checkout проверка не делает merge/reset/pull. Независимые repositories обрабатываются небольшим bounded worker pool, до четырёх workers, а не одной последовательной цепочкой всех сетевых тайм-аутов. Состояние каждой цели имеет отдельный смысл: * **CURRENT:** установленный commit совпадает с удалённой ref при согласованном чистом состоянии. * **UPDATE_AVAILABLE:** удалённая ref содержит более новые commits. * **LOCAL_AHEAD:** локальный commit опережает удалённую цель. * **DIVERGED:** история разошлась либо в рабочем дереве есть локальные изменения. * **SOURCE_UNAVAILABLE:** цель/ref временно недоступна. * **PRIVATE_AUTH_REQUIRED:** нужна явная разовая проверка с авторизацией. * **UNKNOWN:** отношение локального и удалённого состояния не доказано. Совпадающие deployment/upstream-цели могут переиспользовать evidence; разные проверяются независимо. Публикационная проекция evidence не является криптографическим подтверждением всей установки. Private-цель без разовых credentials возвращает PRIVATE_AUTH_REQUIRED. Фоновая operation не читает private credentials и не пытается автоматически использовать пользовательское хранилище. Public Git-вызовы отключают интерактивный prompt/askpass и credential helper. Отдельная ручная private-refresh операция существует в Sysadmin, но **не вызывается этим handler**, её credentials не сохраняются в snapshot. Копировать секрет в Blockly/Wiki/описание operation не требуется. Результат проверки: * нечувствительное evidence в managed conf-real/repository-update-status.json; * summary по обработанным repositories; * отдельный статус каждой deployment/upstream-цели. Недоступность одной цели может быть штатным содержимым успешного ответа operation. Status=ok не означает CURRENT у всех repositories. Обычное открытие страницы статусов: - Читает сохранённый snapshot. - Сопоставляет его identity с текущими source, branch, commit и worktree facts. - Не выдаёт устаревшее CURRENT при несовпадении фактов. Git network I/O выполняет refresh, а не этот read path. ===== Диагностика и эксплуатационный смысл ===== Порядок диагностики: - Проверить enabled и выбранную runtime version. - Сверить identity и capability. - Найти момент последнего успешного operation. - Разобрать состояние каждой deployment/upstream-цели. - Проверить, соответствует ли snapshot текущей ветке, source URL, commit и рабочему дереву. PRIVATE_AUTH_REQUIRED не означает общей сетевой недоступности сервера. После изменения ветки, source URL, commit или рабочего дерева старый snapshot может стать неактуальным — это ожидаемая защита от ложного CURRENT. Решение применить обновление принимает оператор через штатный repository/deployment workflow; этот монитор не является его заменой. ===== Проверенные источники ===== 31.10.2026 проверен новый Sysadmin commit a7e8b841f9a5a790df5d3adfcb265a7011bbabcb. Шесть ранее закреплённых файлов совпали по SHA-256. В documentation исходных BPMN сохранён прежний commit 60e386e892793ffe37b8f0d842330c6e5635068e; он описывает те же побайтовые исходники. Ссылки ниже и metadata указывают актуальный проверенный commit. Git SHA/SHA-256 и модели закреплены в metadata/BPMN; перед упаковкой они повторно сверены. Сама operation, локальные installation facts и её сетевые Git-проверки при анализе не запускались. Для анализа прочитан только опубликованный source Git. Общий автоматический hook обновлений Wiki пока не завершён. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-sysadmin/src/commit/a7e8b841f9a5a790df5d3adfcb265a7011bbabcb/handler_contributions.py|sharix-open-sysadmin / handler_contributions.py]] — Git a7e8b841f9a5a790df5d3adfcb265a7011bbabcb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-sysadmin/src/commit/a7e8b841f9a5a790df5d3adfcb265a7011bbabcb/handlers/repository_update_watch.py|sharix-open-sysadmin / handlers/repository_update_watch.py]] — Git a7e8b841f9a5a790df5d3adfcb265a7011bbabcb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-sysadmin/src/commit/a7e8b841f9a5a790df5d3adfcb265a7011bbabcb/handlers/blockly/repository_update_watch.json|sharix-open-sysadmin / handlers/blockly/repository_update_watch.json]] — Git a7e8b841f9a5a790df5d3adfcb265a7011bbabcb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-sysadmin/src/commit/a7e8b841f9a5a790df5d3adfcb265a7011bbabcb/services/repository_update_handler.py|sharix-open-sysadmin / services/repository_update_handler.py]] — Git a7e8b841f9a5a790df5d3adfcb265a7011bbabcb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-sysadmin/src/commit/a7e8b841f9a5a790df5d3adfcb265a7011bbabcb/services/repository_updates.py|sharix-open-sysadmin / services/repository_updates.py]] — Git a7e8b841f9a5a790df5d3adfcb265a7011bbabcb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-sysadmin/src/commit/a7e8b841f9a5a790df5d3adfcb265a7011bbabcb/services/source_provenance.py|sharix-open-sysadmin / services/source_provenance.py]] — Git a7e8b841f9a5a790df5d3adfcb265a7011bbabcb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/optional_blockly_codegen.py|sharix-open-handlers-backend / optional_blockly_codegen.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/optional_handler_runtime.py|sharix-open-handlers-backend / core/optional_handler_runtime.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/requesters.py|sharix-open-handlers-backend / core/requesters.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/main.py|sharix-open-handlers-backend / main.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/apiviews/handler_optional.py|sharix-open-backend / apiviews/handler_optional.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/optional_handler_runtime.py|sharix-open-backend / lib/optional_handler_runtime.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/handler_contributions.py|sharix-open-backend / lib/handler_contributions.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/urls.py|sharix-open-backend / urls.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/api/handler_auth.py|sharix-open-tickets / api/handler_auth.py]] — Git fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14. ===== Связанные материалы ===== * [[sharixopen:knowledge:modules:handlers|Модуль обработчиков]] * [[sharixopen:knowledge:scenarios:start|Индекс сценариев]] ~~SHARIX_KNOWLEDGE_RELATED~~