diff --git a/runtime/history/NEWFI-260907-PORTAL200-IMPORTDISC1.json b/runtime/history/NEWFI-260907-PORTAL200-IMPORTDISC1.json new file mode 100644 index 00000000..91a205e1 --- /dev/null +++ b/runtime/history/NEWFI-260907-PORTAL200-IMPORTDISC1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "NEWFI-260907-PORTAL200-IMPORTDISC1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "newfi-portal200-import-contract-discovery", + "started_at_utc": "2026-09-07T13:57:45Z", + "finished_at_utc": "2026-09-07T13:57:49Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "a32cdd68683283d248211bd673871eeea2fb8eadbbac00daff7bac80d89ed667", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": false, + "result_contract_valid": true, + "result_contract_status": null, + "result_contract_error": null, + "command_rc": 0, + "changes_made": false, + "rollback_started": false, + "rollback_restored": null, + "mutation_outcome": "NO_MUTATION", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "6eb7a2f80c7e8b4aa907f08655fc0a90a88bd76fdc4cf82f16f7559482a5605f", + "sanitized_output_sha256": "6eb7a2f80c7e8b4aa907f08655fc0a90a88bd76fdc4cf82f16f7559482a5605f", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "NEWFI60_BEGIN\nCOMMAND_ID=NEWFI-260907-PORTAL200-IMPORTDISC1\nMUTATION_SCOPE=NONE_READ_ONLY\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_SOURCE_LINE_53= status = document.get(\"status\")\nRUNNER_SOURCE_LINE_54= if status not in {\"OK\", \"BLOCKED\", \"FAIL\"}:\nRUNNER_SOURCE_LINE_55= raise ValueError(\"invalid status\")\nRUNNER_SOURCE_LINE_56= changes = document.get(\"changes_made\")\nRUNNER_SOURCE_LINE_57= rollback_started = document.get(\"rollback_started\")\nRUNNER_SOURCE_LINE_58= rollback_restored = document.get(\"rollback_restored\")\nRUNNER_SOURCE_LINE_59= if not isinstance(changes, bool):\nRUNNER_SOURCE_LINE_60= raise ValueError(\"changes_made must be boolean\")\nRUNNER_SOURCE_LINE_61= if not isinstance(rollback_started, bool):\nRUNNER_SOURCE_LINE_62= raise ValueError(\"rollback_started must be boolean\")\nRUNNER_SOURCE_LINE_63= if rollback_restored is not None and not isinstance(\nRUNNER_SOURCE_LINE_64= rollback_restored,\nRUNNER_SOURCE_LINE_65= bool,\nRUNNER_SOURCE_LINE_66= ):\nRUNNER_SOURCE_LINE_67= raise ValueError(\nRUNNER_SOURCE_LINE_68= \"rollback_restored must be boolean or null\"\nRUNNER_SOURCE_LINE_69= )\nRUNNER_SOURCE_LINE_70= if rollback_restored is True and rollback_started is not True:\nRUNNER_SOURCE_LINE_71= raise ValueError(\nRUNNER_SOURCE_LINE_72= \"rollback_restored without rollback_started\"\nRUNNER_SOURCE_LINE_73= )\nRUNNER_SOURCE_LINE_74= if rollback_started is True and changes is not True:\nRUNNER_SOURCE_LINE_75= raise ValueError(\nRUNNER_SOURCE_LINE_76= \"rollback_started without changes\"\nRUNNER_SOURCE_LINE_77= )\nRUNNER_SOURCE_LINE_78= if status == \"BLOCKED\" and (\nRUNNER_SOURCE_LINE_79= changes\nRUNNER_SOURCE_LINE_80= or rollback_started\nRUNNER_SOURCE_LINE_81= or command_rc != 2\nRUNNER_SOURCE_LINE_82= ):\nRUNNER_SOURCE_LINE_83= raise ValueError(\nRUNNER_SOURCE_LINE_84= \"BLOCKED contract inconsistent with rc/mutation\"\nRUNNER_SOURCE_LINE_85= )\nSTAGING_REFLECTION={\"err_data\":\"\",\"err_truncated\":null,\"exitcode\":0,\"exited\":1,\"out_data\":\"IMPORT_DISCOVERY_REFLECTION={\\\"dm_class\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\DataManager\\\",\\\"addon_found\\\":true,\\\"addon_installed\\\":true,\\\"dm_enqueueImportAddOnData\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[{\\\"name\\\":\\\"addOn\\\",\\\"optional\\\":false,\\\"has_default\\\":false}],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\DataManager\\\"},\\\"dm_getDataTypeClasses\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\DataManager\\\"},\\\"dm_getDataTypeHandler\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[{\\\"name\\\":\\\"class\\\",\\\"optional\\\":false,\\\"has_default\\\":false}],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\DataManager\\\"},\\\"addon_preRebuild\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\AddOn\\\"},\\\"addon_postDataImport\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\AddOn\\\"},\\\"addon_postRebuild\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\AddOn\\\"}}\\n\",\"out_truncated\":0,\"transport_rc\":0}\nSTAGING_CLI_COMMANDS={\"err_data\":\"\",\"exitcode\":0,\"matching_commands\":[\"xf:addon-disable Disables the specified add-on. If no add-on ID is provided, all enabled add-ons will be disabled.\",\"xf:addon-enable Enable the specified add-on. If no add-on ID is provided, all disabled add-ons will be enabled.\",\"xf:addon-install Installs the specified add-on\",\"xf:addon-list Lists installed add-ons\",\"xf:addon-rebuild Rebuilds the specified add-on data.\",\"xf:addon-uninstall Uninstalls the specified add-on\",\"xf:addon-upgrade Upgrades the specified add-on\",\"xf:rebuild-master-data Rebuilds the core XF master data.\",\"xf-addon:build-release Performs an export of the current XML data and saves a ZIP file to _releases\",\"xf-addon:bump-version Bumps the version of the specified add-on\",\"xf-addon:create Creates an XF add-on and writes out the basic addon.json file.\",\"xf-addon:export Exports the XML files for an add-on\",\"xf-addon:install-step Runs a specific step from the specified add-on Setup class.\",\"xf-addon:sync-json Syncs the contents of the add-on JSON file to the database, updating the title, version and JSON hash as necessary\",\"xf-addon:uninstall-step Runs a specific step from the specified add-on Setup class.\",\"xf-addon:upgrade-step Runs a specific step from the specified add-on Setup class.\",\"xf-addon:validate-json Validates the contents of the add-on JSON file to ensure all of the required values exist and are of the correct type.\",\"xf-designer:rebuild-metadata Rebuilds metadata hashes based on file system content\",\"xf-dev:analyze-icons Analyzes icon usage and rebuilds sprites.\",\"xf-dev:file-phraser Analyzes and applies phrase replacements in add-on PHP files\",\"xf-dev:import Imports all data from development files\",\"xf-dev:import-activity-summary-definitions Imports activity summary definitions from development files\",\"xf-dev:import-admin-navigation Imports admin navigation from development files\",\"xf-dev:import-admin-permissions Imports admin permissions from development files\",\"xf-dev:import-advertising-positions Imports advertising positions from development files\",\"xf-dev:import-api-scopes Imports API scopes from development files\",\"xf-dev:import-bb-code-media-sites Imports bb code media sites from development files\",\"xf-dev:import-bb-codes Imports bb codes from development files\",\"xf-dev:import-class-extensions Imports class extensions from development files\",\"xf-dev:import-code-event-listeners Imports code event listeners from development files\",\"xf-dev:import-code-events Imports code events from development files\",\"xf-dev:import-content-types Imports content types from development files\",\"xf-dev:import-cron-entries Imports cron entries from development files\",\"xf-dev:import-help-pages Imports help pages from development files\",\"xf-dev:import-member-stats Imports member stats from development files\",\"xf-dev:import-navigation Imports navigation from development files\",\"xf-dev:import-options Imports options from development files\",\"xf-dev:import-permissions Imports permissions from development files\",\"xf-dev:import-phrases Imports phrases from development files\",\"xf-dev:import-routes Imports routes from development files\",\"xf-dev:import-style-properties Imports style properties from development files\",\"xf-dev:import-template-modifications Imports template modifications from development files\",\"xf-dev:import-templates Imports templates from development files\",\"xf-dev:import-widget-definitions Imports widget definitions from development files\",\"xf-dev:import-widget-positions Imports widget positions from development files\",\"xf-dev:rebuild-caches Rebuilds various caches\",\"xf-dev:rebuild-metadata Rebuilds metadata hashes based on file system content\",\"xf-dev:unused-phrase-finder Finds and optionally deletes unused master phrases for an add-on\",\"xf-embed-metadata:conversation-messages Rebuilds embed metadata for direct message conversations.\",\"xf-embed-metadata:posts Rebuilds embed metadata for posts.\",\"xf-embed-metadata:profile-post-comments Rebuilds embed metadata for profile post comments.\",\"xf-embed-metadata:profile-posts Rebuilds embed metadata for profile posts.\",\"xf-embed-metadata:xfrm-resource-updates Rebuilds embed metadata for resource updates.\",\"xf-make:stub-publish Publish stub templates to an add-on for customization\",\"xf-rebuild:attachment-optimization Optimizes attachments to WebP format.\",\"xf-rebuild:attachment-thumbnails Rebuilds attachment thumbnails\",\"xf-rebuild:avatar-optimization Optimizes avatars to WebP format.\",\"xf-rebuild:forums Rebuilds forum counters.\",\"xf-rebuild:icon-usage Analyzes icon usage and rebuilds sprites.\",\"xf-rebuild:message-counts Rebuilds user message counts.\",\"xf-rebuild:profile-banner-optimization Optimizes profile banners to WebP format.\",\"xf-rebuild:reaction-score Rebuilds user reaction score.\",\"xf-rebuild:search Rebuilds the search index.\",\"xf-rebuild:sitemap Rebuilds XML sitemap.\",\"xf-rebuild:stats Rebuilds daily statistics.\",\"xf-rebuild:threads Rebuilds thread counters.\",\"xf-rebuild:users Rebuilds user counters and caches.\",\"xf-rebuild:xfmg-album-thumbs Rebuilds album thumbnails.\",\"xf-rebuild:xfmg-albums Rebuilds album counters.\",\"xf-rebuild:xfmg-media-items Rebuilds media item counters.\",\"xf-rebuild:xfmg-media-thumbs Rebuilds media item thumbnails.\",\"xf-rebuild:xfmg-user-counts Rebuilds media related user counters.\",\"xf-rebuild:xfrm-icon-optimization Optimizes icons to WebP format.\",\"xf-rebuild:xfrm-resource-items Rebuilds resource item counters.\",\"xf-rebuild:xfrm-user-resource-counts Rebuilds resource related user counters.\"],\"transport_rc\":0}\nSTAGING_REBUILD_HELP={\"command\":null,\"reason\":\"NO_REBUILD_COMMAND_MATCH\"}\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"NEWFI-260907-PORTAL200-IMPORTDISC1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\nNEWFI60_END\n" +} diff --git a/runtime/history/NEWFI-260907-PORTAL200-IMPORTDISC1.txt b/runtime/history/NEWFI-260907-PORTAL200-IMPORTDISC1.txt new file mode 100644 index 00000000..972440de --- /dev/null +++ b/runtime/history/NEWFI-260907-PORTAL200-IMPORTDISC1.txt @@ -0,0 +1,74 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=NEWFI-260907-PORTAL200-IMPORTDISC1 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=newfi-portal200-import-contract-discovery +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=a32cdd68683283d248211bd673871eeea2fb8eadbbac00daff7bac80d89ed667 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGE_DECLARED=false +RESULT_CONTRACT_VALID=true +RESULT_CONTRACT_STATUS=NOT_APPLICABLE +RESULT_CONTRACT_ERROR=NONE +COMMAND_RC=0 +CHANGES_MADE=false +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=NO_MUTATION +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=6eb7a2f80c7e8b4aa907f08655fc0a90a88bd76fdc4cf82f16f7559482a5605f +SANITIZED_OUTPUT_SHA256=6eb7a2f80c7e8b4aa907f08655fc0a90a88bd76fdc4cf82f16f7559482a5605f +OUTPUT_BEGIN +NEWFI60_BEGIN +COMMAND_ID=NEWFI-260907-PORTAL200-IMPORTDISC1 +MUTATION_SCOPE=NONE_READ_ONLY +RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d +RUNNER_SOURCE_LINE_53= status = document.get("status") +RUNNER_SOURCE_LINE_54= if status not in {"OK", "BLOCKED", "FAIL"}: +RUNNER_SOURCE_LINE_55= raise ValueError("invalid status") +RUNNER_SOURCE_LINE_56= changes = document.get("changes_made") +RUNNER_SOURCE_LINE_57= rollback_started = document.get("rollback_started") +RUNNER_SOURCE_LINE_58= rollback_restored = document.get("rollback_restored") +RUNNER_SOURCE_LINE_59= if not isinstance(changes, bool): +RUNNER_SOURCE_LINE_60= raise ValueError("changes_made must be boolean") +RUNNER_SOURCE_LINE_61= if not isinstance(rollback_started, bool): +RUNNER_SOURCE_LINE_62= raise ValueError("rollback_started must be boolean") +RUNNER_SOURCE_LINE_63= if rollback_restored is not None and not isinstance( +RUNNER_SOURCE_LINE_64= rollback_restored, +RUNNER_SOURCE_LINE_65= bool, +RUNNER_SOURCE_LINE_66= ): +RUNNER_SOURCE_LINE_67= raise ValueError( +RUNNER_SOURCE_LINE_68= "rollback_restored must be boolean or null" +RUNNER_SOURCE_LINE_69= ) +RUNNER_SOURCE_LINE_70= if rollback_restored is True and rollback_started is not True: +RUNNER_SOURCE_LINE_71= raise ValueError( +RUNNER_SOURCE_LINE_72= "rollback_restored without rollback_started" +RUNNER_SOURCE_LINE_73= ) +RUNNER_SOURCE_LINE_74= if rollback_started is True and changes is not True: +RUNNER_SOURCE_LINE_75= raise ValueError( +RUNNER_SOURCE_LINE_76= "rollback_started without changes" +RUNNER_SOURCE_LINE_77= ) +RUNNER_SOURCE_LINE_78= if status == "BLOCKED" and ( +RUNNER_SOURCE_LINE_79= changes +RUNNER_SOURCE_LINE_80= or rollback_started +RUNNER_SOURCE_LINE_81= or command_rc != 2 +RUNNER_SOURCE_LINE_82= ): +RUNNER_SOURCE_LINE_83= raise ValueError( +RUNNER_SOURCE_LINE_84= "BLOCKED contract inconsistent with rc/mutation" +RUNNER_SOURCE_LINE_85= ) +STAGING_REFLECTION={"err_data":"","err_truncated":null,"exitcode":0,"exited":1,"out_data":"IMPORT_DISCOVERY_REFLECTION={\"dm_class\":\"XF\\\\AddOn\\\\DataManager\",\"addon_found\":true,\"addon_installed\":true,\"dm_enqueueImportAddOnData\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[{\"name\":\"addOn\",\"optional\":false,\"has_default\":false}],\"declaring\":\"XF\\\\AddOn\\\\DataManager\"},\"dm_getDataTypeClasses\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[],\"declaring\":\"XF\\\\AddOn\\\\DataManager\"},\"dm_getDataTypeHandler\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[{\"name\":\"class\",\"optional\":false,\"has_default\":false}],\"declaring\":\"XF\\\\AddOn\\\\DataManager\"},\"addon_preRebuild\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[],\"declaring\":\"XF\\\\AddOn\\\\AddOn\"},\"addon_postDataImport\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[],\"declaring\":\"XF\\\\AddOn\\\\AddOn\"},\"addon_postRebuild\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[],\"declaring\":\"XF\\\\AddOn\\\\AddOn\"}}\n","out_truncated":0,"transport_rc":0} +STAGING_CLI_COMMANDS={"err_data":"","exitcode":0,"matching_commands":["xf:addon-disable Disables the specified add-on. If no add-on ID is provided, all enabled add-ons will be disabled.","xf:addon-enable Enable the specified add-on. If no add-on ID is provided, all disabled add-ons will be enabled.","xf:addon-install Installs the specified add-on","xf:addon-list Lists installed add-ons","xf:addon-rebuild Rebuilds the specified add-on data.","xf:addon-uninstall Uninstalls the specified add-on","xf:addon-upgrade Upgrades the specified add-on","xf:rebuild-master-data Rebuilds the core XF master data.","xf-addon:build-release Performs an export of the current XML data and saves a ZIP file to _releases","xf-addon:bump-version Bumps the version of the specified add-on","xf-addon:create Creates an XF add-on and writes out the basic addon.json file.","xf-addon:export Exports the XML files for an add-on","xf-addon:install-step Runs a specific step from the specified add-on Setup class.","xf-addon:sync-json Syncs the contents of the add-on JSON file to the database, updating the title, version and JSON hash as necessary","xf-addon:uninstall-step Runs a specific step from the specified add-on Setup class.","xf-addon:upgrade-step Runs a specific step from the specified add-on Setup class.","xf-addon:validate-json Validates the contents of the add-on JSON file to ensure all of the required values exist and are of the correct type.","xf-designer:rebuild-metadata Rebuilds metadata hashes based on file system content","xf-dev:analyze-icons Analyzes icon usage and rebuilds sprites.","xf-dev:file-phraser Analyzes and applies phrase replacements in add-on PHP files","xf-dev:import Imports all data from development files","xf-dev:import-activity-summary-definitions Imports activity summary definitions from development files","xf-dev:import-admin-navigation Imports admin navigation from development files","xf-dev:import-admin-permissions Imports admin permissions from development files","xf-dev:import-advertising-positions Imports advertising positions from development files","xf-dev:import-api-scopes Imports API scopes from development files","xf-dev:import-bb-code-media-sites Imports bb code media sites from development files","xf-dev:import-bb-codes Imports bb codes from development files","xf-dev:import-class-extensions Imports class extensions from development files","xf-dev:import-code-event-listeners Imports code event listeners from development files","xf-dev:import-code-events Imports code events from development files","xf-dev:import-content-types Imports content types from development files","xf-dev:import-cron-entries Imports cron entries from development files","xf-dev:import-help-pages Imports help pages from development files","xf-dev:import-member-stats Imports member stats from development files","xf-dev:import-navigation Imports navigation from development files","xf-dev:import-options Imports options from development files","xf-dev:import-permissions Imports permissions from development files","xf-dev:import-phrases Imports phrases from development files","xf-dev:import-routes Imports routes from development files","xf-dev:import-style-properties Imports style properties from development files","xf-dev:import-template-modifications Imports template modifications from development files","xf-dev:import-templates Imports templates from development files","xf-dev:import-widget-definitions Imports widget definitions from development files","xf-dev:import-widget-positions Imports widget positions from development files","xf-dev:rebuild-caches Rebuilds various caches","xf-dev:rebuild-metadata Rebuilds metadata hashes based on file system content","xf-dev:unused-phrase-finder Finds and optionally deletes unused master phrases for an add-on","xf-embed-metadata:conversation-messages Rebuilds embed metadata for direct message conversations.","xf-embed-metadata:posts Rebuilds embed metadata for posts.","xf-embed-metadata:profile-post-comments Rebuilds embed metadata for profile post comments.","xf-embed-metadata:profile-posts Rebuilds embed metadata for profile posts.","xf-embed-metadata:xfrm-resource-updates Rebuilds embed metadata for resource updates.","xf-make:stub-publish Publish stub templates to an add-on for customization","xf-rebuild:attachment-optimization Optimizes attachments to WebP format.","xf-rebuild:attachment-thumbnails Rebuilds attachment thumbnails","xf-rebuild:avatar-optimization Optimizes avatars to WebP format.","xf-rebuild:forums Rebuilds forum counters.","xf-rebuild:icon-usage Analyzes icon usage and rebuilds sprites.","xf-rebuild:message-counts Rebuilds user message counts.","xf-rebuild:profile-banner-optimization Optimizes profile banners to WebP format.","xf-rebuild:reaction-score Rebuilds user reaction score.","xf-rebuild:search Rebuilds the search index.","xf-rebuild:sitemap Rebuilds XML sitemap.","xf-rebuild:stats Rebuilds daily statistics.","xf-rebuild:threads Rebuilds thread counters.","xf-rebuild:users Rebuilds user counters and caches.","xf-rebuild:xfmg-album-thumbs Rebuilds album thumbnails.","xf-rebuild:xfmg-albums Rebuilds album counters.","xf-rebuild:xfmg-media-items Rebuilds media item counters.","xf-rebuild:xfmg-media-thumbs Rebuilds media item thumbnails.","xf-rebuild:xfmg-user-counts Rebuilds media related user counters.","xf-rebuild:xfrm-icon-optimization Optimizes icons to WebP format.","xf-rebuild:xfrm-resource-items Rebuilds resource item counters.","xf-rebuild:xfrm-user-resource-counts Rebuilds resource related user counters."],"transport_rc":0} +STAGING_REBUILD_HELP={"command":null,"reason":"NO_REBUILD_COMMAND_MATCH"} +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260907-PORTAL200-IMPORTDISC1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} +NEWFI60_END + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 03f6b1c0..91a205e1 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1 +1,38 @@ -{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260907T131701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-09-07T13:17:01Z","finished_at_utc":"2026-09-07T13:17:02Z","reference_register_checked":true,"reference_sha256":"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","error_register_checked":true,"error_register_sha256":"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0","changes_made":false,"sanitized":true,"secrets_included":false,"private_addresses_included":false,"output":"AUTOMATIC_CLUSTER_CONTEXT_REFRESH=OK"} +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "NEWFI-260907-PORTAL200-IMPORTDISC1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "newfi-portal200-import-contract-discovery", + "started_at_utc": "2026-09-07T13:57:45Z", + "finished_at_utc": "2026-09-07T13:57:49Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "a32cdd68683283d248211bd673871eeea2fb8eadbbac00daff7bac80d89ed667", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": false, + "result_contract_valid": true, + "result_contract_status": null, + "result_contract_error": null, + "command_rc": 0, + "changes_made": false, + "rollback_started": false, + "rollback_restored": null, + "mutation_outcome": "NO_MUTATION", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "6eb7a2f80c7e8b4aa907f08655fc0a90a88bd76fdc4cf82f16f7559482a5605f", + "sanitized_output_sha256": "6eb7a2f80c7e8b4aa907f08655fc0a90a88bd76fdc4cf82f16f7559482a5605f", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "NEWFI60_BEGIN\nCOMMAND_ID=NEWFI-260907-PORTAL200-IMPORTDISC1\nMUTATION_SCOPE=NONE_READ_ONLY\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_SOURCE_LINE_53= status = document.get(\"status\")\nRUNNER_SOURCE_LINE_54= if status not in {\"OK\", \"BLOCKED\", \"FAIL\"}:\nRUNNER_SOURCE_LINE_55= raise ValueError(\"invalid status\")\nRUNNER_SOURCE_LINE_56= changes = document.get(\"changes_made\")\nRUNNER_SOURCE_LINE_57= rollback_started = document.get(\"rollback_started\")\nRUNNER_SOURCE_LINE_58= rollback_restored = document.get(\"rollback_restored\")\nRUNNER_SOURCE_LINE_59= if not isinstance(changes, bool):\nRUNNER_SOURCE_LINE_60= raise ValueError(\"changes_made must be boolean\")\nRUNNER_SOURCE_LINE_61= if not isinstance(rollback_started, bool):\nRUNNER_SOURCE_LINE_62= raise ValueError(\"rollback_started must be boolean\")\nRUNNER_SOURCE_LINE_63= if rollback_restored is not None and not isinstance(\nRUNNER_SOURCE_LINE_64= rollback_restored,\nRUNNER_SOURCE_LINE_65= bool,\nRUNNER_SOURCE_LINE_66= ):\nRUNNER_SOURCE_LINE_67= raise ValueError(\nRUNNER_SOURCE_LINE_68= \"rollback_restored must be boolean or null\"\nRUNNER_SOURCE_LINE_69= )\nRUNNER_SOURCE_LINE_70= if rollback_restored is True and rollback_started is not True:\nRUNNER_SOURCE_LINE_71= raise ValueError(\nRUNNER_SOURCE_LINE_72= \"rollback_restored without rollback_started\"\nRUNNER_SOURCE_LINE_73= )\nRUNNER_SOURCE_LINE_74= if rollback_started is True and changes is not True:\nRUNNER_SOURCE_LINE_75= raise ValueError(\nRUNNER_SOURCE_LINE_76= \"rollback_started without changes\"\nRUNNER_SOURCE_LINE_77= )\nRUNNER_SOURCE_LINE_78= if status == \"BLOCKED\" and (\nRUNNER_SOURCE_LINE_79= changes\nRUNNER_SOURCE_LINE_80= or rollback_started\nRUNNER_SOURCE_LINE_81= or command_rc != 2\nRUNNER_SOURCE_LINE_82= ):\nRUNNER_SOURCE_LINE_83= raise ValueError(\nRUNNER_SOURCE_LINE_84= \"BLOCKED contract inconsistent with rc/mutation\"\nRUNNER_SOURCE_LINE_85= )\nSTAGING_REFLECTION={\"err_data\":\"\",\"err_truncated\":null,\"exitcode\":0,\"exited\":1,\"out_data\":\"IMPORT_DISCOVERY_REFLECTION={\\\"dm_class\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\DataManager\\\",\\\"addon_found\\\":true,\\\"addon_installed\\\":true,\\\"dm_enqueueImportAddOnData\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[{\\\"name\\\":\\\"addOn\\\",\\\"optional\\\":false,\\\"has_default\\\":false}],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\DataManager\\\"},\\\"dm_getDataTypeClasses\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\DataManager\\\"},\\\"dm_getDataTypeHandler\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[{\\\"name\\\":\\\"class\\\",\\\"optional\\\":false,\\\"has_default\\\":false}],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\DataManager\\\"},\\\"addon_preRebuild\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\AddOn\\\"},\\\"addon_postDataImport\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\AddOn\\\"},\\\"addon_postRebuild\\\":{\\\"exists\\\":true,\\\"static\\\":false,\\\"public\\\":true,\\\"params\\\":[],\\\"declaring\\\":\\\"XF\\\\\\\\AddOn\\\\\\\\AddOn\\\"}}\\n\",\"out_truncated\":0,\"transport_rc\":0}\nSTAGING_CLI_COMMANDS={\"err_data\":\"\",\"exitcode\":0,\"matching_commands\":[\"xf:addon-disable Disables the specified add-on. If no add-on ID is provided, all enabled add-ons will be disabled.\",\"xf:addon-enable Enable the specified add-on. If no add-on ID is provided, all disabled add-ons will be enabled.\",\"xf:addon-install Installs the specified add-on\",\"xf:addon-list Lists installed add-ons\",\"xf:addon-rebuild Rebuilds the specified add-on data.\",\"xf:addon-uninstall Uninstalls the specified add-on\",\"xf:addon-upgrade Upgrades the specified add-on\",\"xf:rebuild-master-data Rebuilds the core XF master data.\",\"xf-addon:build-release Performs an export of the current XML data and saves a ZIP file to _releases\",\"xf-addon:bump-version Bumps the version of the specified add-on\",\"xf-addon:create Creates an XF add-on and writes out the basic addon.json file.\",\"xf-addon:export Exports the XML files for an add-on\",\"xf-addon:install-step Runs a specific step from the specified add-on Setup class.\",\"xf-addon:sync-json Syncs the contents of the add-on JSON file to the database, updating the title, version and JSON hash as necessary\",\"xf-addon:uninstall-step Runs a specific step from the specified add-on Setup class.\",\"xf-addon:upgrade-step Runs a specific step from the specified add-on Setup class.\",\"xf-addon:validate-json Validates the contents of the add-on JSON file to ensure all of the required values exist and are of the correct type.\",\"xf-designer:rebuild-metadata Rebuilds metadata hashes based on file system content\",\"xf-dev:analyze-icons Analyzes icon usage and rebuilds sprites.\",\"xf-dev:file-phraser Analyzes and applies phrase replacements in add-on PHP files\",\"xf-dev:import Imports all data from development files\",\"xf-dev:import-activity-summary-definitions Imports activity summary definitions from development files\",\"xf-dev:import-admin-navigation Imports admin navigation from development files\",\"xf-dev:import-admin-permissions Imports admin permissions from development files\",\"xf-dev:import-advertising-positions Imports advertising positions from development files\",\"xf-dev:import-api-scopes Imports API scopes from development files\",\"xf-dev:import-bb-code-media-sites Imports bb code media sites from development files\",\"xf-dev:import-bb-codes Imports bb codes from development files\",\"xf-dev:import-class-extensions Imports class extensions from development files\",\"xf-dev:import-code-event-listeners Imports code event listeners from development files\",\"xf-dev:import-code-events Imports code events from development files\",\"xf-dev:import-content-types Imports content types from development files\",\"xf-dev:import-cron-entries Imports cron entries from development files\",\"xf-dev:import-help-pages Imports help pages from development files\",\"xf-dev:import-member-stats Imports member stats from development files\",\"xf-dev:import-navigation Imports navigation from development files\",\"xf-dev:import-options Imports options from development files\",\"xf-dev:import-permissions Imports permissions from development files\",\"xf-dev:import-phrases Imports phrases from development files\",\"xf-dev:import-routes Imports routes from development files\",\"xf-dev:import-style-properties Imports style properties from development files\",\"xf-dev:import-template-modifications Imports template modifications from development files\",\"xf-dev:import-templates Imports templates from development files\",\"xf-dev:import-widget-definitions Imports widget definitions from development files\",\"xf-dev:import-widget-positions Imports widget positions from development files\",\"xf-dev:rebuild-caches Rebuilds various caches\",\"xf-dev:rebuild-metadata Rebuilds metadata hashes based on file system content\",\"xf-dev:unused-phrase-finder Finds and optionally deletes unused master phrases for an add-on\",\"xf-embed-metadata:conversation-messages Rebuilds embed metadata for direct message conversations.\",\"xf-embed-metadata:posts Rebuilds embed metadata for posts.\",\"xf-embed-metadata:profile-post-comments Rebuilds embed metadata for profile post comments.\",\"xf-embed-metadata:profile-posts Rebuilds embed metadata for profile posts.\",\"xf-embed-metadata:xfrm-resource-updates Rebuilds embed metadata for resource updates.\",\"xf-make:stub-publish Publish stub templates to an add-on for customization\",\"xf-rebuild:attachment-optimization Optimizes attachments to WebP format.\",\"xf-rebuild:attachment-thumbnails Rebuilds attachment thumbnails\",\"xf-rebuild:avatar-optimization Optimizes avatars to WebP format.\",\"xf-rebuild:forums Rebuilds forum counters.\",\"xf-rebuild:icon-usage Analyzes icon usage and rebuilds sprites.\",\"xf-rebuild:message-counts Rebuilds user message counts.\",\"xf-rebuild:profile-banner-optimization Optimizes profile banners to WebP format.\",\"xf-rebuild:reaction-score Rebuilds user reaction score.\",\"xf-rebuild:search Rebuilds the search index.\",\"xf-rebuild:sitemap Rebuilds XML sitemap.\",\"xf-rebuild:stats Rebuilds daily statistics.\",\"xf-rebuild:threads Rebuilds thread counters.\",\"xf-rebuild:users Rebuilds user counters and caches.\",\"xf-rebuild:xfmg-album-thumbs Rebuilds album thumbnails.\",\"xf-rebuild:xfmg-albums Rebuilds album counters.\",\"xf-rebuild:xfmg-media-items Rebuilds media item counters.\",\"xf-rebuild:xfmg-media-thumbs Rebuilds media item thumbnails.\",\"xf-rebuild:xfmg-user-counts Rebuilds media related user counters.\",\"xf-rebuild:xfrm-icon-optimization Optimizes icons to WebP format.\",\"xf-rebuild:xfrm-resource-items Rebuilds resource item counters.\",\"xf-rebuild:xfrm-user-resource-counts Rebuilds resource related user counters.\"],\"transport_rc\":0}\nSTAGING_REBUILD_HELP={\"command\":null,\"reason\":\"NO_REBUILD_COMMAND_MATCH\"}\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"NEWFI-260907-PORTAL200-IMPORTDISC1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\nNEWFI60_END\n" +} diff --git a/runtime/latest.txt b/runtime/latest.txt index 53a3dacb..972440de 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,163 +1,74 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z +COMMAND_ID=NEWFI-260907-PORTAL200-IMPORTDISC1 STATUS=OK RC=0 HOST=pve01 -COMPONENT=cluster-context -REFERENCE_SHA[PRIVATE_IP]e5154c41cb[PRIVATE_IP]aca68090be[PRIVATE_IP]bf[PRIVATE_IP]df[PRIVATE_IP] -ERROR_REGISTER_SHA[PRIVATE_IP]ec0f527ed3afeed[PRIVATE_IP]ee[PRIVATE_IP]bbfb[PRIVATE_IP]af4ba7ba0 +MODE=read-only +COMPONENT=newfi-portal200-import-contract-discovery +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=a32cdd68683283d248211bd673871eeea2fb8eadbbac00daff7bac80d89ed667 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGE_DECLARED=false +RESULT_CONTRACT_VALID=true +RESULT_CONTRACT_STATUS=NOT_APPLICABLE +RESULT_CONTRACT_ERROR=NONE +COMMAND_RC=0 +CHANGES_MADE=false +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=NO_MUTATION +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=6eb7a2f80c7e8b4aa907f08655fc0a90a88bd76fdc4cf82f16f7559482a5605f +SANITIZED_OUTPUT_SHA256=6eb7a2f80c7e8b4aa907f08655fc0a90a88bd76fdc4cf82f16f7559482a5605f OUTPUT_BEGIN -GENERATED_AT_UTC=[PRIVATE_IP]T13:17:01Z -Cluster information -------------------- -Name: homelab -Config Version: 3 -Transport: knet -Secure auth: on +NEWFI60_BEGIN +COMMAND_ID=NEWFI-260907-PORTAL200-IMPORTDISC1 +MUTATION_SCOPE=NONE_READ_ONLY +RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d +RUNNER_SOURCE_LINE_53= status = document.get("status") +RUNNER_SOURCE_LINE_54= if status not in {"OK", "BLOCKED", "FAIL"}: +RUNNER_SOURCE_LINE_55= raise ValueError("invalid status") +RUNNER_SOURCE_LINE_56= changes = document.get("changes_made") +RUNNER_SOURCE_LINE_57= rollback_started = document.get("rollback_started") +RUNNER_SOURCE_LINE_58= rollback_restored = document.get("rollback_restored") +RUNNER_SOURCE_LINE_59= if not isinstance(changes, bool): +RUNNER_SOURCE_LINE_60= raise ValueError("changes_made must be boolean") +RUNNER_SOURCE_LINE_61= if not isinstance(rollback_started, bool): +RUNNER_SOURCE_LINE_62= raise ValueError("rollback_started must be boolean") +RUNNER_SOURCE_LINE_63= if rollback_restored is not None and not isinstance( +RUNNER_SOURCE_LINE_64= rollback_restored, +RUNNER_SOURCE_LINE_65= bool, +RUNNER_SOURCE_LINE_66= ): +RUNNER_SOURCE_LINE_67= raise ValueError( +RUNNER_SOURCE_LINE_68= "rollback_restored must be boolean or null" +RUNNER_SOURCE_LINE_69= ) +RUNNER_SOURCE_LINE_70= if rollback_restored is True and rollback_started is not True: +RUNNER_SOURCE_LINE_71= raise ValueError( +RUNNER_SOURCE_LINE_72= "rollback_restored without rollback_started" +RUNNER_SOURCE_LINE_73= ) +RUNNER_SOURCE_LINE_74= if rollback_started is True and changes is not True: +RUNNER_SOURCE_LINE_75= raise ValueError( +RUNNER_SOURCE_LINE_76= "rollback_started without changes" +RUNNER_SOURCE_LINE_77= ) +RUNNER_SOURCE_LINE_78= if status == "BLOCKED" and ( +RUNNER_SOURCE_LINE_79= changes +RUNNER_SOURCE_LINE_80= or rollback_started +RUNNER_SOURCE_LINE_81= or command_rc != 2 +RUNNER_SOURCE_LINE_82= ): +RUNNER_SOURCE_LINE_83= raise ValueError( +RUNNER_SOURCE_LINE_84= "BLOCKED contract inconsistent with rc/mutation" +RUNNER_SOURCE_LINE_85= ) +STAGING_REFLECTION={"err_data":"","err_truncated":null,"exitcode":0,"exited":1,"out_data":"IMPORT_DISCOVERY_REFLECTION={\"dm_class\":\"XF\\\\AddOn\\\\DataManager\",\"addon_found\":true,\"addon_installed\":true,\"dm_enqueueImportAddOnData\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[{\"name\":\"addOn\",\"optional\":false,\"has_default\":false}],\"declaring\":\"XF\\\\AddOn\\\\DataManager\"},\"dm_getDataTypeClasses\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[],\"declaring\":\"XF\\\\AddOn\\\\DataManager\"},\"dm_getDataTypeHandler\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[{\"name\":\"class\",\"optional\":false,\"has_default\":false}],\"declaring\":\"XF\\\\AddOn\\\\DataManager\"},\"addon_preRebuild\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[],\"declaring\":\"XF\\\\AddOn\\\\AddOn\"},\"addon_postDataImport\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[],\"declaring\":\"XF\\\\AddOn\\\\AddOn\"},\"addon_postRebuild\":{\"exists\":true,\"static\":false,\"public\":true,\"params\":[],\"declaring\":\"XF\\\\AddOn\\\\AddOn\"}}\n","out_truncated":0,"transport_rc":0} +STAGING_CLI_COMMANDS={"err_data":"","exitcode":0,"matching_commands":["xf:addon-disable Disables the specified add-on. If no add-on ID is provided, all enabled add-ons will be disabled.","xf:addon-enable Enable the specified add-on. If no add-on ID is provided, all disabled add-ons will be enabled.","xf:addon-install Installs the specified add-on","xf:addon-list Lists installed add-ons","xf:addon-rebuild Rebuilds the specified add-on data.","xf:addon-uninstall Uninstalls the specified add-on","xf:addon-upgrade Upgrades the specified add-on","xf:rebuild-master-data Rebuilds the core XF master data.","xf-addon:build-release Performs an export of the current XML data and saves a ZIP file to _releases","xf-addon:bump-version Bumps the version of the specified add-on","xf-addon:create Creates an XF add-on and writes out the basic addon.json file.","xf-addon:export Exports the XML files for an add-on","xf-addon:install-step Runs a specific step from the specified add-on Setup class.","xf-addon:sync-json Syncs the contents of the add-on JSON file to the database, updating the title, version and JSON hash as necessary","xf-addon:uninstall-step Runs a specific step from the specified add-on Setup class.","xf-addon:upgrade-step Runs a specific step from the specified add-on Setup class.","xf-addon:validate-json Validates the contents of the add-on JSON file to ensure all of the required values exist and are of the correct type.","xf-designer:rebuild-metadata Rebuilds metadata hashes based on file system content","xf-dev:analyze-icons Analyzes icon usage and rebuilds sprites.","xf-dev:file-phraser Analyzes and applies phrase replacements in add-on PHP files","xf-dev:import Imports all data from development files","xf-dev:import-activity-summary-definitions Imports activity summary definitions from development files","xf-dev:import-admin-navigation Imports admin navigation from development files","xf-dev:import-admin-permissions Imports admin permissions from development files","xf-dev:import-advertising-positions Imports advertising positions from development files","xf-dev:import-api-scopes Imports API scopes from development files","xf-dev:import-bb-code-media-sites Imports bb code media sites from development files","xf-dev:import-bb-codes Imports bb codes from development files","xf-dev:import-class-extensions Imports class extensions from development files","xf-dev:import-code-event-listeners Imports code event listeners from development files","xf-dev:import-code-events Imports code events from development files","xf-dev:import-content-types Imports content types from development files","xf-dev:import-cron-entries Imports cron entries from development files","xf-dev:import-help-pages Imports help pages from development files","xf-dev:import-member-stats Imports member stats from development files","xf-dev:import-navigation Imports navigation from development files","xf-dev:import-options Imports options from development files","xf-dev:import-permissions Imports permissions from development files","xf-dev:import-phrases Imports phrases from development files","xf-dev:import-routes Imports routes from development files","xf-dev:import-style-properties Imports style properties from development files","xf-dev:import-template-modifications Imports template modifications from development files","xf-dev:import-templates Imports templates from development files","xf-dev:import-widget-definitions Imports widget definitions from development files","xf-dev:import-widget-positions Imports widget positions from development files","xf-dev:rebuild-caches Rebuilds various caches","xf-dev:rebuild-metadata Rebuilds metadata hashes based on file system content","xf-dev:unused-phrase-finder Finds and optionally deletes unused master phrases for an add-on","xf-embed-metadata:conversation-messages Rebuilds embed metadata for direct message conversations.","xf-embed-metadata:posts Rebuilds embed metadata for posts.","xf-embed-metadata:profile-post-comments Rebuilds embed metadata for profile post comments.","xf-embed-metadata:profile-posts Rebuilds embed metadata for profile posts.","xf-embed-metadata:xfrm-resource-updates Rebuilds embed metadata for resource updates.","xf-make:stub-publish Publish stub templates to an add-on for customization","xf-rebuild:attachment-optimization Optimizes attachments to WebP format.","xf-rebuild:attachment-thumbnails Rebuilds attachment thumbnails","xf-rebuild:avatar-optimization Optimizes avatars to WebP format.","xf-rebuild:forums Rebuilds forum counters.","xf-rebuild:icon-usage Analyzes icon usage and rebuilds sprites.","xf-rebuild:message-counts Rebuilds user message counts.","xf-rebuild:profile-banner-optimization Optimizes profile banners to WebP format.","xf-rebuild:reaction-score Rebuilds user reaction score.","xf-rebuild:search Rebuilds the search index.","xf-rebuild:sitemap Rebuilds XML sitemap.","xf-rebuild:stats Rebuilds daily statistics.","xf-rebuild:threads Rebuilds thread counters.","xf-rebuild:users Rebuilds user counters and caches.","xf-rebuild:xfmg-album-thumbs Rebuilds album thumbnails.","xf-rebuild:xfmg-albums Rebuilds album counters.","xf-rebuild:xfmg-media-items Rebuilds media item counters.","xf-rebuild:xfmg-media-thumbs Rebuilds media item thumbnails.","xf-rebuild:xfmg-user-counts Rebuilds media related user counters.","xf-rebuild:xfrm-icon-optimization Optimizes icons to WebP format.","xf-rebuild:xfrm-resource-items Rebuilds resource item counters.","xf-rebuild:xfrm-user-resource-counts Rebuilds resource related user counters."],"transport_rc":0} +STAGING_REBUILD_HELP={"command":null,"reason":"NO_REBUILD_COMMAND_MATCH"} +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260907-PORTAL200-IMPORTDISC1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} +NEWFI60_END -Quorum information ------------------- -Date: Mon Sep [PRIVATE_IP] 2026 -Quorum provider: corosync_votequorum -Nodes: 3 -Node ID: [PRIVATE_IP] -Ring ID: 1.130 -Quorate: Yes - -Votequorum information ----------------------- -Expected votes: 3 -Highest expected: 3 -Total votes: 3 -Quorum: 2 -Flags: Quorate - -Membership information ----------------------- - Nodeid Votes Name -[PRIVATE_IP] [PRIVATE_IP].11 (local) -[PRIVATE_IP] [PRIVATE_IP].13 -[PRIVATE_IP] [PRIVATE_IP].12 - -Membership information ----------------------- - Nodeid Votes Name - 1 1 pve01 (local) - 2 1 pve03 - 3 1 pve02 -[{"cpu":[PRIVATE_IP]505997,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":863092,"vmid":110},{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/111","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":863096,"vmid":111},{"cpu":0,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/112","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":863095,"vmid":112},{"cpu":[PRIVATE_IP]604e-05,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/113","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":863099,"vmid":113},{"cpu":[PRIVATE_IP]45972,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"edge-vm","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":862967,"vmid":130},{"cpu":[PRIVATE_IP]670829,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/150","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"snikket","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":863083,"vmid":150},{"cpu":[PRIVATE_IP]113937,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/160","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"forum-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"qemu","uptime":863093,"vmid":160},{"cpu":[PRIVATE_IP]18502,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/170","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"core-apps","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":863090,"vmid":170},{"cpu":[PRIVATE_IP]11351,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/171","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"monitoring","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":863087,"vmid":171},{"cpu":[PRIVATE_IP]573422,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/190","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"homelab-ops-worker","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":862963,"vmid":190},{"cpu":[PRIVATE_IP]670829,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/210","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"newfi-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":51556,"vmid":210},{"cpu":[PRIVATE_IP]003489,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/211","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"newfi-staging","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":247491,"vmid":211},{"cpu":0,"disk":0,"diskread":0,"diskwrite":0,"id":"qemu/9130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":0,"memhost":0,"name":"edge-cold-standby","netin":0,"netout":0,"node":"pve02","status":"stopped","template":0,"type":"qemu","uptime":0,"vmid":9130},{"cgroup-mode":2,"cpu":[PRIVATE_IP]6302,"disk":[PRIVATE_IP],"id":"node/pve03","level":"","maxcpu":8,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve03","status":"online","type":"node","uptime":862984},{"cgroup-mode":2,"cpu":[PRIVATE_IP]52269,"disk":[PRIVATE_IP],"id":"node/pve01","level":"","maxcpu":24,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve01","status":"online","type":"node","uptime":863118},{"cgroup-mode":2,"cpu":[PRIVATE_IP]6087,"disk":[PRIVATE_IP],"id":"node/pve02","level":"","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve02","status":"online","type":"node","uptime":863123},{"content":"backup,vztmpl,iso,import","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"backup,vztmpl,iso,import","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"backup,vztmpl,iso,import","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve03/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve01/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"},{"id":"network/pve01/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve01","status":"ok","type":"network"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"}] -Name Type Status Total (KiB) Used (KiB) Available (KiB) % -local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 20.40% -local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 8.39% - UNIT LOAD ACTIVE SUB DESCRIPTION -● homelab-backup-retention-gc.service loaded failed failed Homelab owner-aware cloud retention GC -● homelab-mailru-trash-gc.service loaded failed failed Homelab Mail.ru physical Trash GC - -Legend: LOAD → Reflects whether the unit definition was properly loaded. - ACTIVE → The high-level unit activation state, i.e. generalization of SUB. - SUB → The low-level unit activation state, values depend on unit type. - -2 loaded units listed. -NEXT LEFT LAST PASSED UNIT ACTIVATES -Mon [PRIVATE_IP] 16:17:16 MSK 13s Mon [PRIVATE_IP] 16:16:16 MSK 46s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service -Mon [PRIVATE_IP] 16:17:51 MSK 48s Mon [PRIVATE_IP] 16:16:50 MSK 11s ago homelab-router-watchdog.timer homelab-router-watchdog.service -Mon [PRIVATE_IP] 16:19:16 MSK 2min 13s Mon [PRIVATE_IP] 16:04:16 MSK 12min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service -Mon [PRIVATE_IP] 16:19:16 MSK 2min 13s Mon [PRIVATE_IP] 16:14:16 MSK 2min 46s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service -Mon [PRIVATE_IP] 16:19:16 MSK 2min 13s Mon [PRIVATE_IP] 16:14:16 MSK 2min 46s ago netbird-peers-health.timer netbird-peers-health.service -Mon [PRIVATE_IP] 16:20:36 MSK 3min 33s Mon [PRIVATE_IP] 16:15:16 MSK 1min 46s ago homelab-health-metrics.timer homelab-health-metrics.service -Mon [PRIVATE_IP] 16:21:53 MSK 4min 51s Mon [PRIVATE_IP] 16:06:53 MSK 10min ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service -Mon [PRIVATE_IP] 16:22:54 MSK 5min Mon [PRIVATE_IP] 16:12:54 MSK 4min 8s ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service -Mon [PRIVATE_IP] 16:25:54 MSK 8min Mon [PRIVATE_IP] 10:18:53 MSK 5h 58min ago homelab-evidence-root.timer homelab-evidence-root.service -Mon [PRIVATE_IP] 16:26:53 MSK 9min Mon [PRIVATE_IP] 16:11:53 MSK 5min ago homelab-disk-space-health.timer homelab-disk-space-health.service -Mon [PRIVATE_IP] 16:28:57 MSK 11min Mon [PRIVATE_IP] 15:57:42 MSK 19min ago homelab-reference-refresh.timer homelab-reference-refresh.service -Mon [PRIVATE_IP] 16:29:53 MSK 12min Mon [PRIVATE_IP] 16:14:53 MSK 2min 8s ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service -Mon [PRIVATE_IP] 16:30:00 MSK 12min Mon [PRIVATE_IP] 16:15:12 MSK 1min 49s ago homelab-incident-journal.timer homelab-incident-journal.service -Mon [PRIVATE_IP] 16:30:13 MSK 13min Mon [PRIVATE_IP] 16:15:42 MSK 1min 20s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service -Mon [PRIVATE_IP] 16:30:45 MSK 13min Mon [PRIVATE_IP] 16:16:16 MSK 46s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service -Mon [PRIVATE_IP] 16:31:04 MSK 14min Mon [PRIVATE_IP] 16:16:16 MSK 46s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service -Mon [PRIVATE_IP] 16:32:11 MSK 15min Mon [PRIVATE_IP] 12:32:58 MSK 3h 44min ago homelab-vm-cloud-quorum-queue.timer homelab-vm-cloud-quorum-queue.service -Mon [PRIVATE_IP] 16:33:01 MSK 15min Mon [PRIVATE_IP] 16:04:58 MSK 12min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service -Mon [PRIVATE_IP] 16:35:26 MSK 18min Mon [PRIVATE_IP] 16:06:42 MSK 10min ago homelab-backup-audit.timer homelab-backup-audit.service -Mon [PRIVATE_IP] 16:35:53 MSK 18min Mon [PRIVATE_IP] 10:35:53 MSK 5h 41min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service -Mon [PRIVATE_IP] 16:47:16 MSK 30min Sun [PRIVATE_IP] 16:47:16 MSK 23h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service -Mon [PRIVATE_IP] 17:04:28 MSK 47min Mon [PRIVATE_IP] 16:00:42 MSK 16min ago homelab-control-backup.timer homelab-control-backup.service -Mon [PRIVATE_IP] 17:30:00 MSK 1h 12min Mon [PRIVATE_IP] 15:30:12 MSK 46min ago homelab-app-cloud-quorum-queue.timer homelab-app-cloud-quorum-queue.service -Mon [PRIVATE_IP] 17:53:36 MSK 1h 36min Mon [PRIVATE_IP] 11:46:32 MSK 4h 30min ago homelab-mailru-trash-gc.timer homelab-mailru-trash-gc.service -Mon [PRIVATE_IP] 22:53:29 MSK 6h Mon [PRIVATE_IP] 08:14:24 MSK 8h ago apt-daily.timer apt-daily.service -Tue [PRIVATE_IP] 00:00:00 MSK 7h Mon [PRIVATE_IP] 00:00:02 MSK 16h ago dpkg-db-backup.timer dpkg-db-backup.service -Tue [PRIVATE_IP] 00:02:07 MSK 7h Mon [PRIVATE_IP] 00:12:32 MSK 16h ago homelab-docker-health.timer homelab-docker-health.service -Tue [PRIVATE_IP] 00:05:13 MSK 7h Mon [PRIVATE_IP] 00:04:16 MSK 16h ago homelab-quality-gate.timer homelab-quality-gate.service -Tue [PRIVATE_IP] 00:09:00 MSK 7h Mon [PRIVATE_IP] 00:11:53 MSK 16h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service -Tue [PRIVATE_IP] 00:18:03 MSK 8h Mon [PRIVATE_IP] 00:03:53 MSK 16h ago homelab-storage-capacity.timer homelab-storage-capacity.service -Tue [PRIVATE_IP] 00:58:58 MSK 8h Mon [PRIVATE_IP] 00:09:53 MSK 16h ago logrotate.timer logrotate.service -Tue [PRIVATE_IP] 01:45:26 MSK 9h Mon [PRIVATE_IP] 00:25:16 MSK 15h ago man-db.timer man-db.service -Tue [PRIVATE_IP] 03:20:32 MSK 11h Mon [PRIVATE_IP] 03:24:53 MSK 12h ago homelab-backup-retention-gc.timer homelab-backup-retention-gc.service -Tue [PRIVATE_IP] 04:54:58 MSK 12h Mon [PRIVATE_IP] 04:38:42 MSK 11h ago pve-daily-update.timer pve-daily-update.service -Tue [PRIVATE_IP] 06:12:28 MSK 13h Mon [PRIVATE_IP] 06:19:50 MSK 9h ago apt-daily-upgrade.timer apt-daily-upgrade.service -Tue [PRIVATE_IP] 07:07:23 MSK 14h Mon [PRIVATE_IP] 07:07:53 MSK 9h ago homelab-drift-check.timer homelab-drift-check.service -Tue [PRIVATE_IP] 07:37:02 MSK 15h Mon [PRIVATE_IP] 07:38:52 MSK 8h ago homelab-service-registry-check.timer homelab-service-registry-check.service -Tue [PRIVATE_IP] 07:48:47 MSK 15h Mon [PRIVATE_IP] 07:59:58 MSK 8h ago homelab-runbook-generate.timer homelab-runbook-generate.service -Tue [PRIVATE_IP] 07:52:04 MSK 15h Mon [PRIVATE_IP] 07:50:22 MSK 8h ago homelab-alerting-health.timer homelab-alerting-health.service -Tue [PRIVATE_IP] 07:56:21 MSK 15h Mon [PRIVATE_IP] 07:56:16 MSK 8h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service -Tue [PRIVATE_IP] 08:04:06 MSK 15h Mon [PRIVATE_IP] 07:54:22 MSK 8h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service -Tue [PRIVATE_IP] 08:04:22 MSK 15h Mon [PRIVATE_IP] 07:57:52 MSK 8h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service -Tue [PRIVATE_IP] 08:10:52 MSK 15h Mon [PRIVATE_IP] 08:01:32 MSK 8h ago homelab-overall-health.timer homelab-overall-health.service -Tue [PRIVATE_IP] 08:21:03 MSK 16h Mon [PRIVATE_IP] 08:13:50 MSK 8h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service -Tue [PRIVATE_IP] 08:21:06 MSK 16h Mon [PRIVATE_IP] 08:19:16 MSK 7h ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service -Tue [PRIVATE_IP] 08:34:29 MSK 16h Mon [PRIVATE_IP] 08:38:53 MSK 7h ago homelab-capacity-risk.timer homelab-capacity-risk.service -Tue [PRIVATE_IP] 08:46:35 MSK 16h Mon [PRIVATE_IP] 09:00:19 MSK 7h ago homelab-golden-state-index.timer homelab-golden-state-index.service -Tue [PRIVATE_IP] 08:46:44 MSK 16h Mon [PRIVATE_IP] 08:41:53 MSK 7h ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service -Tue [PRIVATE_IP] 08:47:46 MSK 16h Mon [PRIVATE_IP] 08:53:04 MSK 7h ago homelab-cluster-passport.timer homelab-cluster-passport.service -Tue [PRIVATE_IP] 10:15:00 MSK 17h Mon [PRIVATE_IP] 10:15:12 MSK 6h ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service -Sun [PRIVATE_IP] 03:10:21 MSK 5 days Sun [PRIVATE_IP] 03:11:16 MSK 1 day 13h ago e2scrub_all.timer e2scrub_all.service -Sun [PRIVATE_IP] 03:10:35 MSK 5 days Sun [PRIVATE_IP] 03:10:50 MSK 1 day 13h ago xfs_scrub_all.timer xfs_scrub_all.service -Sun [PRIVATE_IP] 07:35:54 MSK 5 days Sun [PRIVATE_IP] 07:57:53 MSK 1 day 8h ago homelab-rotating-boot-drill.timer homelab-rotating-boot-drill.service -Mon [PRIVATE_IP] 00:10:37 MSK 6 days Mon [PRIVATE_IP] 00:08:52 MSK 16h ago homelab-secret-sanity.timer homelab-secret-sanity.service -Mon [PRIVATE_IP] 00:30:41 MSK 6 days Mon [PRIVATE_IP] 00:39:53 MSK 15h ago fstrim.timer fstrim.service -- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service -- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service -- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service - -58 timers listed. -RUNTIME_MANIFEST_ID=df[PRIVATE_IP]ac9b5abd[PRIVATE_IP]b[PRIVATE_IP]d89496fb2bde[PRIVATE_IP] -EXPERIMENT_ID=5462ee[PRIVATE_IP]ebe[PRIVATE_IP]feb2ad[PRIVATE_IP]1ad87bbac0b8108 -COLLECTION_START_AT=[PRIVATE_IP]T[PRIVATE_IP]:00 -FIRST_COMPLETE_D1_CLOSE=[PRIVATE_IP]T[PRIVATE_IP]:00 -PRODUCTION_LAUNCH_ALLOWED=False -EXECUTION_AUTHORITY=False -RISK_AUTHORITY=False -STAGE_A_HEALTH=AWAITING_PRIMARY_FINALITY -FORENSIC_PREVIOUS_EPOCH_PRESERVED=YES - -## NEWFI_TASK6_AUTH_CHECKPOINT_V[PRIVATE_IP] -- Scope: historical accepted AUTH test, not a current SMTP connection test. -- Newfi approved SMTP account/sender: aleisaev@yandex.ru. -- Endpoint used by accepted test: smtp.yandex.ru:465 with certificate verification; single PLAIN initial response accepted with code 235. -- Evidence: incident ledger ### NEWFI_TASK6_YANDEX_AUTH_V2_OBSERVATION and ### NEWFI_TASK6_AUTH_PROOF_CLOSE_V1. -- No password file written, no application configuration changed, no mail sent by the accepted AUTH test. -- Persistent transport installation and application delivery are not proven by this checkpoint. Task6 is not complete. -- AUTH challenge and missing-file incidents closed; launch/session incident remains OPEN with original cause unproven. -- This update does not change VM211, VM160, routing, board state or Git. -- Other incidents and infrastructure health were not assessed. - - -## NEWFI_PRIVATE_STRUCTURE92_WRONG_MARKER_SCOPE_[PRIVATE_IP] CLOSURE -- Status: CLOSED -- RCA: NEWFI92 inspected the pve01 NEWFI90 attempt marker, which had not been finalized because the outer shell exited immediately after the guest returned RC3 following its successful rollback. The guest marker contained the true final rollback state. -- Correction: NEWFI93 required both the guest FINISHED/ROLLED_BACK record and a fresh exact demo-state readback before reconciling the outer NEWFI90 marker. NEWFI92 itself never reserved an attempt or mutated state. - - -## NEWFI_PRIVATE_NEWFI95_NESTED_TRIPLE_QUOTE_PARSE_[PRIVATE_IP] -- Status: OPEN -- Command: NEWFI95 -- Symptom: after the content-structure precheck passed, the pve03 Python wrapper failed to parse at the PHP line beginning with $root. No Portal discovery or application mutation was reached. -- RCA: an outer raw triple-single-quoted guest Python payload contained an inner raw triple-single-quoted PHP payload. The inner delimiter terminated the outer Python string, causing PHP source to be parsed as Python. -- Safety: NEWFI95 was read-only, created no attempt marker, and did not reach the intended nested guest execution. Do not replay NEWFI95. - - -## NEWFI_PRIVATE_NEWFI95_NESTED_TRIPLE_QUOTE_PARSE_[PRIVATE_IP] CLOSURE -- Status: CLOSED -- RCA: an inner triple-single-quoted PHP literal terminated the outer triple-single-quoted Python guest payload in NEWFI95. The wrapper therefore failed parsing before the intended Portal discovery executed. -- Correction: NEWFI96 removed the nested Python payload layer entirely and passed one Python program directly to VM211 through qm guest exec stdin. The read-only Portal contract completed with QGA exit 0 and the implementation worktree remained unchanged. OUTPUT_END CHAT_OUTPUT_END