Инструменты пользователя

Инструменты сайта


sharixopen:knowledge:scenarios:repository_update_watch

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

sharixopen:knowledge:scenarios:repository_update_watch [2026/10/28 22:00] – [sharixknowledge] approved package sx_knowledge_api_opensharixopen:knowledge:scenarios:repository_update_watch [2026/10/31 12:14] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open
Строка 12: Строка 12:
             "ShariXKnowledgeOpenKnowledgeModulesHandlers",             "ShariXKnowledgeOpenKnowledgeModulesHandlers",
             "ShariXKnowledgeScenarios"             "ShariXKnowledgeScenarios"
 +        ],
 +        "depends_on": [
 +            "ShariXKnowledgeOpenKnowledgeModulesHandlers",
 +            "ShariXKnowledgeOpenKnowledgeModulesSysadmin"
 +        ],
 +        "verified_by": [
 +            "ShariXKnowledgeVerification"
         ]         ]
     },     },
     "extensions": {     "extensions": {
         "taxonomy": {         "taxonomy": {
-            "domain": "business_processes",+            "domain": "operations",
             "lifecycle": "implemented",             "lifecycle": "implemented",
-            "component": "handlers",+            "component": "sharix_sysadmin, handlers_backend, dbsynce",
             "parents": [             "parents": [
                 "ShariXKnowledgeScenarios"                 "ShariXKnowledgeScenarios"
             ],             ],
             "terms": [             "terms": [
-                "Sysadmin", +                "audience_operator", 
-                "repository updates", +                "audience_administrator", 
-                "optional handler", +                "audience_developer", 
-                "BPMN"+                "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"
             ]             ]
         },         },
Строка 36: Строка 58:
             {             {
                 "repository": "sharix-open-sysadmin",                 "repository": "sharix-open-sysadmin",
-                "commit": "60e386e892793ffe37b8f0d842330c6e5635068e",+                "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb",
                 "path": "handler_contributions.py",                 "path": "handler_contributions.py",
                 "sha256": "96182d34efae36a2abf6b0ea81f61690f4d16d422a8e387a28ebf221eb520d82"                 "sha256": "96182d34efae36a2abf6b0ea81f61690f4d16d422a8e387a28ebf221eb520d82"
Строка 42: Строка 64:
             {             {
                 "repository": "sharix-open-sysadmin",                 "repository": "sharix-open-sysadmin",
-                "commit": "60e386e892793ffe37b8f0d842330c6e5635068e",+                "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb",
                 "path": "handlers/repository_update_watch.py",                 "path": "handlers/repository_update_watch.py",
                 "sha256": "4dae269db5f8a96b1d74aece1faae3a68a0378569c48a47535c012a4bf4de6d3"                 "sha256": "4dae269db5f8a96b1d74aece1faae3a68a0378569c48a47535c012a4bf4de6d3"
Строка 48: Строка 70:
             {             {
                 "repository": "sharix-open-sysadmin",                 "repository": "sharix-open-sysadmin",
-                "commit": "60e386e892793ffe37b8f0d842330c6e5635068e",+                "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb",
                 "path": "handlers/blockly/repository_update_watch.json",                 "path": "handlers/blockly/repository_update_watch.json",
                 "sha256": "adaf5e5633e81617b525906621c226680744698187a3c4e31cae56f4fe5b71db"                 "sha256": "adaf5e5633e81617b525906621c226680744698187a3c4e31cae56f4fe5b71db"
Строка 54: Строка 76:
             {             {
                 "repository": "sharix-open-sysadmin",                 "repository": "sharix-open-sysadmin",
-                "commit": "60e386e892793ffe37b8f0d842330c6e5635068e",+                "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb",
                 "path": "services/repository_update_handler.py",                 "path": "services/repository_update_handler.py",
                 "sha256": "2e9ba086f017a1f4ba3c11b59ef0362d3a2039fb177cd54767f4b506eb2ae6b2"                 "sha256": "2e9ba086f017a1f4ba3c11b59ef0362d3a2039fb177cd54767f4b506eb2ae6b2"
Строка 60: Строка 82:
             {             {
                 "repository": "sharix-open-sysadmin",                 "repository": "sharix-open-sysadmin",
-                "commit": "60e386e892793ffe37b8f0d842330c6e5635068e",+                "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb",
                 "path": "services/repository_updates.py",                 "path": "services/repository_updates.py",
                 "sha256": "3f36c0ec4efdb07377be0e9b0c04d7557982f6c8ea6c7c98b1500053bc8e0689"                 "sha256": "3f36c0ec4efdb07377be0e9b0c04d7557982f6c8ea6c7c98b1500053bc8e0689"
Строка 66: Строка 88:
             {             {
                 "repository": "sharix-open-sysadmin",                 "repository": "sharix-open-sysadmin",
-                "commit": "60e386e892793ffe37b8f0d842330c6e5635068e",+                "commit": "a7e8b841f9a5a790df5d3adfcb265a7011bbabcb",
                 "path": "services/source_provenance.py",                 "path": "services/source_provenance.py",
                 "sha256": "b89683e9a17d5d0202290f40cfa78d57aa6751691fb2a6ed0af06e2da75e477f"                 "sha256": "b89683e9a17d5d0202290f40cfa78d57aa6751691fb2a6ed0af06e2da75e477f"
Строка 141: Строка 163:
                 "repository_updates.refresh_public"                 "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": "635cc643e24864ad320d8f0c81642b5bc262370c6519b199f6d9dc39fba584a2",+    "content_sha256": "e4b4dfa50e1d5923d81b766d617b607794c8c48e6f6c3774a5bdd8389664015c",
     "schema": 1     "schema": 1
 } }
Строка 150: Строка 239:
 ~~NOCACHE~~ ~~NOCACHE~~
  
-**Область:** публичный контракт ShariX Open/shared Sysadmin. **Обработчик:** ''repository_update_watch'', module contribution ''sharix_sysadmin'', без типа/статуса Ticket. Проверено 29.10.2026 по свежему Sysadmin Git и закреплённым shared contracts. Python побайтово совпадает с каноническим optional Blockly renderer. Включённость и выбранная версия установки проверяются отдельно.+**Назначение:** [[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. Сам обработчик и его внешние действия при анализе не запускались. Выбранная версия, настройки и работоспособность конкретной установки проверяются отдельно.
  
 ===== Назначение и границы ===== ===== Назначение и границы =====
-Обработчик обновляет сведения о deployment/upstream Git-состоянии управляемых **установленных** repositories. Он не выполняет установку новой версии, git pull/merge, переключение рабочих веток, migrations или restart сервиса. Найденное обновление — evidence для решения оператора, не само применение обновления.+Монитор обновляет сведения об установленных управляемых 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. 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.
Строка 308: Строка 410:
 OptionalHandlerContext не требует XMPP и выполняет общий identity preflight. Далее generated process_cycle вызывает run_operation_every с явным интервалом **21600 секунд (6 часов)**. OptionalHandlerContext не требует XMPP и выполняет общий identity preflight. Далее generated process_cycle вызывает run_operation_every с явным интервалом **21600 секунд (6 часов)**.
  
-Первый проход выполняет operation сразу. После успешного HTTP/JSON status=ok запоминается monotonic-время завершения. До истечения интервала запрос пропускается. Таймер хранится в памяти: рестарт запускает первую проверку заново; это не постоянный календарный cron с фиксированным временем суток.+Поведение шестичасового интервала: 
 + 
 +  - Первый проход вызывает 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 начинает обычный шестичасовой интервал. Внешний процессный цикл ждёт 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 берётся только из зарегистрированного contribution и исполняет только объявленный operation code. Бот не получает универсальный API выполнения команд из текста/payload.+Узкий backend endpoint: 
 + 
 +  - Проверяет HasHandlerAPIKey и identity. 
 +  - Находит materialized contribution и объявленную operation этого handler. 
 +  - Требует capability repository.update.watch. 
 +  - Вызывает только зарегистрированный callback для объявленного operation code. 
 + 
 +Текст и payload не становятся произвольными командами ОС.
  
 ===== Внешний Git и snapshot (BPMN) ===== ===== Внешний Git и snapshot (BPMN) =====
Строка 549: Строка 665:
 Sysadmin собирает локальные source facts, отдельно определяет configured deployment target и canonical upstream target. Для public-целей выполняет anonymous ls-remote и при необходимости сравнение истории во временном repository. В рабочем checkout проверка не делает merge/reset/pull. Независимые repositories обрабатываются небольшим bounded worker pool, до четырёх workers, а не одной последовательной цепочкой всех сетевых тайм-аутов. Sysadmin собирает локальные source facts, отдельно определяет configured deployment target и canonical upstream target. Для public-целей выполняет anonymous ls-remote и при необходимости сравнение истории во временном repository. В рабочем checkout проверка не делает merge/reset/pull. Независимые repositories обрабатываются небольшим bounded worker pool, до четырёх workers, а не одной последовательной цепочкой всех сетевых тайм-аутов.
  
-Состояния различают CURRENT, UPDATE_AVAILABLE, LOCAL_AHEAD, DIVERGED, SOURCE_UNAVAILABLE, PRIVATE_AUTH_REQUIRED и UNKNOWN. Dirty worktree не должен выдавать ложный CURRENT. Совпадение deployment и upstream цели позволяет переиспользовать одно evidence; иначе цели проверяются независимо. Дополнительно хранится предусмотренная публикационная проекция source evidence, не криптографическое подтверждение всей удалённой установки.+Состояние каждой цели имеет отдельный смысл: 
 + 
 +  * **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 не требуется. Private-цель без разовых credentials возвращает PRIVATE_AUTH_REQUIRED. Фоновая operation не читает private credentials и не пытается автоматически использовать пользовательское хранилище. Public Git-вызовы отключают интерактивный prompt/askpass и credential helper. Отдельная ручная private-refresh операция существует в Sysadmin, но **не вызывается этим handler**, её credentials не сохраняются в snapshot. Копировать секрет в Blockly/Wiki/описание operation не требуется.
  
-Результаты сохраняются как нечувствительное invalidatable evidence в managed ''conf-real/repository-update-status.json'' и возвращается summary. Ошибка/недоступность конкретной цели может быть штатным результатом evidence, а не доказательством поломки всего handler.+Результат проверки:
  
-Обычный read path страницы статусов не делает Git network I/O. Он сопоставляет сохранённую identity snapshot с текущими source/branch/commit/worktree facts; несоответствующее evidence не должно выдавать прежний CURRENT как актуальную проверку. Открытие страницы и запуск refresh — разные операции.+  * нечувствительное 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 цели. Не считайте status=ok доказательством, что все repositories доступны или не имеют обновлений. Не считайте PRIVATE_AUTH_REQUIRED общей сетевой недоступностью сервера.+Порядок диагностики: 
 + 
 +  - Проверить enabled и выбранную runtime version. 
 +  - Сверить identity и capability. 
 +  - Найти момент последнего успешного operation. 
 +  - Разобрать состояние каждой deployment/upstream-цели. 
 +  - Проверить, соответствует ли snapshot текущей ветке, source URL, commit и рабочему дереву. 
 + 
 +PRIVATE_AUTH_REQUIRED не означает общей сетевой недоступности сервера.
  
 После изменения ветки, source URL, commit или рабочего дерева старый snapshot может стать неактуальным — это ожидаемая защита от ложного CURRENT. Решение применить обновление принимает оператор через штатный repository/deployment workflow; этот монитор не является его заменой. После изменения ветки, 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 пока не завершён. 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/60e386e892793ffe37b8f0d842330c6e5635068e/handler_contributions.py|sharix-open-sysadmin / handler_contributions.py]] — Git 60e386e892793ffe37b8f0d842330c6e5635068e. +  * [[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/60e386e892793ffe37b8f0d842330c6e5635068e/handlers/repository_update_watch.py|sharix-open-sysadmin / handlers/repository_update_watch.py]] — Git 60e386e892793ffe37b8f0d842330c6e5635068e. +  * [[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/60e386e892793ffe37b8f0d842330c6e5635068e/handlers/blockly/repository_update_watch.json|sharix-open-sysadmin / handlers/blockly/repository_update_watch.json]] — Git 60e386e892793ffe37b8f0d842330c6e5635068e. +  * [[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/60e386e892793ffe37b8f0d842330c6e5635068e/services/repository_update_handler.py|sharix-open-sysadmin / services/repository_update_handler.py]] — Git 60e386e892793ffe37b8f0d842330c6e5635068e. +  * [[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/60e386e892793ffe37b8f0d842330c6e5635068e/services/repository_updates.py|sharix-open-sysadmin / services/repository_updates.py]] — Git 60e386e892793ffe37b8f0d842330c6e5635068e. +  * [[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/60e386e892793ffe37b8f0d842330c6e5635068e/services/source_provenance.py|sharix-open-sysadmin / services/source_provenance.py]] — Git 60e386e892793ffe37b8f0d842330c6e5635068e.+  * [[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/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/optional_handler_runtime.py|sharix-open-handlers-backend / core/optional_handler_runtime.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
sharixopen/knowledge/scenarios/repository_update_watch.txt · Последнее изменение: — sx_knowledge_api_open

© 2022 ShariX