diff --git a/runtime/history/ERRORS-INDEX-002.json b/runtime/history/ERRORS-INDEX-002.json new file mode 100644 index 0000000..d1fda14 --- /dev/null +++ b/runtime/history/ERRORS-INDEX-002.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "ERRORS-INDEX-002", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "error-ledger", + "started_at_utc": "2026-07-21T07:13:12Z", + "finished_at_utc": "2026-07-21T07:13:12Z", + "reference_register_checked": true, + "reference_sha256": "f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2", + "error_register_checked": true, + "error_register_sha256": "ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc", + "command_sha256": "320d2e834c18cb3ecee1ad270cb372132a31f2c87781f769e32d2b277ac192d0", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "changes_made": false, + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "db3e029f3d7e9a846cd057979abf1d4a8e25d939d7a11c50a3c5f385608f1516", + "sanitized_output_sha256": "60cdef1a88d83032c74570ef700037f2b97060d0ae8e16d80e4f1474a12cc3e5", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "{\n \"schema_version\": 1,\n \"status\": \"READY\",\n \"generated_at_utc\": \"2026-07-21T07:13:12.781160Z\",\n \"source_sha256\": \"ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc\",\n \"source_lines\": 934,\n \"entry_count\": 150,\n \"rule_count\": 10,\n \"duplicate_ids\": [],\n \"entries\": [\n {\n \"id\": \"ERR-N-1\",\n \"kind\": \"numbered\",\n \"source_line\": 6,\n \"title\": \"Повторно дал слишком большой интерактивный paste в shell.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-2\",\n \"kind\": \"numbered\",\n \"source_line\": 7,\n \"title\": \"Повторно использовал here-doc/Markdown/backticks там, где нужен короткий безопасный файл или отдельный скрипт.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-3\",\n \"kind\": \"numbered\",\n \"source_line\": 8,\n \"title\": \"Дал генератор справочника прямо в терминал вместо безопасного маленького шага.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-4\",\n \"kind\": \"numbered\",\n \"source_line\": 9,\n \"title\": \"Нарушил своё же правило: не давать длинные вложенные команды с кавычками.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-11\",\n \"kind\": \"numbered\",\n \"source_line\": 35,\n \"title\": \"Ошибка: считать offhost OK после failed rsync.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-12\",\n \"kind\": \"numbered\",\n \"source_line\": 40,\n \"title\": \"Ошибка: широкий secret-поиск по /opt/stacks дал шум.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-13\",\n \"kind\": \"numbered\",\n \"source_line\": 45,\n \"title\": \"Ошибка: SQL с одинарными кавычками внутри одинарной SSH-команды ломается.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-14\",\n \"kind\": \"numbered\",\n \"source_line\": 50,\n \"title\": \"Ошибка: путать контекст входа и узел выполнения.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-15\",\n \"kind\": \"numbered\",\n \"source_line\": 57,\n \"title\": \"Ошибка: повторно нарушено правило №13 после его добавления.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-16\",\n \"kind\": \"numbered\",\n \"source_line\": 63,\n \"title\": \"Основополагающее правило: перед каждой командой ассистент обязан явно написать: Сверка с файлом ошибок: CHECK пройден.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-19\",\n \"kind\": \"numbered\",\n \"source_line\": 68,\n \"title\": \"Уточнение формата: не писать отдельную строку сверки перед каждой командой в пакете.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-20\",\n \"kind\": \"numbered\",\n \"source_line\": 73,\n \"title\": \"Ошибка: широкий XenForo SMTP-поиск по src дал шум исходников.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-21\",\n \"kind\": \"numbered\",\n \"source_line\": 77,\n \"title\": \"Ошибка: nested PHP php -r дал Parse error на forum-prod.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-22\",\n \"kind\": \"numbered\",\n \"source_line\": 82,\n \"title\": \"Ошибка: самодельный base64 PHP для SMTP auth сломан.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-23\",\n \"kind\": \"numbered\",\n \"source_line\": 87,\n \"title\": \"Ошибка: MariaDB не поддержала cast('true' as json) в JSON_SET.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-24\",\n \"kind\": \"numbered\",\n \"source_line\": 92,\n \"title\": \"Ошибка: exit 1 в interactive-check закрыл SSH-сессию.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-25\",\n \"kind\": \"numbered\",\n \"source_line\": 97,\n \"title\": \"Ошибка анализа: не надо слепо включать smtpSsl=true при smtpPort=587.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-26\",\n \"kind\": \"numbered\",\n \"source_line\": 102,\n \"title\": \"Ошибка: openssl -crlf вместе с ручным CRLF ломает SMTP AUTH checker.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-27\",\n \"kind\": \"numbered\",\n \"source_line\": 108,\n \"title\": \"Ошибка: Python heredoc внутри ssh сломал not_ok диагностику.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-28\",\n \"kind\": \"numbered\",\n \"source_line\": 112,\n \"title\": \"Ошибка: docker compose ls --format json | wc -l дал ложный COMPOSE_PROJECT_COUNT=1.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-29\",\n \"kind\": \"numbered\",\n \"source_line\": 116,\n \"title\": \"Ошибка: monitoring compact status искал неверные имена health-файлов.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-30\",\n \"kind\": \"numbered\",\n \"source_line\": 121,\n \"title\": \"Ошибка/инцидент: Prometheus API HTTP_CODE=000 после monitoring reference.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-31\",\n \"kind\": \"numbered\",\n \"source_line\": 125,\n \"title\": \"Строгое правило: перед каждой командой сверяться с файлом ошибок и справочником.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-32\",\n \"kind\": \"numbered\",\n \"source_line\": 130,\n \"title\": \"Ошибка: 153_PROMETHEUS_TARGETS_SETTLED_PROOF содержит SyntaxError из-за вложенного Python внутри SSH.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-34\",\n \"kind\": \"numbered\",\n \"source_line\": 135,\n \"title\": \"Ошибка операционного ввода: полный терминальный лог MobaXterm попал в shell.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-33\",\n \"kind\": \"numbered\",\n \"source_line\": 140,\n \"title\": \"Security finding: root authorized_keys на PVE-нодах имел права 777.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-35\",\n \"kind\": \"numbered\",\n \"source_line\": 144,\n \"title\": \"Ошибка проверки: 160_PVE_ROOT_AUTHORIZED_KEYS_PERMISSIONS_FIXED не доказал исправление прав.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-36\",\n \"kind\": \"numbered\",\n \"source_line\": 149,\n \"title\": \"Quality check: Storage block needs integrity and pve03 capacity coverage review.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-37\",\n \"kind\": \"numbered\",\n \"source_line\": 154,\n \"title\": \"Coverage gap: pve03_staging missing from disk-space health coverage.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-38\",\n \"kind\": \"numbered\",\n \"source_line\": 158,\n \"title\": \"Quality check: Service Dependency Map block needs integrity review.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-39\",\n \"kind\": \"numbered\",\n \"source_line\": 162,\n \"title\": \"Ошибка проверки: post deep audit BAD_MARKER scan caught prose false positive.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-40\",\n \"kind\": \"numbered\",\n \"source_line\": 166,\n \"title\": \"Ошибка/вывод: VM150 Mail cloud single-file upload failed with 413.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-41\",\n \"kind\": \"numbered\",\n \"source_line\": 170,\n \"title\": \"Ошибка: post-backup-pass-slo-reconciliation checked pve01 router health on edge-vm.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L5\",\n \"kind\": \"heading\",\n \"source_line\": 5,\n \"title\": \"Критические ошибки ассистента\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L11\",\n \"kind\": \"heading\",\n \"source_line\": 11,\n \"title\": \"Жёсткие правила перед каждой командой\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L23\",\n \"kind\": \"heading\",\n \"source_line\": 23,\n \"title\": \"Текущие важные факты\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L31\",\n \"kind\": \"heading\",\n \"source_line\": 31,\n \"title\": \"Правило для справочника\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L174\",\n \"kind\": \"heading\",\n \"source_line\": 174,\n \"title\": \"ASSISTANT_COMMAND_BATCHING_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L180\",\n \"kind\": \"heading\",\n \"source_line\": 180,\n \"title\": \"HOME_PORTAL_BASE64_APPLY_FAILURE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L184\",\n \"kind\": \"heading\",\n \"source_line\": 184,\n \"title\": \"HOMELAB_COMMAND_SAFETY_HARDENING_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L193\",\n \"kind\": \"heading\",\n \"source_line\": 193,\n \"title\": \"HOME_PORTAL_API_ERROR_CLOSURE_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L198\",\n \"kind\": \"heading\",\n \"source_line\": 198,\n \"title\": \"HOME_PORTAL_COMPLEX_QUOTING_FAILURE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L203\",\n \"kind\": \"heading\",\n \"source_line\": 203,\n \"title\": \"HOME_PORTAL_ACTIVE_CONFIG_SCOPE_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L208\",\n \"kind\": \"heading\",\n \"source_line\": 208,\n \"title\": \"HOME_PORTAL_LINK_VALIDATION_NPMPLUS_DEFAULT_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L213\",\n \"kind\": \"heading\",\n \"source_line\": 213,\n \"title\": \"ROUTER_CLI_STDIN_APPLY_FAILURE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L219\",\n \"kind\": \"heading\",\n \"source_line\": 219,\n \"title\": \"ROUTER_CLI_PROBE_STDIN_CONSUMPTION_ERROR_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L224\",\n \"kind\": \"heading\",\n \"source_line\": 224,\n \"title\": \"ROUTERBACKUP_READONLY_CLI_PERMISSION_LIMIT_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L230\",\n \"kind\": \"heading\",\n \"source_line\": 230,\n \"title\": \"PROOF_SUMMARY_EXTRACTION_BLANK_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L235\",\n \"kind\": \"heading\",\n \"source_line\": 235,\n \"title\": \"ROUTER_ACL_UI_RULE_DELETE_AND_RESTORE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L241\",\n \"kind\": \"heading\",\n \"source_line\": 241,\n \"title\": \"ROUTER_MONITOR_NODE_LOOKUP_PROBE_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L247\",\n \"kind\": \"heading\",\n \"source_line\": 247,\n \"title\": \"ROUTER_HTTP_SERVICE_FORBIDDEN_FROM_EDGE_VM_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L254\",\n \"kind\": \"heading\",\n \"source_line\": 254,\n \"title\": \"PY_COMPILE_PYC_PERMISSION_ERROR_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L261\",\n \"kind\": \"heading\",\n \"source_line\": 261,\n \"title\": \"ROUTER_HOME_IP_DOCKER_ROUTE_CONFLICT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L267\",\n \"kind\": \"heading\",\n \"source_line\": 267,\n \"title\": \"HOMEPAGE_ROUTER_MOSCOW_YAML_TITLE_SHAPE_MISMATCH_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L273\",\n \"kind\": \"heading\",\n \"source_line\": 273,\n \"title\": \"HOMEPAGE_ROUTER_MOSCOW_APPLY_SCRIPT_SYNTAX_ERROR_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L281\",\n \"kind\": \"heading\",\n \"source_line\": 281,\n \"title\": \"FORUM_PROD_VM160_FIRST_BOOT_SSH255_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L286\",\n \"kind\": \"heading\",\n \"source_line\": 286,\n \"title\": \"FORUM_PROD_VM160_NESTED_HOSTNAME_PROOF_QUOTING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L292\",\n \"kind\": \"heading\",\n \"source_line\": 292,\n \"title\": \"FORUM_PROD_VM160_SWAP_PROOF_QUOTING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L298\",\n \"kind\": \"heading\",\n \"source_line\": 298,\n \"title\": \"FORUM_UPLOAD_ARCHIVES_VM_VERIFY_QUOTING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L304\",\n \"kind\": \"heading\",\n \"source_line\": 304,\n \"title\": \"FORUM_PROD_BULK_IMPORT_PHP85_EMPTY_FRONTEND_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L311\",\n \"kind\": \"heading\",\n \"source_line\": 311,\n \"title\": \"XENFORO_REQUIREMENTS_DIRECT_DOWNLOAD_403_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L318\",\n \"kind\": \"heading\",\n \"source_line\": 318,\n \"title\": \"PVE01_UNZIP_MISSING_FOR_XF_REQUIREMENTS_VERIFY_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L324\",\n \"kind\": \"heading\",\n \"source_line\": 324,\n \"title\": \"FRESH5_DEPLOY_SUCCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L330\",\n \"kind\": \"heading\",\n \"source_line\": 330,\n \"title\": \"NPMPLUS_SQLITE_PASTE_FAILURE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L336\",\n \"kind\": \"heading\",\n \"source_line\": 336,\n \"title\": \"NPMPLUS_PUBLISH_SCRIPT_WRONG_ENV_SOURCE_525_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L342\",\n \"kind\": \"heading\",\n \"source_line\": 342,\n \"title\": \"NPMPLUS_API_LOGIN_MISSED_HTTPS81_AND_JSON_ESCAPE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L348\",\n \"kind\": \"heading\",\n \"source_line\": 348,\n \"title\": \"NPMPLUS_API_AUTH_UNAVAILABLE_MANUAL_ROUTES_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L354\",\n \"kind\": \"heading\",\n \"source_line\": 354,\n \"title\": \"EDGE_CERTBOT_TOKEN_FILE_PERMISSION_535_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L360\",\n \"kind\": \"heading\",\n \"source_line\": 360,\n \"title\": \"EDGE_CERTBOT_FAILED_DNS_CUTOVER_ABORTED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L366\",\n \"kind\": \"heading\",\n \"source_line\": 366,\n \"title\": \"CLOUDFLARE_TOKEN_NO_ZONE_ACCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L372\",\n \"kind\": \"heading\",\n \"source_line\": 372,\n \"title\": \"FORUM_PUBLICATION_FINAL_SUCCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L377\",\n \"kind\": \"heading\",\n \"source_line\": 377,\n \"title\": \"FINAL_SNAPSHOT_NAME_TOO_LONG_556_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L384\",\n \"kind\": \"heading\",\n \"source_line\": 384,\n \"title\": \"CLOUDFLARE_DNS_AUDIT_TXT_SUBSTRING_GAP_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L391\",\n \"kind\": \"heading\",\n \"source_line\": 391,\n \"title\": \"CLOUDFLARE_DNS_CLEANUP_DRYRUN_QUOTE_563_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L396\",\n \"kind\": \"heading\",\n \"source_line\": 396,\n \"title\": \"SPF_DUPLICATE_AFTER_565_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L402\",\n \"kind\": \"heading\",\n \"source_line\": 402,\n \"title\": \"MSMTP_SECRET_SOURCE_PARSE_ERROR_576_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L408\",\n \"kind\": \"heading\",\n \"source_line\": 408,\n \"title\": \"FORUM_MSMTP_MAIL_TRANSPORT_STILL_FAILING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L414\",\n \"kind\": \"heading\",\n \"source_line\": 414,\n \"title\": \"SMTP_PASSWORD_EXPOSED_ROTATE_REQUIRED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L421\",\n \"kind\": \"heading\",\n \"source_line\": 421,\n \"title\": \"NETBIRD_MAILCOW_REPORTED_DOWN_AFTER_SMTP_INCIDENT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L426\",\n \"kind\": \"heading\",\n \"source_line\": 426,\n \"title\": \"FORUM_SMTP_FAILED_CONFIG_DISABLED_AFTER_MAILCOW_BAN_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L432\",\n \"kind\": \"heading\",\n \"source_line\": 432,\n \"title\": \"FORUM_OLD_CODEVIPE_CLOUD_BACKUP_STALE_AFTER_FRESH5_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L439\",\n \"kind\": \"heading\",\n \"source_line\": 439,\n \"title\": \"FORUM_RESTORE_DRILL_610_STATUS_FLAG_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L445\",\n \"kind\": \"heading\",\n \"source_line\": 445,\n \"title\": \"FORUM_XENFORO_MAIL_SMOKE_TEST_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L449\",\n \"kind\": \"heading\",\n \"source_line\": 449,\n \"title\": \"XENFORO_MAIL_SMOKE_623_INVALID_ROOT_PATH_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L456\",\n \"kind\": \"heading\",\n \"source_line\": 456,\n \"title\": \"FORUM_NEXT_CHAT_KNOWN_ERRORS_AND_CLOSED_INCIDENTS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L509\",\n \"kind\": \"heading\",\n \"source_line\": 509,\n \"title\": \"PARKED_DOMAINS_STAGE4_DNS01_PREFLIGHT_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L516\",\n \"kind\": \"heading\",\n \"source_line\": 516,\n \"title\": \"PARKED_DOMAINS_STAGE5_BASH_LOCAL_SETU_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L523\",\n \"kind\": \"heading\",\n \"source_line\": 523,\n \"title\": \"PARKED_DOMAINS_STAGE6_TEMP_HTTP_ROOT_VALIDATION_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L530\",\n \"kind\": \"heading\",\n \"source_line\": 530,\n \"title\": \"PARKED_DOMAINS_STAGE7_NEWFI_ROOT_ACME_REDIRECT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L535\",\n \"kind\": \"heading\",\n \"source_line\": 535,\n \"title\": \"PARKED_DOMAINS_STAGE8_DEFAULT_HTTP_TO_HTTPS_REDIRECT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L541\",\n \"kind\": \"heading\",\n \"source_line\": 541,\n \"title\": \"PARKED_DOMAINS_STAGE9_NEWFI_EXACT_PROBE_NEEDED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L547\",\n \"kind\": \"heading\",\n \"source_line\": 547,\n \"title\": \"PARKED_DOMAINS_STAGE10_EXACT_NEWFI_PROBE_OK_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L553\",\n \"kind\": \"heading\",\n \"source_line\": 553,\n \"title\": \"PARKED_DOMAINS_STAGE11_LOW_ID_EXACT_ROUTE_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L560\",\n \"kind\": \"heading\",\n \"source_line\": 560,\n \"title\": \"PARKED_DOMAINS_SWITCH_TO_DNS01_AFTER_HTTP01_FAILURES_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L566\",\n \"kind\": \"heading\",\n \"source_line\": 566,\n \"title\": \"PARKED_DOMAINS_STAGE15_FALSE_LOCAL_VALIDATE_ROLLBACK_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L571\",\n \"kind\": \"heading\",\n \"source_line\": 571,\n \"title\": \"DOMAIN_ACTIONS_STAGE18_PLACEHOLDER_AND_RENEWAL_PROOF_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L575\",\n \"kind\": \"heading\",\n \"source_line\": 575,\n \"title\": \"GRAM1_ROOT_WWW_PLACEHOLDER_CLOSE_STAGE19_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L581\",\n \"kind\": \"heading\",\n \"source_line\": 581,\n \"title\": \"PVEPRO_EDGE_LANDING_STAGE21_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L587\",\n \"kind\": \"heading\",\n \"source_line\": 587,\n \"title\": \"PVEPRO_STAGE21_LANDING_SERVICE_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L592\",\n \"kind\": \"heading\",\n \"source_line\": 592,\n \"title\": \"PVEPRO_STAGE22_VALIDATION_AND_COPY_GUARD_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L597\",\n \"kind\": \"heading\",\n \"source_line\": 597,\n \"title\": \"TAFTAUTO_CERT_AUTORENEW_BLOCKED_NO_PRIVATE_ACCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L603\",\n \"kind\": \"heading\",\n \"source_line\": 603,\n \"title\": \"TAFTAUTO_CERT_AUTORENEW_BLOCKED_NO_PRIVATE_ACCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L609\",\n \"kind\": \"heading\",\n \"source_line\": 609,\n \"title\": \"TAFTAUTO_WG_STAGE24_SECRET_AND_IMPORT_RULE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L615\",\n \"kind\": \"heading\",\n \"source_line\": 615,\n \"title\": \"TAFTAUTO_WG_PSK_ROTATION_SCRIPT_BROKE_DATAPLANE_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L620\",\n \"kind\": \"heading\",\n \"source_line\": 620,\n \"title\": \"TAFTAUTO_CERTBOT_CLOUDFLARE_PLUGIN_MISSING_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L624\",\n \"kind\": \"heading\",\n \"source_line\": 624,\n \"title\": \"HOMEPAGE_SERVICES_YAML_BAD_INDENT_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L628\",\n \"kind\": \"heading\",\n \"source_line\": 628,\n \"title\": \"HOMEPAGE_SERVICES_YAML_BAD_INDENT_REPAIR_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L632\",\n \"kind\": \"heading\",\n \"source_line\": 632,\n \"title\": \"TAFTAUTO_CERTBOT_DRYRUN_BAD_FLAG_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L636\",\n \"kind\": \"heading\",\n \"source_line\": 636,\n \"title\": \"TAFTAUTO_CERT_RENEW_DRYRUN_RATE_LIMITED_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L643\",\n \"kind\": \"heading\",\n \"source_line\": 643,\n \"title\": \"HOMEPAGE_XENFORO_INFO_INLINE_PYTHON_SYNTAX_ERROR_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L647\",\n \"kind\": \"heading\",\n \"source_line\": 647,\n \"title\": \"HOMEPAGE_USEFUL_ROUTER_NAME_MISMATCH_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L651\",\n \"kind\": \"heading\",\n \"source_line\": 651,\n \"title\": \"HOMEPAGE_USEFUL_ROUTER_CARD_NOT_FOUND_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L655\",\n \"kind\": \"heading\",\n \"source_line\": 655,\n \"title\": \"20260702_CF_TOKEN_AUDIT_BROKEN_COMMAND\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L661\",\n \"kind\": \"heading\",\n \"source_line\": 661,\n \"title\": \"LESSON_20260702_CROWDSEC_NETBIRD_EXIT_ROUTE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L668\",\n \"kind\": \"heading\",\n \"source_line\": 668,\n \"title\": \"LESSON_20260702_HOMEPAGE_MONITORS_REPAIR_NOT_DELETE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L674\",\n \"kind\": \"heading\",\n \"source_line\": 674,\n \"title\": \"LESSON_20260702_KUMA_ADD_ONE_MONITOR_ONLY\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L680\",\n \"kind\": \"heading\",\n \"source_line\": 680,\n \"title\": \"LESSON_20260702_DOCKGE_STALE_STACKS_NOT_CONTAINERS\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L686\",\n \"kind\": \"heading\",\n \"source_line\": 686,\n \"title\": \"STAGE4B_MASKED_SQL_QUERY_FAILURE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L691\",\n \"kind\": \"heading\",\n \"source_line\": 691,\n \"title\": \"STAGE4C_SCHEMA_MIGRATIONS_ID_ASSUMPTION_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L696\",\n \"kind\": \"heading\",\n \"source_line\": 696,\n \"title\": \"STAGE4C_PGDUMP_DEV_NULL_FSYNC_INVALID_PROBE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L702\",\n \"kind\": \"heading\",\n \"source_line\": 702,\n \"title\": \"STAGE4C_REMOTE_PREP_THIRD_SUBSTEP_FAILED_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L708\",\n \"kind\": \"heading\",\n \"source_line\": 708,\n \"title\": \"STAGE4C_REMOTE_PREP_GLOB_AFTER_CHMOD_ROOT_CAUSE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L713\",\n \"kind\": \"heading\",\n \"source_line\": 713,\n \"title\": \"STAGE4C_MIGRATION003_FINGERPRINT_DOLLAR_QUOTE_FAILURE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L718\",\n \"kind\": \"heading\",\n \"source_line\": 718,\n \"title\": \"STAGE4C_SEAL_OUTER_RC_MASKING_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L724\",\n \"kind\": \"heading\",\n \"source_line\": 724,\n \"title\": \"STAGE4C_DIAGNOSIS_EXPECTED_DERIVED_FILE_ON_VM180_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L729\",\n \"kind\": \"heading\",\n \"source_line\": 729,\n \"title\": \"STAGE4C_NO_JOBS_RUNNING_TEXT_COUNTED_AS_JOB_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L735\",\n \"kind\": \"heading\",\n \"source_line\": 735,\n \"title\": \"STAGE4D_ADAPTER_SOURCE_AUDIT_ABORTED_BEFORE_FINAL_MARKERS_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L741\",\n \"kind\": \"heading\",\n \"source_line\": 741,\n \"title\": \"STAGE4D_LOCAL_EXPANSION_OF_REMOTE_Q_UNDER_NOUNSET_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L747\",\n \"kind\": \"heading\",\n \"source_line\": 747,\n \"title\": \"STAGE4D_REMOTE_PYTHON311_ADAPTER_SELFTEST_RC1_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L752\",\n \"kind\": \"heading\",\n \"source_line\": 752,\n \"title\": \"STAGE4D_PYTHON311_FSTRING_COMPATIBILITY_AND_REPRO_VALIDATOR_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L759\",\n \"kind\": \"heading\",\n \"source_line\": 759,\n \"title\": \"STAGE4E_DESIGN_VALIDATOR_ABORTED_BEFORE_LOCAL_VALIDATION_MARKER_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L765\",\n \"kind\": \"heading\",\n \"source_line\": 765,\n \"title\": \"STAGE4E_VALIDATOR_SCANNED_PYC_AND_OWN_FORBIDDEN_LITERALS_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L772\",\n \"kind\": \"heading\",\n \"source_line\": 772,\n \"title\": \"STAGE4E_V2_VALIDATOR_FAILED_STATIC_COMPILE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L778\",\n \"kind\": \"heading\",\n \"source_line\": 778,\n \"title\": \"STAGE4E_PIPESTATUS_LOST_AFTER_FIRST_ASSIGNMENT_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L784\",\n \"kind\": \"heading\",\n \"source_line\": 784,\n \"title\": \"STAGE4F_VALIDATOR_EXPECTED_HEALTH_REFRESH_FROM_NONWRITING_BACKUP_SCRIPT_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L791\",\n \"kind\": \"heading\",\n \"source_line\": 791,\n \"title\": \"STRICT_RULE_20260714_CLOSE_TAILS_IMMEDIATELY\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L798\",\n \"kind\": \"heading\",\n \"source_line\": 798,\n \"title\": \"ERROR_20260714_DEPENDENCY_FACT_QUERY_GLOBAL_LIMIT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L806\",\n \"kind\": \"heading\",\n \"source_line\": 806,\n \"title\": \"ERROR_20260714_COLLECTOR_PATCH_REQUIREMENT_PATTERN_MISMATCH\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L814\",\n \"kind\": \"heading\",\n \"source_line\": 814,\n \"title\": \"ERROR_20260714_PRIVILEGED_FILE_REDIRECTION_BEFORE_SUDO\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L822\",\n \"kind\": \"heading\",\n \"source_line\": 822,\n \"title\": \"ERROR_20260714_COLLECTOR_RUN_COLUMN_ASSUMPTION\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L830\",\n \"kind\": \"heading\",\n \"source_line\": 830,\n \"title\": \"ERROR_20260714_REMOTE_STDIN_ARGUMENT_SHIFT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L838\",\n \"kind\": \"heading\",\n \"source_line\": 838,\n \"title\": \"ERROR_20260714_OVERSIZED_COMMAND_PARSE_FAILURE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L847\",\n \"kind\": \"heading\",\n \"source_line\": 847,\n \"title\": \"ERROR_20260714_HOMELAB_ADMIN_HELP_RC_ASSUMPTION\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L856\",\n \"kind\": \"heading\",\n \"source_line\": 856,\n \"title\": \"ERROR_20260715_EXPECTED_NEGATIVE_RC_TRAP_CLASSIFICATION\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L864\",\n \"kind\": \"heading\",\n \"source_line\": 864,\n \"title\": \"ERROR_20260715_DUPLICATE_MACHINE_MARKER_COUNT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L875\",\n \"kind\": \"heading\",\n \"source_line\": 875,\n \"title\": \"ERROR_20260715_OUTER_WRAPPER_SHELL_SYNTAX\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L888\",\n \"kind\": \"heading\",\n \"source_line\": 888,\n \"title\": \"ERROR_20260715_INLINE_REMOTE_SHELL_IN_APPLY_PHASE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L902\",\n \"kind\": \"heading\",\n \"source_line\": 902,\n \"title\": \"ERROR_20260715_OPTIONAL_RUN_DIRECTORY_FIND_UNDER_PIPEFAIL\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L912\",\n \"kind\": \"heading\",\n \"source_line\": 912,\n \"title\": \"ERROR_20260715_PG_CONSTRAINT_CONTYPE_CHAR_CONCAT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L925\",\n \"kind\": \"heading\",\n \"source_line\": 925,\n \"title\": \"ERROR_20260715_LIVE_COLLECTOR_VERIFIER_WRONG_PATH\",\n \"status\": \"known\"\n }\n ],\n \"rules\": [\n {\n \"id\": \"CHECK-1\",\n \"source_line\": 12,\n \"text\": \"команда не должна быть большим paste.\"\n },\n {\n \"id\": \"CHECK-2\",\n \"source_line\": 13,\n \"text\": \"команда не должна содержать большой here-doc.\"\n },\n {\n \"id\": \"CHECK-3\",\n \"source_line\": 14,\n \"text\": \"команда не должна смешивать Markdown, backticks и shell-логику.\"\n },\n {\n \"id\": \"CHECK-4\",\n \"source_line\": 15,\n \"text\": \"команда не должна иметь вложенный ssh с несколькими уровнями кавычек.\"\n },\n {\n \"id\": \"CHECK-5\",\n \"source_line\": 16,\n \"text\": \"команда не должна печатать секреты.\"\n },\n {\n \"id\": \"CHECK-6\",\n \"source_line\": 17,\n \"text\": \"если создаётся файл, сначала маленький безопасный шаг, потом проверка.\"\n },\n {\n \"id\": \"CHECK-7\",\n \"source_line\": 18,\n \"text\": \"если команда длиннее 8 строк, её нельзя давать в интерактивный shell.\"\n },\n {\n \"id\": \"CHECK-8\",\n \"source_line\": 19,\n \"text\": \"для edge-vm использовать debian@[PRIVATE_IP] и sudo.\"\n },\n {\n \"id\": \"CHECK-9\",\n \"source_line\": 20,\n \"text\": \"для forum-prod использовать pve02 и ключ [SENSITIVE_PATH]\n },\n {\n \"id\": \"CHECK-10\",\n \"source_line\": 21,\n \"text\": \"Corosync не трогать без отдельного плана и rollback.\"\n }\n ]\n}\n" +} diff --git a/runtime/history/ERRORS-INDEX-002.txt b/runtime/history/ERRORS-INDEX-002.txt new file mode 100644 index 0000000..f63e975 --- /dev/null +++ b/runtime/history/ERRORS-INDEX-002.txt @@ -0,0 +1,1138 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=ERRORS-INDEX-002 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=error-ledger +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc +COMMAND_SHA256=320d2e834c18cb3ecee1ad270cb372132a31f2c87781f769e32d2b277ac192d0 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGES_MADE=false +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=db3e029f3d7e9a846cd057979abf1d4a8e25d939d7a11c50a3c5f385608f1516 +SANITIZED_OUTPUT_SHA256=60cdef1a88d83032c74570ef700037f2b97060d0ae8e16d80e4f1474a12cc3e5 +OUTPUT_BEGIN +{ + "schema_version": 1, + "status": "READY", + "generated_at_utc": "2026-07-21T07:13:12.781160Z", + "source_sha256": "ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc", + "source_lines": 934, + "entry_count": 150, + "rule_count": 10, + "duplicate_ids": [], + "entries": [ + { + "id": "ERR-N-1", + "kind": "numbered", + "source_line": 6, + "title": "Повторно дал слишком большой интерактивный paste в shell.", + "status": "known" + }, + { + "id": "ERR-N-2", + "kind": "numbered", + "source_line": 7, + "title": "Повторно использовал here-doc/Markdown/backticks там, где нужен короткий безопасный файл или отдельный скрипт.", + "status": "known" + }, + { + "id": "ERR-N-3", + "kind": "numbered", + "source_line": 8, + "title": "Дал генератор справочника прямо в терминал вместо безопасного маленького шага.", + "status": "known" + }, + { + "id": "ERR-N-4", + "kind": "numbered", + "source_line": 9, + "title": "Нарушил своё же правило: не давать длинные вложенные команды с кавычками.", + "status": "known" + }, + { + "id": "ERR-N-11", + "kind": "numbered", + "source_line": 35, + "title": "Ошибка: считать offhost OK после failed rsync.", + "status": "known" + }, + { + "id": "ERR-N-12", + "kind": "numbered", + "source_line": 40, + "title": "Ошибка: широкий secret-поиск по /opt/stacks дал шум.", + "status": "known" + }, + { + "id": "ERR-N-13", + "kind": "numbered", + "source_line": 45, + "title": "Ошибка: SQL с одинарными кавычками внутри одинарной SSH-команды ломается.", + "status": "known" + }, + { + "id": "ERR-N-14", + "kind": "numbered", + "source_line": 50, + "title": "Ошибка: путать контекст входа и узел выполнения.", + "status": "known" + }, + { + "id": "ERR-N-15", + "kind": "numbered", + "source_line": 57, + "title": "Ошибка: повторно нарушено правило №13 после его добавления.", + "status": "known" + }, + { + "id": "ERR-N-16", + "kind": "numbered", + "source_line": 63, + "title": "Основополагающее правило: перед каждой командой ассистент обязан явно написать: Сверка с файлом ошибок: CHECK пройден.", + "status": "known" + }, + { + "id": "ERR-N-19", + "kind": "numbered", + "source_line": 68, + "title": "Уточнение формата: не писать отдельную строку сверки перед каждой командой в пакете.", + "status": "known" + }, + { + "id": "ERR-N-20", + "kind": "numbered", + "source_line": 73, + "title": "Ошибка: широкий XenForo SMTP-поиск по src дал шум исходников.", + "status": "known" + }, + { + "id": "ERR-N-21", + "kind": "numbered", + "source_line": 77, + "title": "Ошибка: nested PHP php -r дал Parse error на forum-prod.", + "status": "known" + }, + { + "id": "ERR-N-22", + "kind": "numbered", + "source_line": 82, + "title": "Ошибка: самодельный base64 PHP для SMTP auth сломан.", + "status": "known" + }, + { + "id": "ERR-N-23", + "kind": "numbered", + "source_line": 87, + "title": "Ошибка: MariaDB не поддержала cast('true' as json) в JSON_SET.", + "status": "known" + }, + { + "id": "ERR-N-24", + "kind": "numbered", + "source_line": 92, + "title": "Ошибка: exit 1 в interactive-check закрыл SSH-сессию.", + "status": "known" + }, + { + "id": "ERR-N-25", + "kind": "numbered", + "source_line": 97, + "title": "Ошибка анализа: не надо слепо включать smtpSsl=true при smtpPort=587.", + "status": "known" + }, + { + "id": "ERR-N-26", + "kind": "numbered", + "source_line": 102, + "title": "Ошибка: openssl -crlf вместе с ручным CRLF ломает SMTP AUTH checker.", + "status": "known" + }, + { + "id": "ERR-N-27", + "kind": "numbered", + "source_line": 108, + "title": "Ошибка: Python heredoc внутри ssh сломал not_ok диагностику.", + "status": "known" + }, + { + "id": "ERR-N-28", + "kind": "numbered", + "source_line": 112, + "title": "Ошибка: docker compose ls --format json | wc -l дал ложный COMPOSE_PROJECT_COUNT=1.", + "status": "known" + }, + { + "id": "ERR-N-29", + "kind": "numbered", + "source_line": 116, + "title": "Ошибка: monitoring compact status искал неверные имена health-файлов.", + "status": "known" + }, + { + "id": "ERR-N-30", + "kind": "numbered", + "source_line": 121, + "title": "Ошибка/инцидент: Prometheus API HTTP_CODE=000 после monitoring reference.", + "status": "known" + }, + { + "id": "ERR-N-31", + "kind": "numbered", + "source_line": 125, + "title": "Строгое правило: перед каждой командой сверяться с файлом ошибок и справочником.", + "status": "known" + }, + { + "id": "ERR-N-32", + "kind": "numbered", + "source_line": 130, + "title": "Ошибка: 153_PROMETHEUS_TARGETS_SETTLED_PROOF содержит SyntaxError из-за вложенного Python внутри SSH.", + "status": "known" + }, + { + "id": "ERR-N-34", + "kind": "numbered", + "source_line": 135, + "title": "Ошибка операционного ввода: полный терминальный лог MobaXterm попал в shell.", + "status": "known" + }, + { + "id": "ERR-N-33", + "kind": "numbered", + "source_line": 140, + "title": "Security finding: root authorized_keys на PVE-нодах имел права 777.", + "status": "known" + }, + { + "id": "ERR-N-35", + "kind": "numbered", + "source_line": 144, + "title": "Ошибка проверки: 160_PVE_ROOT_AUTHORIZED_KEYS_PERMISSIONS_FIXED не доказал исправление прав.", + "status": "known" + }, + { + "id": "ERR-N-36", + "kind": "numbered", + "source_line": 149, + "title": "Quality check: Storage block needs integrity and pve03 capacity coverage review.", + "status": "known" + }, + { + "id": "ERR-N-37", + "kind": "numbered", + "source_line": 154, + "title": "Coverage gap: pve03_staging missing from disk-space health coverage.", + "status": "known" + }, + { + "id": "ERR-N-38", + "kind": "numbered", + "source_line": 158, + "title": "Quality check: Service Dependency Map block needs integrity review.", + "status": "known" + }, + { + "id": "ERR-N-39", + "kind": "numbered", + "source_line": 162, + "title": "Ошибка проверки: post deep audit BAD_MARKER scan caught prose false positive.", + "status": "known" + }, + { + "id": "ERR-N-40", + "kind": "numbered", + "source_line": 166, + "title": "Ошибка/вывод: VM150 Mail cloud single-file upload failed with 413.", + "status": "known" + }, + { + "id": "ERR-N-41", + "kind": "numbered", + "source_line": 170, + "title": "Ошибка: post-backup-pass-slo-reconciliation checked pve01 router health on edge-vm.", + "status": "known" + }, + { + "id": "ERR-H-L5", + "kind": "heading", + "source_line": 5, + "title": "Критические ошибки ассистента", + "status": "known" + }, + { + "id": "ERR-H-L11", + "kind": "heading", + "source_line": 11, + "title": "Жёсткие правила перед каждой командой", + "status": "known" + }, + { + "id": "ERR-H-L23", + "kind": "heading", + "source_line": 23, + "title": "Текущие важные факты", + "status": "known" + }, + { + "id": "ERR-H-L31", + "kind": "heading", + "source_line": 31, + "title": "Правило для справочника", + "status": "known" + }, + { + "id": "ERR-H-L174", + "kind": "heading", + "source_line": 174, + "title": "ASSISTANT_COMMAND_BATCHING_RULE_20260630", + "status": "known" + }, + { + "id": "ERR-H-L180", + "kind": "heading", + "source_line": 180, + "title": "HOME_PORTAL_BASE64_APPLY_FAILURE_20260630", + "status": "known" + }, + { + "id": "ERR-H-L184", + "kind": "heading", + "source_line": 184, + "title": "HOMELAB_COMMAND_SAFETY_HARDENING_20260630", + "status": "known" + }, + { + "id": "ERR-H-L193", + "kind": "heading", + "source_line": 193, + "title": "HOME_PORTAL_API_ERROR_CLOSURE_RULE_20260630", + "status": "known" + }, + { + "id": "ERR-H-L198", + "kind": "heading", + "source_line": 198, + "title": "HOME_PORTAL_COMPLEX_QUOTING_FAILURE_20260630", + "status": "known" + }, + { + "id": "ERR-H-L203", + "kind": "heading", + "source_line": 203, + "title": "HOME_PORTAL_ACTIVE_CONFIG_SCOPE_RULE_20260630", + "status": "known" + }, + { + "id": "ERR-H-L208", + "kind": "heading", + "source_line": 208, + "title": "HOME_PORTAL_LINK_VALIDATION_NPMPLUS_DEFAULT_RULE_20260630", + "status": "known" + }, + { + "id": "ERR-H-L213", + "kind": "heading", + "source_line": 213, + "title": "ROUTER_CLI_STDIN_APPLY_FAILURE_20260630", + "status": "known" + }, + { + "id": "ERR-H-L219", + "kind": "heading", + "source_line": 219, + "title": "ROUTER_CLI_PROBE_STDIN_CONSUMPTION_ERROR_20260630", + "status": "known" + }, + { + "id": "ERR-H-L224", + "kind": "heading", + "source_line": 224, + "title": "ROUTERBACKUP_READONLY_CLI_PERMISSION_LIMIT_20260630", + "status": "known" + }, + { + "id": "ERR-H-L230", + "kind": "heading", + "source_line": 230, + "title": "PROOF_SUMMARY_EXTRACTION_BLANK_20260630", + "status": "known" + }, + { + "id": "ERR-H-L235", + "kind": "heading", + "source_line": 235, + "title": "ROUTER_ACL_UI_RULE_DELETE_AND_RESTORE_20260701", + "status": "known" + }, + { + "id": "ERR-H-L241", + "kind": "heading", + "source_line": 241, + "title": "ROUTER_MONITOR_NODE_LOOKUP_PROBE_BUG_20260701", + "status": "known" + }, + { + "id": "ERR-H-L247", + "kind": "heading", + "source_line": 247, + "title": "ROUTER_HTTP_SERVICE_FORBIDDEN_FROM_EDGE_VM_20260701", + "status": "known" + }, + { + "id": "ERR-H-L254", + "kind": "heading", + "source_line": 254, + "title": "PY_COMPILE_PYC_PERMISSION_ERROR_20260701", + "status": "known" + }, + { + "id": "ERR-H-L261", + "kind": "heading", + "source_line": 261, + "title": "ROUTER_HOME_IP_DOCKER_ROUTE_CONFLICT_20260701", + "status": "known" + }, + { + "id": "ERR-H-L267", + "kind": "heading", + "source_line": 267, + "title": "HOMEPAGE_ROUTER_MOSCOW_YAML_TITLE_SHAPE_MISMATCH_20260701", + "status": "known" + }, + { + "id": "ERR-H-L273", + "kind": "heading", + "source_line": 273, + "title": "HOMEPAGE_ROUTER_MOSCOW_APPLY_SCRIPT_SYNTAX_ERROR_20260701", + "status": "known" + }, + { + "id": "ERR-H-L281", + "kind": "heading", + "source_line": 281, + "title": "FORUM_PROD_VM160_FIRST_BOOT_SSH255_20260701", + "status": "known" + }, + { + "id": "ERR-H-L286", + "kind": "heading", + "source_line": 286, + "title": "FORUM_PROD_VM160_NESTED_HOSTNAME_PROOF_QUOTING_20260701", + "status": "known" + }, + { + "id": "ERR-H-L292", + "kind": "heading", + "source_line": 292, + "title": "FORUM_PROD_VM160_SWAP_PROOF_QUOTING_20260701", + "status": "known" + }, + { + "id": "ERR-H-L298", + "kind": "heading", + "source_line": 298, + "title": "FORUM_UPLOAD_ARCHIVES_VM_VERIFY_QUOTING_20260701", + "status": "known" + }, + { + "id": "ERR-H-L304", + "kind": "heading", + "source_line": 304, + "title": "FORUM_PROD_BULK_IMPORT_PHP85_EMPTY_FRONTEND_20260701", + "status": "known" + }, + { + "id": "ERR-H-L311", + "kind": "heading", + "source_line": 311, + "title": "XENFORO_REQUIREMENTS_DIRECT_DOWNLOAD_403_20260701", + "status": "known" + }, + { + "id": "ERR-H-L318", + "kind": "heading", + "source_line": 318, + "title": "PVE01_UNZIP_MISSING_FOR_XF_REQUIREMENTS_VERIFY_20260701", + "status": "known" + }, + { + "id": "ERR-H-L324", + "kind": "heading", + "source_line": 324, + "title": "FRESH5_DEPLOY_SUCCESS_20260701", + "status": "known" + }, + { + "id": "ERR-H-L330", + "kind": "heading", + "source_line": 330, + "title": "NPMPLUS_SQLITE_PASTE_FAILURE_20260701", + "status": "known" + }, + { + "id": "ERR-H-L336", + "kind": "heading", + "source_line": 336, + "title": "NPMPLUS_PUBLISH_SCRIPT_WRONG_ENV_SOURCE_525_20260701", + "status": "known" + }, + { + "id": "ERR-H-L342", + "kind": "heading", + "source_line": 342, + "title": "NPMPLUS_API_LOGIN_MISSED_HTTPS81_AND_JSON_ESCAPE_20260701", + "status": "known" + }, + { + "id": "ERR-H-L348", + "kind": "heading", + "source_line": 348, + "title": "NPMPLUS_API_AUTH_UNAVAILABLE_MANUAL_ROUTES_20260701", + "status": "known" + }, + { + "id": "ERR-H-L354", + "kind": "heading", + "source_line": 354, + "title": "EDGE_CERTBOT_TOKEN_FILE_PERMISSION_535_20260701", + "status": "known" + }, + { + "id": "ERR-H-L360", + "kind": "heading", + "source_line": 360, + "title": "EDGE_CERTBOT_FAILED_DNS_CUTOVER_ABORTED_20260701", + "status": "known" + }, + { + "id": "ERR-H-L366", + "kind": "heading", + "source_line": 366, + "title": "CLOUDFLARE_TOKEN_NO_ZONE_ACCESS_20260701", + "status": "known" + }, + { + "id": "ERR-H-L372", + "kind": "heading", + "source_line": 372, + "title": "FORUM_PUBLICATION_FINAL_SUCCESS_20260701", + "status": "known" + }, + { + "id": "ERR-H-L377", + "kind": "heading", + "source_line": 377, + "title": "FINAL_SNAPSHOT_NAME_TOO_LONG_556_20260701", + "status": "known" + }, + { + "id": "ERR-H-L384", + "kind": "heading", + "source_line": 384, + "title": "CLOUDFLARE_DNS_AUDIT_TXT_SUBSTRING_GAP_20260701", + "status": "known" + }, + { + "id": "ERR-H-L391", + "kind": "heading", + "source_line": 391, + "title": "CLOUDFLARE_DNS_CLEANUP_DRYRUN_QUOTE_563_20260701", + "status": "known" + }, + { + "id": "ERR-H-L396", + "kind": "heading", + "source_line": 396, + "title": "SPF_DUPLICATE_AFTER_565_20260701", + "status": "known" + }, + { + "id": "ERR-H-L402", + "kind": "heading", + "source_line": 402, + "title": "MSMTP_SECRET_SOURCE_PARSE_ERROR_576_20260701", + "status": "known" + }, + { + "id": "ERR-H-L408", + "kind": "heading", + "source_line": 408, + "title": "FORUM_MSMTP_MAIL_TRANSPORT_STILL_FAILING_20260701", + "status": "known" + }, + { + "id": "ERR-H-L414", + "kind": "heading", + "source_line": 414, + "title": "SMTP_PASSWORD_EXPOSED_ROTATE_REQUIRED_20260701", + "status": "known" + }, + { + "id": "ERR-H-L421", + "kind": "heading", + "source_line": 421, + "title": "NETBIRD_MAILCOW_REPORTED_DOWN_AFTER_SMTP_INCIDENT_20260701", + "status": "known" + }, + { + "id": "ERR-H-L426", + "kind": "heading", + "source_line": 426, + "title": "FORUM_SMTP_FAILED_CONFIG_DISABLED_AFTER_MAILCOW_BAN_20260701", + "status": "known" + }, + { + "id": "ERR-H-L432", + "kind": "heading", + "source_line": 432, + "title": "FORUM_OLD_CODEVIPE_CLOUD_BACKUP_STALE_AFTER_FRESH5_20260701", + "status": "known" + }, + { + "id": "ERR-H-L439", + "kind": "heading", + "source_line": 439, + "title": "FORUM_RESTORE_DRILL_610_STATUS_FLAG_BUG_20260701", + "status": "known" + }, + { + "id": "ERR-H-L445", + "kind": "heading", + "source_line": 445, + "title": "FORUM_XENFORO_MAIL_SMOKE_TEST_FAILED_20260701", + "status": "known" + }, + { + "id": "ERR-H-L449", + "kind": "heading", + "source_line": 449, + "title": "XENFORO_MAIL_SMOKE_623_INVALID_ROOT_PATH_20260701", + "status": "known" + }, + { + "id": "ERR-H-L456", + "kind": "heading", + "source_line": 456, + "title": "FORUM_NEXT_CHAT_KNOWN_ERRORS_AND_CLOSED_INCIDENTS_20260701", + "status": "known" + }, + { + "id": "ERR-H-L509", + "kind": "heading", + "source_line": 509, + "title": "PARKED_DOMAINS_STAGE4_DNS01_PREFLIGHT_FAILED_20260701", + "status": "known" + }, + { + "id": "ERR-H-L516", + "kind": "heading", + "source_line": 516, + "title": "PARKED_DOMAINS_STAGE5_BASH_LOCAL_SETU_BUG_20260701", + "status": "known" + }, + { + "id": "ERR-H-L523", + "kind": "heading", + "source_line": 523, + "title": "PARKED_DOMAINS_STAGE6_TEMP_HTTP_ROOT_VALIDATION_BUG_20260701", + "status": "known" + }, + { + "id": "ERR-H-L530", + "kind": "heading", + "source_line": 530, + "title": "PARKED_DOMAINS_STAGE7_NEWFI_ROOT_ACME_REDIRECT_20260701", + "status": "known" + }, + { + "id": "ERR-H-L535", + "kind": "heading", + "source_line": 535, + "title": "PARKED_DOMAINS_STAGE8_DEFAULT_HTTP_TO_HTTPS_REDIRECT_20260701", + "status": "known" + }, + { + "id": "ERR-H-L541", + "kind": "heading", + "source_line": 541, + "title": "PARKED_DOMAINS_STAGE9_NEWFI_EXACT_PROBE_NEEDED_20260701", + "status": "known" + }, + { + "id": "ERR-H-L547", + "kind": "heading", + "source_line": 547, + "title": "PARKED_DOMAINS_STAGE10_EXACT_NEWFI_PROBE_OK_20260701", + "status": "known" + }, + { + "id": "ERR-H-L553", + "kind": "heading", + "source_line": 553, + "title": "PARKED_DOMAINS_STAGE11_LOW_ID_EXACT_ROUTE_FAILED_20260701", + "status": "known" + }, + { + "id": "ERR-H-L560", + "kind": "heading", + "source_line": 560, + "title": "PARKED_DOMAINS_SWITCH_TO_DNS01_AFTER_HTTP01_FAILURES_20260701", + "status": "known" + }, + { + "id": "ERR-H-L566", + "kind": "heading", + "source_line": 566, + "title": "PARKED_DOMAINS_STAGE15_FALSE_LOCAL_VALIDATE_ROLLBACK_20260701", + "status": "known" + }, + { + "id": "ERR-H-L571", + "kind": "heading", + "source_line": 571, + "title": "DOMAIN_ACTIONS_STAGE18_PLACEHOLDER_AND_RENEWAL_PROOF_20260701", + "status": "known" + }, + { + "id": "ERR-H-L575", + "kind": "heading", + "source_line": 575, + "title": "GRAM1_ROOT_WWW_PLACEHOLDER_CLOSE_STAGE19_20260701", + "status": "known" + }, + { + "id": "ERR-H-L581", + "kind": "heading", + "source_line": 581, + "title": "PVEPRO_EDGE_LANDING_STAGE21_20260701", + "status": "known" + }, + { + "id": "ERR-H-L587", + "kind": "heading", + "source_line": 587, + "title": "PVEPRO_STAGE21_LANDING_SERVICE_FAILED_20260701", + "status": "known" + }, + { + "id": "ERR-H-L592", + "kind": "heading", + "source_line": 592, + "title": "PVEPRO_STAGE22_VALIDATION_AND_COPY_GUARD_20260701", + "status": "known" + }, + { + "id": "ERR-H-L597", + "kind": "heading", + "source_line": 597, + "title": "TAFTAUTO_CERT_AUTORENEW_BLOCKED_NO_PRIVATE_ACCESS_20260701", + "status": "known" + }, + { + "id": "ERR-H-L603", + "kind": "heading", + "source_line": 603, + "title": "TAFTAUTO_CERT_AUTORENEW_BLOCKED_NO_PRIVATE_ACCESS_20260701", + "status": "known" + }, + { + "id": "ERR-H-L609", + "kind": "heading", + "source_line": 609, + "title": "TAFTAUTO_WG_STAGE24_SECRET_AND_IMPORT_RULE_20260701", + "status": "known" + }, + { + "id": "ERR-H-L615", + "kind": "heading", + "source_line": 615, + "title": "TAFTAUTO_WG_PSK_ROTATION_SCRIPT_BROKE_DATAPLANE_20260702", + "status": "known" + }, + { + "id": "ERR-H-L620", + "kind": "heading", + "source_line": 620, + "title": "TAFTAUTO_CERTBOT_CLOUDFLARE_PLUGIN_MISSING_20260702", + "status": "known" + }, + { + "id": "ERR-H-L624", + "kind": "heading", + "source_line": 624, + "title": "HOMEPAGE_SERVICES_YAML_BAD_INDENT_20260702", + "status": "known" + }, + { + "id": "ERR-H-L628", + "kind": "heading", + "source_line": 628, + "title": "HOMEPAGE_SERVICES_YAML_BAD_INDENT_REPAIR_20260702", + "status": "known" + }, + { + "id": "ERR-H-L632", + "kind": "heading", + "source_line": 632, + "title": "TAFTAUTO_CERTBOT_DRYRUN_BAD_FLAG_20260702", + "status": "known" + }, + { + "id": "ERR-H-L636", + "kind": "heading", + "source_line": 636, + "title": "TAFTAUTO_CERT_RENEW_DRYRUN_RATE_LIMITED_20260702", + "status": "known" + }, + { + "id": "ERR-H-L643", + "kind": "heading", + "source_line": 643, + "title": "HOMEPAGE_XENFORO_INFO_INLINE_PYTHON_SYNTAX_ERROR_20260702", + "status": "known" + }, + { + "id": "ERR-H-L647", + "kind": "heading", + "source_line": 647, + "title": "HOMEPAGE_USEFUL_ROUTER_NAME_MISMATCH_20260702", + "status": "known" + }, + { + "id": "ERR-H-L651", + "kind": "heading", + "source_line": 651, + "title": "HOMEPAGE_USEFUL_ROUTER_CARD_NOT_FOUND_20260702", + "status": "known" + }, + { + "id": "ERR-H-L655", + "kind": "heading", + "source_line": 655, + "title": "20260702_CF_TOKEN_AUDIT_BROKEN_COMMAND", + "status": "known" + }, + { + "id": "ERR-H-L661", + "kind": "heading", + "source_line": 661, + "title": "LESSON_20260702_CROWDSEC_NETBIRD_EXIT_ROUTE", + "status": "known" + }, + { + "id": "ERR-H-L668", + "kind": "heading", + "source_line": 668, + "title": "LESSON_20260702_HOMEPAGE_MONITORS_REPAIR_NOT_DELETE", + "status": "known" + }, + { + "id": "ERR-H-L674", + "kind": "heading", + "source_line": 674, + "title": "LESSON_20260702_KUMA_ADD_ONE_MONITOR_ONLY", + "status": "known" + }, + { + "id": "ERR-H-L680", + "kind": "heading", + "source_line": 680, + "title": "LESSON_20260702_DOCKGE_STALE_STACKS_NOT_CONTAINERS", + "status": "known" + }, + { + "id": "ERR-H-L686", + "kind": "heading", + "source_line": 686, + "title": "STAGE4B_MASKED_SQL_QUERY_FAILURE_20260714", + "status": "known" + }, + { + "id": "ERR-H-L691", + "kind": "heading", + "source_line": 691, + "title": "STAGE4C_SCHEMA_MIGRATIONS_ID_ASSUMPTION_20260714", + "status": "known" + }, + { + "id": "ERR-H-L696", + "kind": "heading", + "source_line": 696, + "title": "STAGE4C_PGDUMP_DEV_NULL_FSYNC_INVALID_PROBE_20260714", + "status": "known" + }, + { + "id": "ERR-H-L702", + "kind": "heading", + "source_line": 702, + "title": "STAGE4C_REMOTE_PREP_THIRD_SUBSTEP_FAILED_20260714", + "status": "known" + }, + { + "id": "ERR-H-L708", + "kind": "heading", + "source_line": 708, + "title": "STAGE4C_REMOTE_PREP_GLOB_AFTER_CHMOD_ROOT_CAUSE_20260714", + "status": "known" + }, + { + "id": "ERR-H-L713", + "kind": "heading", + "source_line": 713, + "title": "STAGE4C_MIGRATION003_FINGERPRINT_DOLLAR_QUOTE_FAILURE_20260714", + "status": "known" + }, + { + "id": "ERR-H-L718", + "kind": "heading", + "source_line": 718, + "title": "STAGE4C_SEAL_OUTER_RC_MASKING_20260714", + "status": "known" + }, + { + "id": "ERR-H-L724", + "kind": "heading", + "source_line": 724, + "title": "STAGE4C_DIAGNOSIS_EXPECTED_DERIVED_FILE_ON_VM180_20260714", + "status": "known" + }, + { + "id": "ERR-H-L729", + "kind": "heading", + "source_line": 729, + "title": "STAGE4C_NO_JOBS_RUNNING_TEXT_COUNTED_AS_JOB_20260714", + "status": "known" + }, + { + "id": "ERR-H-L735", + "kind": "heading", + "source_line": 735, + "title": "STAGE4D_ADAPTER_SOURCE_AUDIT_ABORTED_BEFORE_FINAL_MARKERS_20260714", + "status": "known" + }, + { + "id": "ERR-H-L741", + "kind": "heading", + "source_line": 741, + "title": "STAGE4D_LOCAL_EXPANSION_OF_REMOTE_Q_UNDER_NOUNSET_20260714", + "status": "known" + }, + { + "id": "ERR-H-L747", + "kind": "heading", + "source_line": 747, + "title": "STAGE4D_REMOTE_PYTHON311_ADAPTER_SELFTEST_RC1_20260714", + "status": "known" + }, + { + "id": "ERR-H-L752", + "kind": "heading", + "source_line": 752, + "title": "STAGE4D_PYTHON311_FSTRING_COMPATIBILITY_AND_REPRO_VALIDATOR_20260714", + "status": "known" + }, + { + "id": "ERR-H-L759", + "kind": "heading", + "source_line": 759, + "title": "STAGE4E_DESIGN_VALIDATOR_ABORTED_BEFORE_LOCAL_VALIDATION_MARKER_20260714", + "status": "known" + }, + { + "id": "ERR-H-L765", + "kind": "heading", + "source_line": 765, + "title": "STAGE4E_VALIDATOR_SCANNED_PYC_AND_OWN_FORBIDDEN_LITERALS_20260714", + "status": "known" + }, + { + "id": "ERR-H-L772", + "kind": "heading", + "source_line": 772, + "title": "STAGE4E_V2_VALIDATOR_FAILED_STATIC_COMPILE_20260714", + "status": "known" + }, + { + "id": "ERR-H-L778", + "kind": "heading", + "source_line": 778, + "title": "STAGE4E_PIPESTATUS_LOST_AFTER_FIRST_ASSIGNMENT_20260714", + "status": "known" + }, + { + "id": "ERR-H-L784", + "kind": "heading", + "source_line": 784, + "title": "STAGE4F_VALIDATOR_EXPECTED_HEALTH_REFRESH_FROM_NONWRITING_BACKUP_SCRIPT_20260714", + "status": "known" + }, + { + "id": "ERR-H-L791", + "kind": "heading", + "source_line": 791, + "title": "STRICT_RULE_20260714_CLOSE_TAILS_IMMEDIATELY", + "status": "known" + }, + { + "id": "ERR-H-L798", + "kind": "heading", + "source_line": 798, + "title": "ERROR_20260714_DEPENDENCY_FACT_QUERY_GLOBAL_LIMIT", + "status": "known" + }, + { + "id": "ERR-H-L806", + "kind": "heading", + "source_line": 806, + "title": "ERROR_20260714_COLLECTOR_PATCH_REQUIREMENT_PATTERN_MISMATCH", + "status": "known" + }, + { + "id": "ERR-H-L814", + "kind": "heading", + "source_line": 814, + "title": "ERROR_20260714_PRIVILEGED_FILE_REDIRECTION_BEFORE_SUDO", + "status": "known" + }, + { + "id": "ERR-H-L822", + "kind": "heading", + "source_line": 822, + "title": "ERROR_20260714_COLLECTOR_RUN_COLUMN_ASSUMPTION", + "status": "known" + }, + { + "id": "ERR-H-L830", + "kind": "heading", + "source_line": 830, + "title": "ERROR_20260714_REMOTE_STDIN_ARGUMENT_SHIFT", + "status": "known" + }, + { + "id": "ERR-H-L838", + "kind": "heading", + "source_line": 838, + "title": "ERROR_20260714_OVERSIZED_COMMAND_PARSE_FAILURE", + "status": "known" + }, + { + "id": "ERR-H-L847", + "kind": "heading", + "source_line": 847, + "title": "ERROR_20260714_HOMELAB_ADMIN_HELP_RC_ASSUMPTION", + "status": "known" + }, + { + "id": "ERR-H-L856", + "kind": "heading", + "source_line": 856, + "title": "ERROR_20260715_EXPECTED_NEGATIVE_RC_TRAP_CLASSIFICATION", + "status": "known" + }, + { + "id": "ERR-H-L864", + "kind": "heading", + "source_line": 864, + "title": "ERROR_20260715_DUPLICATE_MACHINE_MARKER_COUNT", + "status": "known" + }, + { + "id": "ERR-H-L875", + "kind": "heading", + "source_line": 875, + "title": "ERROR_20260715_OUTER_WRAPPER_SHELL_SYNTAX", + "status": "known" + }, + { + "id": "ERR-H-L888", + "kind": "heading", + "source_line": 888, + "title": "ERROR_20260715_INLINE_REMOTE_SHELL_IN_APPLY_PHASE", + "status": "known" + }, + { + "id": "ERR-H-L902", + "kind": "heading", + "source_line": 902, + "title": "ERROR_20260715_OPTIONAL_RUN_DIRECTORY_FIND_UNDER_PIPEFAIL", + "status": "known" + }, + { + "id": "ERR-H-L912", + "kind": "heading", + "source_line": 912, + "title": "ERROR_20260715_PG_CONSTRAINT_CONTYPE_CHAR_CONCAT", + "status": "known" + }, + { + "id": "ERR-H-L925", + "kind": "heading", + "source_line": 925, + "title": "ERROR_20260715_LIVE_COLLECTOR_VERIFIER_WRONG_PATH", + "status": "known" + } + ], + "rules": [ + { + "id": "CHECK-1", + "source_line": 12, + "text": "команда не должна быть большим paste." + }, + { + "id": "CHECK-2", + "source_line": 13, + "text": "команда не должна содержать большой here-doc." + }, + { + "id": "CHECK-3", + "source_line": 14, + "text": "команда не должна смешивать Markdown, backticks и shell-логику." + }, + { + "id": "CHECK-4", + "source_line": 15, + "text": "команда не должна иметь вложенный ssh с несколькими уровнями кавычек." + }, + { + "id": "CHECK-5", + "source_line": 16, + "text": "команда не должна печатать секреты." + }, + { + "id": "CHECK-6", + "source_line": 17, + "text": "если создаётся файл, сначала маленький безопасный шаг, потом проверка." + }, + { + "id": "CHECK-7", + "source_line": 18, + "text": "если команда длиннее 8 строк, её нельзя давать в интерактивный shell." + }, + { + "id": "CHECK-8", + "source_line": 19, + "text": "для edge-vm использовать debian@[PRIVATE_IP] и sudo." + }, + { + "id": "CHECK-9", + "source_line": 20, + "text": "для forum-prod использовать pve02 и ключ [SENSITIVE_PATH] + }, + { + "id": "CHECK-10", + "source_line": 21, + "text": "Corosync не трогать без отдельного плана и rollback." + } + ] +} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 66d0c52..d1fda14 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "ERRORS-INDEX-001", + "command_id": "ERRORS-INDEX-002", "status": "OK", "rc": 0, "host": "pve01", "mode": "read-only", "component": "error-ledger", - "started_at_utc": "2026-07-21T07:10:17Z", - "finished_at_utc": "2026-07-21T07:10:17Z", + "started_at_utc": "2026-07-21T07:13:12Z", + "finished_at_utc": "2026-07-21T07:13:12Z", "reference_register_checked": true, "reference_sha256": "f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2", "error_register_checked": true, "error_register_sha256": "ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc", - "command_sha256": "280cb3910a51e34e4cd97ad077f10a28b2b911f5bc672977c54efa8325b01468", + "command_sha256": "320d2e834c18cb3ecee1ad270cb372132a31f2c87781f769e32d2b277ac192d0", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -22,9 +22,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "1a8a3b39313470910499ff5f400ab65de37d07de55347ff7bd7fafb4c8235afd", - "sanitized_output_sha256": "1a8a3b39313470910499ff5f400ab65de37d07de55347ff7bd7fafb4c8235afd", + "raw_evidence_sha256": "db3e029f3d7e9a846cd057979abf1d4a8e25d939d7a11c50a3c5f385608f1516", + "sanitized_output_sha256": "60cdef1a88d83032c74570ef700037f2b97060d0ae8e16d80e4f1474a12cc3e5", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "{\n \"schema_version\": 1,\n \"status\": \"READY\",\n \"generated_at_utc\": \"2026-07-21T07:10:17Z\",\n \"source\": {\n \"path\": \"/etc/pve/HOMELAB_ASSISTANT_ERROR_REGISTER.md\",\n \"sha256\": \"ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc\",\n \"immutable_context_command_id\": \"CONTEXT-SOURCES-FULL-002\"\n },\n \"entry_count\": 146,\n \"rule_count\": 10,\n \"duplicate_ids\": [],\n \"entries\": [\n {\n \"id\": \"ERR-N-1\",\n \"kind\": \"numbered\",\n \"source_line\": 6,\n \"title\": \"Повторно дал слишком большой интерактивный paste в shell.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-2\",\n \"kind\": \"numbered\",\n \"source_line\": 7,\n \"title\": \"Повторно использовал here-doc/Markdown/backticks там, где нужен короткий безопасный файл или отдельный скрипт.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-3\",\n \"kind\": \"numbered\",\n \"source_line\": 8,\n \"title\": \"Дал генератор справочника прямо в терминал вместо безопасного маленького шага.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-4\",\n \"kind\": \"numbered\",\n \"source_line\": 9,\n \"title\": \"Нарушил своё же правило: не давать длинные вложенные команды с кавычками.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-11\",\n \"kind\": \"numbered\",\n \"source_line\": 35,\n \"title\": \"Ошибка: считать offhost OK после failed rsync.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-12\",\n \"kind\": \"numbered\",\n \"source_line\": 40,\n \"title\": \"Ошибка: широкий secret-поиск по /opt/stacks дал шум.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-13\",\n \"kind\": \"numbered\",\n \"source_line\": 45,\n \"title\": \"Ошибка: SQL с одинарными кавычками внутри одинарной SSH-команды ломается.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-14\",\n \"kind\": \"numbered\",\n \"source_line\": 50,\n \"title\": \"Ошибка: путать контекст входа и узел выполнения.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-15\",\n \"kind\": \"numbered\",\n \"source_line\": 57,\n \"title\": \"Ошибка: повторно нарушено правило №13 после его добавления.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-16\",\n \"kind\": \"numbered\",\n \"source_line\": 63,\n \"title\": \"Основополагающее правило: перед каждой командой ассистент обязан явно написать: Сверка с файлом ошибок: CHECK пройден.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-19\",\n \"kind\": \"numbered\",\n \"source_line\": 68,\n \"title\": \"Уточнение формата: не писать отдельную строку сверки перед каждой командой в пакете.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-20\",\n \"kind\": \"numbered\",\n \"source_line\": 73,\n \"title\": \"Ошибка: широкий XenForo SMTP-поиск по src дал шум исходников.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-21\",\n \"kind\": \"numbered\",\n \"source_line\": 77,\n \"title\": \"Ошибка: nested PHP php -r дал Parse error на forum-prod.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-22\",\n \"kind\": \"numbered\",\n \"source_line\": 82,\n \"title\": \"Ошибка: самодельный base64 PHP для SMTP auth сломан.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-23\",\n \"kind\": \"numbered\",\n \"source_line\": 87,\n \"title\": \"Ошибка: MariaDB не поддержала cast('true' as json) в JSON_SET.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-24\",\n \"kind\": \"numbered\",\n \"source_line\": 92,\n \"title\": \"Ошибка: exit 1 в interactive-check закрыл SSH-сессию.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-25\",\n \"kind\": \"numbered\",\n \"source_line\": 97,\n \"title\": \"Ошибка анализа: не надо слепо включать smtpSsl=true при smtpPort=587.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-26\",\n \"kind\": \"numbered\",\n \"source_line\": 102,\n \"title\": \"Ошибка: openssl -crlf вместе с ручным CRLF ломает SMTP AUTH checker.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-27\",\n \"kind\": \"numbered\",\n \"source_line\": 108,\n \"title\": \"Ошибка: Python heredoc внутри ssh сломал not_ok диагностику.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-28\",\n \"kind\": \"numbered\",\n \"source_line\": 112,\n \"title\": \"Ошибка: docker compose ls --format json | wc -l дал ложный COMPOSE_PROJECT_COUNT=1.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-29\",\n \"kind\": \"numbered\",\n \"source_line\": 116,\n \"title\": \"Ошибка: monitoring compact status искал неверные имена health-файлов.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-30\",\n \"kind\": \"numbered\",\n \"source_line\": 121,\n \"title\": \"Ошибка/инцидент: Prometheus API HTTP_CODE=000 после monitoring reference.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-31\",\n \"kind\": \"numbered\",\n \"source_line\": 125,\n \"title\": \"Строгое правило: перед каждой командой сверяться с файлом ошибок и справочником.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-32\",\n \"kind\": \"numbered\",\n \"source_line\": 130,\n \"title\": \"Ошибка: 153_PROMETHEUS_TARGETS_SETTLED_PROOF содержит SyntaxError из-за вложенного Python внутри SSH.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-34\",\n \"kind\": \"numbered\",\n \"source_line\": 135,\n \"title\": \"Ошибка операционного ввода: полный терминальный лог MobaXterm попал в shell.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-33\",\n \"kind\": \"numbered\",\n \"source_line\": 140,\n \"title\": \"Security finding: root authorized_keys на PVE-нодах имел права 777.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-35\",\n \"kind\": \"numbered\",\n \"source_line\": 144,\n \"title\": \"Ошибка проверки: 160_PVE_ROOT_AUTHORIZED_KEYS_PERMISSIONS_FIXED не доказал исправление прав.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-36\",\n \"kind\": \"numbered\",\n \"source_line\": 149,\n \"title\": \"Quality check: Storage block needs integrity and pve03 capacity coverage review.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-37\",\n \"kind\": \"numbered\",\n \"source_line\": 154,\n \"title\": \"Coverage gap: pve03_staging missing from disk-space health coverage.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-38\",\n \"kind\": \"numbered\",\n \"source_line\": 158,\n \"title\": \"Quality check: Service Dependency Map block needs integrity review.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-39\",\n \"kind\": \"numbered\",\n \"source_line\": 162,\n \"title\": \"Ошибка проверки: post deep audit BAD_MARKER scan caught prose false positive.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-40\",\n \"kind\": \"numbered\",\n \"source_line\": 166,\n \"title\": \"Ошибка/вывод: VM150 Mail cloud single-file upload failed with 413.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-41\",\n \"kind\": \"numbered\",\n \"source_line\": 170,\n \"title\": \"Ошибка: post-backup-pass-slo-reconciliation checked pve01 router health on edge-vm.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L174\",\n \"kind\": \"heading\",\n \"source_line\": 174,\n \"title\": \"ASSISTANT_COMMAND_BATCHING_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L180\",\n \"kind\": \"heading\",\n \"source_line\": 180,\n \"title\": \"HOME_PORTAL_BASE64_APPLY_FAILURE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L184\",\n \"kind\": \"heading\",\n \"source_line\": 184,\n \"title\": \"HOMELAB_COMMAND_SAFETY_HARDENING_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L193\",\n \"kind\": \"heading\",\n \"source_line\": 193,\n \"title\": \"HOME_PORTAL_API_ERROR_CLOSURE_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L198\",\n \"kind\": \"heading\",\n \"source_line\": 198,\n \"title\": \"HOME_PORTAL_COMPLEX_QUOTING_FAILURE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L203\",\n \"kind\": \"heading\",\n \"source_line\": 203,\n \"title\": \"HOME_PORTAL_ACTIVE_CONFIG_SCOPE_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L208\",\n \"kind\": \"heading\",\n \"source_line\": 208,\n \"title\": \"HOME_PORTAL_LINK_VALIDATION_NPMPLUS_DEFAULT_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L213\",\n \"kind\": \"heading\",\n \"source_line\": 213,\n \"title\": \"ROUTER_CLI_STDIN_APPLY_FAILURE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L219\",\n \"kind\": \"heading\",\n \"source_line\": 219,\n \"title\": \"ROUTER_CLI_PROBE_STDIN_CONSUMPTION_ERROR_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L224\",\n \"kind\": \"heading\",\n \"source_line\": 224,\n \"title\": \"ROUTERBACKUP_READONLY_CLI_PERMISSION_LIMIT_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L230\",\n \"kind\": \"heading\",\n \"source_line\": 230,\n \"title\": \"PROOF_SUMMARY_EXTRACTION_BLANK_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L235\",\n \"kind\": \"heading\",\n \"source_line\": 235,\n \"title\": \"ROUTER_ACL_UI_RULE_DELETE_AND_RESTORE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L241\",\n \"kind\": \"heading\",\n \"source_line\": 241,\n \"title\": \"ROUTER_MONITOR_NODE_LOOKUP_PROBE_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L247\",\n \"kind\": \"heading\",\n \"source_line\": 247,\n \"title\": \"ROUTER_HTTP_SERVICE_FORBIDDEN_FROM_EDGE_VM_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L254\",\n \"kind\": \"heading\",\n \"source_line\": 254,\n \"title\": \"PY_COMPILE_PYC_PERMISSION_ERROR_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L261\",\n \"kind\": \"heading\",\n \"source_line\": 261,\n \"title\": \"ROUTER_HOME_IP_DOCKER_ROUTE_CONFLICT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L267\",\n \"kind\": \"heading\",\n \"source_line\": 267,\n \"title\": \"HOMEPAGE_ROUTER_MOSCOW_YAML_TITLE_SHAPE_MISMATCH_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L273\",\n \"kind\": \"heading\",\n \"source_line\": 273,\n \"title\": \"HOMEPAGE_ROUTER_MOSCOW_APPLY_SCRIPT_SYNTAX_ERROR_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L281\",\n \"kind\": \"heading\",\n \"source_line\": 281,\n \"title\": \"FORUM_PROD_VM160_FIRST_BOOT_SSH255_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L286\",\n \"kind\": \"heading\",\n \"source_line\": 286,\n \"title\": \"FORUM_PROD_VM160_NESTED_HOSTNAME_PROOF_QUOTING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L292\",\n \"kind\": \"heading\",\n \"source_line\": 292,\n \"title\": \"FORUM_PROD_VM160_SWAP_PROOF_QUOTING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L298\",\n \"kind\": \"heading\",\n \"source_line\": 298,\n \"title\": \"FORUM_UPLOAD_ARCHIVES_VM_VERIFY_QUOTING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L304\",\n \"kind\": \"heading\",\n \"source_line\": 304,\n \"title\": \"FORUM_PROD_BULK_IMPORT_PHP85_EMPTY_FRONTEND_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L311\",\n \"kind\": \"heading\",\n \"source_line\": 311,\n \"title\": \"XENFORO_REQUIREMENTS_DIRECT_DOWNLOAD_403_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L318\",\n \"kind\": \"heading\",\n \"source_line\": 318,\n \"title\": \"PVE01_UNZIP_MISSING_FOR_XF_REQUIREMENTS_VERIFY_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L324\",\n \"kind\": \"heading\",\n \"source_line\": 324,\n \"title\": \"FRESH5_DEPLOY_SUCCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L330\",\n \"kind\": \"heading\",\n \"source_line\": 330,\n \"title\": \"NPMPLUS_SQLITE_PASTE_FAILURE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L336\",\n \"kind\": \"heading\",\n \"source_line\": 336,\n \"title\": \"NPMPLUS_PUBLISH_SCRIPT_WRONG_ENV_SOURCE_525_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L342\",\n \"kind\": \"heading\",\n \"source_line\": 342,\n \"title\": \"NPMPLUS_API_LOGIN_MISSED_HTTPS81_AND_JSON_ESCAPE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L348\",\n \"kind\": \"heading\",\n \"source_line\": 348,\n \"title\": \"NPMPLUS_API_AUTH_UNAVAILABLE_MANUAL_ROUTES_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L354\",\n \"kind\": \"heading\",\n \"source_line\": 354,\n \"title\": \"EDGE_CERTBOT_TOKEN_FILE_PERMISSION_535_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L360\",\n \"kind\": \"heading\",\n \"source_line\": 360,\n \"title\": \"EDGE_CERTBOT_FAILED_DNS_CUTOVER_ABORTED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L366\",\n \"kind\": \"heading\",\n \"source_line\": 366,\n \"title\": \"CLOUDFLARE_TOKEN_NO_ZONE_ACCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L372\",\n \"kind\": \"heading\",\n \"source_line\": 372,\n \"title\": \"FORUM_PUBLICATION_FINAL_SUCCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L377\",\n \"kind\": \"heading\",\n \"source_line\": 377,\n \"title\": \"FINAL_SNAPSHOT_NAME_TOO_LONG_556_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L384\",\n \"kind\": \"heading\",\n \"source_line\": 384,\n \"title\": \"CLOUDFLARE_DNS_AUDIT_TXT_SUBSTRING_GAP_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L391\",\n \"kind\": \"heading\",\n \"source_line\": 391,\n \"title\": \"CLOUDFLARE_DNS_CLEANUP_DRYRUN_QUOTE_563_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L396\",\n \"kind\": \"heading\",\n \"source_line\": 396,\n \"title\": \"SPF_DUPLICATE_AFTER_565_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L402\",\n \"kind\": \"heading\",\n \"source_line\": 402,\n \"title\": \"MSMTP_SECRET_SOURCE_PARSE_ERROR_576_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L408\",\n \"kind\": \"heading\",\n \"source_line\": 408,\n \"title\": \"FORUM_MSMTP_MAIL_TRANSPORT_STILL_FAILING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L414\",\n \"kind\": \"heading\",\n \"source_line\": 414,\n \"title\": \"SMTP_PASSWORD_EXPOSED_ROTATE_REQUIRED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L421\",\n \"kind\": \"heading\",\n \"source_line\": 421,\n \"title\": \"NETBIRD_MAILCOW_REPORTED_DOWN_AFTER_SMTP_INCIDENT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L426\",\n \"kind\": \"heading\",\n \"source_line\": 426,\n \"title\": \"FORUM_SMTP_FAILED_CONFIG_DISABLED_AFTER_MAILCOW_BAN_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L432\",\n \"kind\": \"heading\",\n \"source_line\": 432,\n \"title\": \"FORUM_OLD_CODEVIPE_CLOUD_BACKUP_STALE_AFTER_FRESH5_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L439\",\n \"kind\": \"heading\",\n \"source_line\": 439,\n \"title\": \"FORUM_RESTORE_DRILL_610_STATUS_FLAG_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L445\",\n \"kind\": \"heading\",\n \"source_line\": 445,\n \"title\": \"FORUM_XENFORO_MAIL_SMOKE_TEST_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L449\",\n \"kind\": \"heading\",\n \"source_line\": 449,\n \"title\": \"XENFORO_MAIL_SMOKE_623_INVALID_ROOT_PATH_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L456\",\n \"kind\": \"heading\",\n \"source_line\": 456,\n \"title\": \"FORUM_NEXT_CHAT_KNOWN_ERRORS_AND_CLOSED_INCIDENTS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L509\",\n \"kind\": \"heading\",\n \"source_line\": 509,\n \"title\": \"PARKED_DOMAINS_STAGE4_DNS01_PREFLIGHT_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L516\",\n \"kind\": \"heading\",\n \"source_line\": 516,\n \"title\": \"PARKED_DOMAINS_STAGE5_BASH_LOCAL_SETU_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L523\",\n \"kind\": \"heading\",\n \"source_line\": 523,\n \"title\": \"PARKED_DOMAINS_STAGE6_TEMP_HTTP_ROOT_VALIDATION_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L530\",\n \"kind\": \"heading\",\n \"source_line\": 530,\n \"title\": \"PARKED_DOMAINS_STAGE7_NEWFI_ROOT_ACME_REDIRECT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L535\",\n \"kind\": \"heading\",\n \"source_line\": 535,\n \"title\": \"PARKED_DOMAINS_STAGE8_DEFAULT_HTTP_TO_HTTPS_REDIRECT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L541\",\n \"kind\": \"heading\",\n \"source_line\": 541,\n \"title\": \"PARKED_DOMAINS_STAGE9_NEWFI_EXACT_PROBE_NEEDED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L547\",\n \"kind\": \"heading\",\n \"source_line\": 547,\n \"title\": \"PARKED_DOMAINS_STAGE10_EXACT_NEWFI_PROBE_OK_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L553\",\n \"kind\": \"heading\",\n \"source_line\": 553,\n \"title\": \"PARKED_DOMAINS_STAGE11_LOW_ID_EXACT_ROUTE_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L560\",\n \"kind\": \"heading\",\n \"source_line\": 560,\n \"title\": \"PARKED_DOMAINS_SWITCH_TO_DNS01_AFTER_HTTP01_FAILURES_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L566\",\n \"kind\": \"heading\",\n \"source_line\": 566,\n \"title\": \"PARKED_DOMAINS_STAGE15_FALSE_LOCAL_VALIDATE_ROLLBACK_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L571\",\n \"kind\": \"heading\",\n \"source_line\": 571,\n \"title\": \"DOMAIN_ACTIONS_STAGE18_PLACEHOLDER_AND_RENEWAL_PROOF_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L575\",\n \"kind\": \"heading\",\n \"source_line\": 575,\n \"title\": \"GRAM1_ROOT_WWW_PLACEHOLDER_CLOSE_STAGE19_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L581\",\n \"kind\": \"heading\",\n \"source_line\": 581,\n \"title\": \"PVEPRO_EDGE_LANDING_STAGE21_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L587\",\n \"kind\": \"heading\",\n \"source_line\": 587,\n \"title\": \"PVEPRO_STAGE21_LANDING_SERVICE_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L592\",\n \"kind\": \"heading\",\n \"source_line\": 592,\n \"title\": \"PVEPRO_STAGE22_VALIDATION_AND_COPY_GUARD_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L597\",\n \"kind\": \"heading\",\n \"source_line\": 597,\n \"title\": \"TAFTAUTO_CERT_AUTORENEW_BLOCKED_NO_PRIVATE_ACCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L603\",\n \"kind\": \"heading\",\n \"source_line\": 603,\n \"title\": \"TAFTAUTO_CERT_AUTORENEW_BLOCKED_NO_PRIVATE_ACCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L609\",\n \"kind\": \"heading\",\n \"source_line\": 609,\n \"title\": \"TAFTAUTO_WG_STAGE24_SECRET_AND_IMPORT_RULE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L615\",\n \"kind\": \"heading\",\n \"source_line\": 615,\n \"title\": \"TAFTAUTO_WG_PSK_ROTATION_SCRIPT_BROKE_DATAPLANE_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L620\",\n \"kind\": \"heading\",\n \"source_line\": 620,\n \"title\": \"TAFTAUTO_CERTBOT_CLOUDFLARE_PLUGIN_MISSING_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L624\",\n \"kind\": \"heading\",\n \"source_line\": 624,\n \"title\": \"HOMEPAGE_SERVICES_YAML_BAD_INDENT_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L628\",\n \"kind\": \"heading\",\n \"source_line\": 628,\n \"title\": \"HOMEPAGE_SERVICES_YAML_BAD_INDENT_REPAIR_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L632\",\n \"kind\": \"heading\",\n \"source_line\": 632,\n \"title\": \"TAFTAUTO_CERTBOT_DRYRUN_BAD_FLAG_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L636\",\n \"kind\": \"heading\",\n \"source_line\": 636,\n \"title\": \"TAFTAUTO_CERT_RENEW_DRYRUN_RATE_LIMITED_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L643\",\n \"kind\": \"heading\",\n \"source_line\": 643,\n \"title\": \"HOMEPAGE_XENFORO_INFO_INLINE_PYTHON_SYNTAX_ERROR_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L647\",\n \"kind\": \"heading\",\n \"source_line\": 647,\n \"title\": \"HOMEPAGE_USEFUL_ROUTER_NAME_MISMATCH_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L651\",\n \"kind\": \"heading\",\n \"source_line\": 651,\n \"title\": \"HOMEPAGE_USEFUL_ROUTER_CARD_NOT_FOUND_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L655\",\n \"kind\": \"heading\",\n \"source_line\": 655,\n \"title\": \"20260702_CF_TOKEN_AUDIT_BROKEN_COMMAND\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L661\",\n \"kind\": \"heading\",\n \"source_line\": 661,\n \"title\": \"LESSON_20260702_CROWDSEC_NETBIRD_EXIT_ROUTE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L668\",\n \"kind\": \"heading\",\n \"source_line\": 668,\n \"title\": \"LESSON_20260702_HOMEPAGE_MONITORS_REPAIR_NOT_DELETE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L674\",\n \"kind\": \"heading\",\n \"source_line\": 674,\n \"title\": \"LESSON_20260702_KUMA_ADD_ONE_MONITOR_ONLY\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L680\",\n \"kind\": \"heading\",\n \"source_line\": 680,\n \"title\": \"LESSON_20260702_DOCKGE_STALE_STACKS_NOT_CONTAINERS\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L686\",\n \"kind\": \"heading\",\n \"source_line\": 686,\n \"title\": \"STAGE4B_MASKED_SQL_QUERY_FAILURE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L691\",\n \"kind\": \"heading\",\n \"source_line\": 691,\n \"title\": \"STAGE4C_SCHEMA_MIGRATIONS_ID_ASSUMPTION_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L696\",\n \"kind\": \"heading\",\n \"source_line\": 696,\n \"title\": \"STAGE4C_PGDUMP_DEV_NULL_FSYNC_INVALID_PROBE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L702\",\n \"kind\": \"heading\",\n \"source_line\": 702,\n \"title\": \"STAGE4C_REMOTE_PREP_THIRD_SUBSTEP_FAILED_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L708\",\n \"kind\": \"heading\",\n \"source_line\": 708,\n \"title\": \"STAGE4C_REMOTE_PREP_GLOB_AFTER_CHMOD_ROOT_CAUSE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L713\",\n \"kind\": \"heading\",\n \"source_line\": 713,\n \"title\": \"STAGE4C_MIGRATION003_FINGERPRINT_DOLLAR_QUOTE_FAILURE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L718\",\n \"kind\": \"heading\",\n \"source_line\": 718,\n \"title\": \"STAGE4C_SEAL_OUTER_RC_MASKING_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L724\",\n \"kind\": \"heading\",\n \"source_line\": 724,\n \"title\": \"STAGE4C_DIAGNOSIS_EXPECTED_DERIVED_FILE_ON_VM180_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L729\",\n \"kind\": \"heading\",\n \"source_line\": 729,\n \"title\": \"STAGE4C_NO_JOBS_RUNNING_TEXT_COUNTED_AS_JOB_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L735\",\n \"kind\": \"heading\",\n \"source_line\": 735,\n \"title\": \"STAGE4D_ADAPTER_SOURCE_AUDIT_ABORTED_BEFORE_FINAL_MARKERS_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L741\",\n \"kind\": \"heading\",\n \"source_line\": 741,\n \"title\": \"STAGE4D_LOCAL_EXPANSION_OF_REMOTE_Q_UNDER_NOUNSET_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L747\",\n \"kind\": \"heading\",\n \"source_line\": 747,\n \"title\": \"STAGE4D_REMOTE_PYTHON311_ADAPTER_SELFTEST_RC1_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L752\",\n \"kind\": \"heading\",\n \"source_line\": 752,\n \"title\": \"STAGE4D_PYTHON311_FSTRING_COMPATIBILITY_AND_REPRO_VALIDATOR_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L759\",\n \"kind\": \"heading\",\n \"source_line\": 759,\n \"title\": \"STAGE4E_DESIGN_VALIDATOR_ABORTED_BEFORE_LOCAL_VALIDATION_MARKER_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L765\",\n \"kind\": \"heading\",\n \"source_line\": 765,\n \"title\": \"STAGE4E_VALIDATOR_SCANNED_PYC_AND_OWN_FORBIDDEN_LITERALS_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L772\",\n \"kind\": \"heading\",\n \"source_line\": 772,\n \"title\": \"STAGE4E_V2_VALIDATOR_FAILED_STATIC_COMPILE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L778\",\n \"kind\": \"heading\",\n \"source_line\": 778,\n \"title\": \"STAGE4E_PIPESTATUS_LOST_AFTER_FIRST_ASSIGNMENT_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L784\",\n \"kind\": \"heading\",\n \"source_line\": 784,\n \"title\": \"STAGE4F_VALIDATOR_EXPECTED_HEALTH_REFRESH_FROM_NONWRITING_BACKUP_SCRIPT_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L791\",\n \"kind\": \"heading\",\n \"source_line\": 791,\n \"title\": \"STRICT_RULE_20260714_CLOSE_TAILS_IMMEDIATELY\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L798\",\n \"kind\": \"heading\",\n \"source_line\": 798,\n \"title\": \"ERROR_20260714_DEPENDENCY_FACT_QUERY_GLOBAL_LIMIT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L806\",\n \"kind\": \"heading\",\n \"source_line\": 806,\n \"title\": \"ERROR_20260714_COLLECTOR_PATCH_REQUIREMENT_PATTERN_MISMATCH\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L814\",\n \"kind\": \"heading\",\n \"source_line\": 814,\n \"title\": \"ERROR_20260714_PRIVILEGED_FILE_REDIRECTION_BEFORE_SUDO\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L822\",\n \"kind\": \"heading\",\n \"source_line\": 822,\n \"title\": \"ERROR_20260714_COLLECTOR_RUN_COLUMN_ASSUMPTION\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L830\",\n \"kind\": \"heading\",\n \"source_line\": 830,\n \"title\": \"ERROR_20260714_REMOTE_STDIN_ARGUMENT_SHIFT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L838\",\n \"kind\": \"heading\",\n \"source_line\": 838,\n \"title\": \"ERROR_20260714_OVERSIZED_COMMAND_PARSE_FAILURE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L847\",\n \"kind\": \"heading\",\n \"source_line\": 847,\n \"title\": \"ERROR_20260714_HOMELAB_ADMIN_HELP_RC_ASSUMPTION\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L856\",\n \"kind\": \"heading\",\n \"source_line\": 856,\n \"title\": \"ERROR_20260715_EXPECTED_NEGATIVE_RC_TRAP_CLASSIFICATION\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L864\",\n \"kind\": \"heading\",\n \"source_line\": 864,\n \"title\": \"ERROR_20260715_DUPLICATE_MACHINE_MARKER_COUNT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L875\",\n \"kind\": \"heading\",\n \"source_line\": 875,\n \"title\": \"ERROR_20260715_OUTER_WRAPPER_SHELL_SYNTAX\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L888\",\n \"kind\": \"heading\",\n \"source_line\": 888,\n \"title\": \"ERROR_20260715_INLINE_REMOTE_SHELL_IN_APPLY_PHASE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L902\",\n \"kind\": \"heading\",\n \"source_line\": 902,\n \"title\": \"ERROR_20260715_OPTIONAL_RUN_DIRECTORY_FIND_UNDER_PIPEFAIL\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L912\",\n \"kind\": \"heading\",\n \"source_line\": 912,\n \"title\": \"ERROR_20260715_PG_CONSTRAINT_CONTYPE_CHAR_CONCAT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L925\",\n \"kind\": \"heading\",\n \"source_line\": 925,\n \"title\": \"ERROR_20260715_LIVE_COLLECTOR_VERIFIER_WRONG_PATH\",\n \"status\": \"known\"\n }\n ],\n \"rules\": [\n {\n \"id\": \"CHECK-1\",\n \"source_line\": 12,\n \"text\": \"команда не должна быть большим paste.\"\n },\n {\n \"id\": \"CHECK-2\",\n \"source_line\": 13,\n \"text\": \"команда не должна содержать большой here-doc.\"\n },\n {\n \"id\": \"CHECK-3\",\n \"source_line\": 14,\n \"text\": \"команда не должна смешивать Markdown, backticks и shell-логику.\"\n },\n {\n \"id\": \"CHECK-4\",\n \"source_line\": 15,\n \"text\": \"команда не должна иметь вложенный ssh с несколькими уровнями кавычек.\"\n },\n {\n \"id\": \"CHECK-5\",\n \"source_line\": 16,\n \"text\": \"команда не должна печатать секреты.\"\n },\n {\n \"id\": \"CHECK-6\",\n \"source_line\": 17,\n \"text\": \"если создаётся файл, сначала маленький безопасный шаг, потом проверка.\"\n },\n {\n \"id\": \"CHECK-7\",\n \"source_line\": 18,\n \"text\": \"если команда длиннее 8 строк, её нельзя давать в интерактивный shell.\"\n },\n {\n \"id\": \"CHECK-8\",\n \"source_line\": 19,\n \"text\": \"для edge-vm использовать debian@[PRIVATE_IP] и sudo.\"\n },\n {\n \"id\": \"CHECK-9\",\n \"source_line\": 20,\n \"text\": \"для forum-prod использовать pve02 и ключ [SENSITIVE_PATH]\"\n },\n {\n \"id\": \"CHECK-10\",\n \"source_line\": 21,\n \"text\": \"Corosync не трогать без отдельного плана и rollback.\"\n }\n ]\n}\n" + "output": "{\n \"schema_version\": 1,\n \"status\": \"READY\",\n \"generated_at_utc\": \"2026-07-21T07:13:12.781160Z\",\n \"source_sha256\": \"ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc\",\n \"source_lines\": 934,\n \"entry_count\": 150,\n \"rule_count\": 10,\n \"duplicate_ids\": [],\n \"entries\": [\n {\n \"id\": \"ERR-N-1\",\n \"kind\": \"numbered\",\n \"source_line\": 6,\n \"title\": \"Повторно дал слишком большой интерактивный paste в shell.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-2\",\n \"kind\": \"numbered\",\n \"source_line\": 7,\n \"title\": \"Повторно использовал here-doc/Markdown/backticks там, где нужен короткий безопасный файл или отдельный скрипт.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-3\",\n \"kind\": \"numbered\",\n \"source_line\": 8,\n \"title\": \"Дал генератор справочника прямо в терминал вместо безопасного маленького шага.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-4\",\n \"kind\": \"numbered\",\n \"source_line\": 9,\n \"title\": \"Нарушил своё же правило: не давать длинные вложенные команды с кавычками.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-11\",\n \"kind\": \"numbered\",\n \"source_line\": 35,\n \"title\": \"Ошибка: считать offhost OK после failed rsync.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-12\",\n \"kind\": \"numbered\",\n \"source_line\": 40,\n \"title\": \"Ошибка: широкий secret-поиск по /opt/stacks дал шум.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-13\",\n \"kind\": \"numbered\",\n \"source_line\": 45,\n \"title\": \"Ошибка: SQL с одинарными кавычками внутри одинарной SSH-команды ломается.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-14\",\n \"kind\": \"numbered\",\n \"source_line\": 50,\n \"title\": \"Ошибка: путать контекст входа и узел выполнения.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-15\",\n \"kind\": \"numbered\",\n \"source_line\": 57,\n \"title\": \"Ошибка: повторно нарушено правило №13 после его добавления.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-16\",\n \"kind\": \"numbered\",\n \"source_line\": 63,\n \"title\": \"Основополагающее правило: перед каждой командой ассистент обязан явно написать: Сверка с файлом ошибок: CHECK пройден.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-19\",\n \"kind\": \"numbered\",\n \"source_line\": 68,\n \"title\": \"Уточнение формата: не писать отдельную строку сверки перед каждой командой в пакете.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-20\",\n \"kind\": \"numbered\",\n \"source_line\": 73,\n \"title\": \"Ошибка: широкий XenForo SMTP-поиск по src дал шум исходников.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-21\",\n \"kind\": \"numbered\",\n \"source_line\": 77,\n \"title\": \"Ошибка: nested PHP php -r дал Parse error на forum-prod.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-22\",\n \"kind\": \"numbered\",\n \"source_line\": 82,\n \"title\": \"Ошибка: самодельный base64 PHP для SMTP auth сломан.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-23\",\n \"kind\": \"numbered\",\n \"source_line\": 87,\n \"title\": \"Ошибка: MariaDB не поддержала cast('true' as json) в JSON_SET.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-24\",\n \"kind\": \"numbered\",\n \"source_line\": 92,\n \"title\": \"Ошибка: exit 1 в interactive-check закрыл SSH-сессию.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-25\",\n \"kind\": \"numbered\",\n \"source_line\": 97,\n \"title\": \"Ошибка анализа: не надо слепо включать smtpSsl=true при smtpPort=587.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-26\",\n \"kind\": \"numbered\",\n \"source_line\": 102,\n \"title\": \"Ошибка: openssl -crlf вместе с ручным CRLF ломает SMTP AUTH checker.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-27\",\n \"kind\": \"numbered\",\n \"source_line\": 108,\n \"title\": \"Ошибка: Python heredoc внутри ssh сломал not_ok диагностику.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-28\",\n \"kind\": \"numbered\",\n \"source_line\": 112,\n \"title\": \"Ошибка: docker compose ls --format json | wc -l дал ложный COMPOSE_PROJECT_COUNT=1.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-29\",\n \"kind\": \"numbered\",\n \"source_line\": 116,\n \"title\": \"Ошибка: monitoring compact status искал неверные имена health-файлов.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-30\",\n \"kind\": \"numbered\",\n \"source_line\": 121,\n \"title\": \"Ошибка/инцидент: Prometheus API HTTP_CODE=000 после monitoring reference.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-31\",\n \"kind\": \"numbered\",\n \"source_line\": 125,\n \"title\": \"Строгое правило: перед каждой командой сверяться с файлом ошибок и справочником.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-32\",\n \"kind\": \"numbered\",\n \"source_line\": 130,\n \"title\": \"Ошибка: 153_PROMETHEUS_TARGETS_SETTLED_PROOF содержит SyntaxError из-за вложенного Python внутри SSH.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-34\",\n \"kind\": \"numbered\",\n \"source_line\": 135,\n \"title\": \"Ошибка операционного ввода: полный терминальный лог MobaXterm попал в shell.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-33\",\n \"kind\": \"numbered\",\n \"source_line\": 140,\n \"title\": \"Security finding: root authorized_keys на PVE-нодах имел права 777.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-35\",\n \"kind\": \"numbered\",\n \"source_line\": 144,\n \"title\": \"Ошибка проверки: 160_PVE_ROOT_AUTHORIZED_KEYS_PERMISSIONS_FIXED не доказал исправление прав.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-36\",\n \"kind\": \"numbered\",\n \"source_line\": 149,\n \"title\": \"Quality check: Storage block needs integrity and pve03 capacity coverage review.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-37\",\n \"kind\": \"numbered\",\n \"source_line\": 154,\n \"title\": \"Coverage gap: pve03_staging missing from disk-space health coverage.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-38\",\n \"kind\": \"numbered\",\n \"source_line\": 158,\n \"title\": \"Quality check: Service Dependency Map block needs integrity review.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-39\",\n \"kind\": \"numbered\",\n \"source_line\": 162,\n \"title\": \"Ошибка проверки: post deep audit BAD_MARKER scan caught prose false positive.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-40\",\n \"kind\": \"numbered\",\n \"source_line\": 166,\n \"title\": \"Ошибка/вывод: VM150 Mail cloud single-file upload failed with 413.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-N-41\",\n \"kind\": \"numbered\",\n \"source_line\": 170,\n \"title\": \"Ошибка: post-backup-pass-slo-reconciliation checked pve01 router health on edge-vm.\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L5\",\n \"kind\": \"heading\",\n \"source_line\": 5,\n \"title\": \"Критические ошибки ассистента\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L11\",\n \"kind\": \"heading\",\n \"source_line\": 11,\n \"title\": \"Жёсткие правила перед каждой командой\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L23\",\n \"kind\": \"heading\",\n \"source_line\": 23,\n \"title\": \"Текущие важные факты\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L31\",\n \"kind\": \"heading\",\n \"source_line\": 31,\n \"title\": \"Правило для справочника\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L174\",\n \"kind\": \"heading\",\n \"source_line\": 174,\n \"title\": \"ASSISTANT_COMMAND_BATCHING_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L180\",\n \"kind\": \"heading\",\n \"source_line\": 180,\n \"title\": \"HOME_PORTAL_BASE64_APPLY_FAILURE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L184\",\n \"kind\": \"heading\",\n \"source_line\": 184,\n \"title\": \"HOMELAB_COMMAND_SAFETY_HARDENING_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L193\",\n \"kind\": \"heading\",\n \"source_line\": 193,\n \"title\": \"HOME_PORTAL_API_ERROR_CLOSURE_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L198\",\n \"kind\": \"heading\",\n \"source_line\": 198,\n \"title\": \"HOME_PORTAL_COMPLEX_QUOTING_FAILURE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L203\",\n \"kind\": \"heading\",\n \"source_line\": 203,\n \"title\": \"HOME_PORTAL_ACTIVE_CONFIG_SCOPE_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L208\",\n \"kind\": \"heading\",\n \"source_line\": 208,\n \"title\": \"HOME_PORTAL_LINK_VALIDATION_NPMPLUS_DEFAULT_RULE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L213\",\n \"kind\": \"heading\",\n \"source_line\": 213,\n \"title\": \"ROUTER_CLI_STDIN_APPLY_FAILURE_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L219\",\n \"kind\": \"heading\",\n \"source_line\": 219,\n \"title\": \"ROUTER_CLI_PROBE_STDIN_CONSUMPTION_ERROR_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L224\",\n \"kind\": \"heading\",\n \"source_line\": 224,\n \"title\": \"ROUTERBACKUP_READONLY_CLI_PERMISSION_LIMIT_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L230\",\n \"kind\": \"heading\",\n \"source_line\": 230,\n \"title\": \"PROOF_SUMMARY_EXTRACTION_BLANK_20260630\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L235\",\n \"kind\": \"heading\",\n \"source_line\": 235,\n \"title\": \"ROUTER_ACL_UI_RULE_DELETE_AND_RESTORE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L241\",\n \"kind\": \"heading\",\n \"source_line\": 241,\n \"title\": \"ROUTER_MONITOR_NODE_LOOKUP_PROBE_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L247\",\n \"kind\": \"heading\",\n \"source_line\": 247,\n \"title\": \"ROUTER_HTTP_SERVICE_FORBIDDEN_FROM_EDGE_VM_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L254\",\n \"kind\": \"heading\",\n \"source_line\": 254,\n \"title\": \"PY_COMPILE_PYC_PERMISSION_ERROR_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L261\",\n \"kind\": \"heading\",\n \"source_line\": 261,\n \"title\": \"ROUTER_HOME_IP_DOCKER_ROUTE_CONFLICT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L267\",\n \"kind\": \"heading\",\n \"source_line\": 267,\n \"title\": \"HOMEPAGE_ROUTER_MOSCOW_YAML_TITLE_SHAPE_MISMATCH_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L273\",\n \"kind\": \"heading\",\n \"source_line\": 273,\n \"title\": \"HOMEPAGE_ROUTER_MOSCOW_APPLY_SCRIPT_SYNTAX_ERROR_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L281\",\n \"kind\": \"heading\",\n \"source_line\": 281,\n \"title\": \"FORUM_PROD_VM160_FIRST_BOOT_SSH255_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L286\",\n \"kind\": \"heading\",\n \"source_line\": 286,\n \"title\": \"FORUM_PROD_VM160_NESTED_HOSTNAME_PROOF_QUOTING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L292\",\n \"kind\": \"heading\",\n \"source_line\": 292,\n \"title\": \"FORUM_PROD_VM160_SWAP_PROOF_QUOTING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L298\",\n \"kind\": \"heading\",\n \"source_line\": 298,\n \"title\": \"FORUM_UPLOAD_ARCHIVES_VM_VERIFY_QUOTING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L304\",\n \"kind\": \"heading\",\n \"source_line\": 304,\n \"title\": \"FORUM_PROD_BULK_IMPORT_PHP85_EMPTY_FRONTEND_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L311\",\n \"kind\": \"heading\",\n \"source_line\": 311,\n \"title\": \"XENFORO_REQUIREMENTS_DIRECT_DOWNLOAD_403_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L318\",\n \"kind\": \"heading\",\n \"source_line\": 318,\n \"title\": \"PVE01_UNZIP_MISSING_FOR_XF_REQUIREMENTS_VERIFY_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L324\",\n \"kind\": \"heading\",\n \"source_line\": 324,\n \"title\": \"FRESH5_DEPLOY_SUCCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L330\",\n \"kind\": \"heading\",\n \"source_line\": 330,\n \"title\": \"NPMPLUS_SQLITE_PASTE_FAILURE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L336\",\n \"kind\": \"heading\",\n \"source_line\": 336,\n \"title\": \"NPMPLUS_PUBLISH_SCRIPT_WRONG_ENV_SOURCE_525_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L342\",\n \"kind\": \"heading\",\n \"source_line\": 342,\n \"title\": \"NPMPLUS_API_LOGIN_MISSED_HTTPS81_AND_JSON_ESCAPE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L348\",\n \"kind\": \"heading\",\n \"source_line\": 348,\n \"title\": \"NPMPLUS_API_AUTH_UNAVAILABLE_MANUAL_ROUTES_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L354\",\n \"kind\": \"heading\",\n \"source_line\": 354,\n \"title\": \"EDGE_CERTBOT_TOKEN_FILE_PERMISSION_535_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L360\",\n \"kind\": \"heading\",\n \"source_line\": 360,\n \"title\": \"EDGE_CERTBOT_FAILED_DNS_CUTOVER_ABORTED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L366\",\n \"kind\": \"heading\",\n \"source_line\": 366,\n \"title\": \"CLOUDFLARE_TOKEN_NO_ZONE_ACCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L372\",\n \"kind\": \"heading\",\n \"source_line\": 372,\n \"title\": \"FORUM_PUBLICATION_FINAL_SUCCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L377\",\n \"kind\": \"heading\",\n \"source_line\": 377,\n \"title\": \"FINAL_SNAPSHOT_NAME_TOO_LONG_556_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L384\",\n \"kind\": \"heading\",\n \"source_line\": 384,\n \"title\": \"CLOUDFLARE_DNS_AUDIT_TXT_SUBSTRING_GAP_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L391\",\n \"kind\": \"heading\",\n \"source_line\": 391,\n \"title\": \"CLOUDFLARE_DNS_CLEANUP_DRYRUN_QUOTE_563_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L396\",\n \"kind\": \"heading\",\n \"source_line\": 396,\n \"title\": \"SPF_DUPLICATE_AFTER_565_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L402\",\n \"kind\": \"heading\",\n \"source_line\": 402,\n \"title\": \"MSMTP_SECRET_SOURCE_PARSE_ERROR_576_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L408\",\n \"kind\": \"heading\",\n \"source_line\": 408,\n \"title\": \"FORUM_MSMTP_MAIL_TRANSPORT_STILL_FAILING_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L414\",\n \"kind\": \"heading\",\n \"source_line\": 414,\n \"title\": \"SMTP_PASSWORD_EXPOSED_ROTATE_REQUIRED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L421\",\n \"kind\": \"heading\",\n \"source_line\": 421,\n \"title\": \"NETBIRD_MAILCOW_REPORTED_DOWN_AFTER_SMTP_INCIDENT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L426\",\n \"kind\": \"heading\",\n \"source_line\": 426,\n \"title\": \"FORUM_SMTP_FAILED_CONFIG_DISABLED_AFTER_MAILCOW_BAN_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L432\",\n \"kind\": \"heading\",\n \"source_line\": 432,\n \"title\": \"FORUM_OLD_CODEVIPE_CLOUD_BACKUP_STALE_AFTER_FRESH5_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L439\",\n \"kind\": \"heading\",\n \"source_line\": 439,\n \"title\": \"FORUM_RESTORE_DRILL_610_STATUS_FLAG_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L445\",\n \"kind\": \"heading\",\n \"source_line\": 445,\n \"title\": \"FORUM_XENFORO_MAIL_SMOKE_TEST_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L449\",\n \"kind\": \"heading\",\n \"source_line\": 449,\n \"title\": \"XENFORO_MAIL_SMOKE_623_INVALID_ROOT_PATH_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L456\",\n \"kind\": \"heading\",\n \"source_line\": 456,\n \"title\": \"FORUM_NEXT_CHAT_KNOWN_ERRORS_AND_CLOSED_INCIDENTS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L509\",\n \"kind\": \"heading\",\n \"source_line\": 509,\n \"title\": \"PARKED_DOMAINS_STAGE4_DNS01_PREFLIGHT_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L516\",\n \"kind\": \"heading\",\n \"source_line\": 516,\n \"title\": \"PARKED_DOMAINS_STAGE5_BASH_LOCAL_SETU_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L523\",\n \"kind\": \"heading\",\n \"source_line\": 523,\n \"title\": \"PARKED_DOMAINS_STAGE6_TEMP_HTTP_ROOT_VALIDATION_BUG_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L530\",\n \"kind\": \"heading\",\n \"source_line\": 530,\n \"title\": \"PARKED_DOMAINS_STAGE7_NEWFI_ROOT_ACME_REDIRECT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L535\",\n \"kind\": \"heading\",\n \"source_line\": 535,\n \"title\": \"PARKED_DOMAINS_STAGE8_DEFAULT_HTTP_TO_HTTPS_REDIRECT_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L541\",\n \"kind\": \"heading\",\n \"source_line\": 541,\n \"title\": \"PARKED_DOMAINS_STAGE9_NEWFI_EXACT_PROBE_NEEDED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L547\",\n \"kind\": \"heading\",\n \"source_line\": 547,\n \"title\": \"PARKED_DOMAINS_STAGE10_EXACT_NEWFI_PROBE_OK_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L553\",\n \"kind\": \"heading\",\n \"source_line\": 553,\n \"title\": \"PARKED_DOMAINS_STAGE11_LOW_ID_EXACT_ROUTE_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L560\",\n \"kind\": \"heading\",\n \"source_line\": 560,\n \"title\": \"PARKED_DOMAINS_SWITCH_TO_DNS01_AFTER_HTTP01_FAILURES_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L566\",\n \"kind\": \"heading\",\n \"source_line\": 566,\n \"title\": \"PARKED_DOMAINS_STAGE15_FALSE_LOCAL_VALIDATE_ROLLBACK_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L571\",\n \"kind\": \"heading\",\n \"source_line\": 571,\n \"title\": \"DOMAIN_ACTIONS_STAGE18_PLACEHOLDER_AND_RENEWAL_PROOF_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L575\",\n \"kind\": \"heading\",\n \"source_line\": 575,\n \"title\": \"GRAM1_ROOT_WWW_PLACEHOLDER_CLOSE_STAGE19_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L581\",\n \"kind\": \"heading\",\n \"source_line\": 581,\n \"title\": \"PVEPRO_EDGE_LANDING_STAGE21_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L587\",\n \"kind\": \"heading\",\n \"source_line\": 587,\n \"title\": \"PVEPRO_STAGE21_LANDING_SERVICE_FAILED_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L592\",\n \"kind\": \"heading\",\n \"source_line\": 592,\n \"title\": \"PVEPRO_STAGE22_VALIDATION_AND_COPY_GUARD_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L597\",\n \"kind\": \"heading\",\n \"source_line\": 597,\n \"title\": \"TAFTAUTO_CERT_AUTORENEW_BLOCKED_NO_PRIVATE_ACCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L603\",\n \"kind\": \"heading\",\n \"source_line\": 603,\n \"title\": \"TAFTAUTO_CERT_AUTORENEW_BLOCKED_NO_PRIVATE_ACCESS_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L609\",\n \"kind\": \"heading\",\n \"source_line\": 609,\n \"title\": \"TAFTAUTO_WG_STAGE24_SECRET_AND_IMPORT_RULE_20260701\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L615\",\n \"kind\": \"heading\",\n \"source_line\": 615,\n \"title\": \"TAFTAUTO_WG_PSK_ROTATION_SCRIPT_BROKE_DATAPLANE_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L620\",\n \"kind\": \"heading\",\n \"source_line\": 620,\n \"title\": \"TAFTAUTO_CERTBOT_CLOUDFLARE_PLUGIN_MISSING_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L624\",\n \"kind\": \"heading\",\n \"source_line\": 624,\n \"title\": \"HOMEPAGE_SERVICES_YAML_BAD_INDENT_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L628\",\n \"kind\": \"heading\",\n \"source_line\": 628,\n \"title\": \"HOMEPAGE_SERVICES_YAML_BAD_INDENT_REPAIR_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L632\",\n \"kind\": \"heading\",\n \"source_line\": 632,\n \"title\": \"TAFTAUTO_CERTBOT_DRYRUN_BAD_FLAG_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L636\",\n \"kind\": \"heading\",\n \"source_line\": 636,\n \"title\": \"TAFTAUTO_CERT_RENEW_DRYRUN_RATE_LIMITED_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L643\",\n \"kind\": \"heading\",\n \"source_line\": 643,\n \"title\": \"HOMEPAGE_XENFORO_INFO_INLINE_PYTHON_SYNTAX_ERROR_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L647\",\n \"kind\": \"heading\",\n \"source_line\": 647,\n \"title\": \"HOMEPAGE_USEFUL_ROUTER_NAME_MISMATCH_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L651\",\n \"kind\": \"heading\",\n \"source_line\": 651,\n \"title\": \"HOMEPAGE_USEFUL_ROUTER_CARD_NOT_FOUND_20260702\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L655\",\n \"kind\": \"heading\",\n \"source_line\": 655,\n \"title\": \"20260702_CF_TOKEN_AUDIT_BROKEN_COMMAND\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L661\",\n \"kind\": \"heading\",\n \"source_line\": 661,\n \"title\": \"LESSON_20260702_CROWDSEC_NETBIRD_EXIT_ROUTE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L668\",\n \"kind\": \"heading\",\n \"source_line\": 668,\n \"title\": \"LESSON_20260702_HOMEPAGE_MONITORS_REPAIR_NOT_DELETE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L674\",\n \"kind\": \"heading\",\n \"source_line\": 674,\n \"title\": \"LESSON_20260702_KUMA_ADD_ONE_MONITOR_ONLY\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L680\",\n \"kind\": \"heading\",\n \"source_line\": 680,\n \"title\": \"LESSON_20260702_DOCKGE_STALE_STACKS_NOT_CONTAINERS\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L686\",\n \"kind\": \"heading\",\n \"source_line\": 686,\n \"title\": \"STAGE4B_MASKED_SQL_QUERY_FAILURE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L691\",\n \"kind\": \"heading\",\n \"source_line\": 691,\n \"title\": \"STAGE4C_SCHEMA_MIGRATIONS_ID_ASSUMPTION_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L696\",\n \"kind\": \"heading\",\n \"source_line\": 696,\n \"title\": \"STAGE4C_PGDUMP_DEV_NULL_FSYNC_INVALID_PROBE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L702\",\n \"kind\": \"heading\",\n \"source_line\": 702,\n \"title\": \"STAGE4C_REMOTE_PREP_THIRD_SUBSTEP_FAILED_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L708\",\n \"kind\": \"heading\",\n \"source_line\": 708,\n \"title\": \"STAGE4C_REMOTE_PREP_GLOB_AFTER_CHMOD_ROOT_CAUSE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L713\",\n \"kind\": \"heading\",\n \"source_line\": 713,\n \"title\": \"STAGE4C_MIGRATION003_FINGERPRINT_DOLLAR_QUOTE_FAILURE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L718\",\n \"kind\": \"heading\",\n \"source_line\": 718,\n \"title\": \"STAGE4C_SEAL_OUTER_RC_MASKING_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L724\",\n \"kind\": \"heading\",\n \"source_line\": 724,\n \"title\": \"STAGE4C_DIAGNOSIS_EXPECTED_DERIVED_FILE_ON_VM180_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L729\",\n \"kind\": \"heading\",\n \"source_line\": 729,\n \"title\": \"STAGE4C_NO_JOBS_RUNNING_TEXT_COUNTED_AS_JOB_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L735\",\n \"kind\": \"heading\",\n \"source_line\": 735,\n \"title\": \"STAGE4D_ADAPTER_SOURCE_AUDIT_ABORTED_BEFORE_FINAL_MARKERS_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L741\",\n \"kind\": \"heading\",\n \"source_line\": 741,\n \"title\": \"STAGE4D_LOCAL_EXPANSION_OF_REMOTE_Q_UNDER_NOUNSET_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L747\",\n \"kind\": \"heading\",\n \"source_line\": 747,\n \"title\": \"STAGE4D_REMOTE_PYTHON311_ADAPTER_SELFTEST_RC1_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L752\",\n \"kind\": \"heading\",\n \"source_line\": 752,\n \"title\": \"STAGE4D_PYTHON311_FSTRING_COMPATIBILITY_AND_REPRO_VALIDATOR_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L759\",\n \"kind\": \"heading\",\n \"source_line\": 759,\n \"title\": \"STAGE4E_DESIGN_VALIDATOR_ABORTED_BEFORE_LOCAL_VALIDATION_MARKER_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L765\",\n \"kind\": \"heading\",\n \"source_line\": 765,\n \"title\": \"STAGE4E_VALIDATOR_SCANNED_PYC_AND_OWN_FORBIDDEN_LITERALS_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L772\",\n \"kind\": \"heading\",\n \"source_line\": 772,\n \"title\": \"STAGE4E_V2_VALIDATOR_FAILED_STATIC_COMPILE_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L778\",\n \"kind\": \"heading\",\n \"source_line\": 778,\n \"title\": \"STAGE4E_PIPESTATUS_LOST_AFTER_FIRST_ASSIGNMENT_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L784\",\n \"kind\": \"heading\",\n \"source_line\": 784,\n \"title\": \"STAGE4F_VALIDATOR_EXPECTED_HEALTH_REFRESH_FROM_NONWRITING_BACKUP_SCRIPT_20260714\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L791\",\n \"kind\": \"heading\",\n \"source_line\": 791,\n \"title\": \"STRICT_RULE_20260714_CLOSE_TAILS_IMMEDIATELY\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L798\",\n \"kind\": \"heading\",\n \"source_line\": 798,\n \"title\": \"ERROR_20260714_DEPENDENCY_FACT_QUERY_GLOBAL_LIMIT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L806\",\n \"kind\": \"heading\",\n \"source_line\": 806,\n \"title\": \"ERROR_20260714_COLLECTOR_PATCH_REQUIREMENT_PATTERN_MISMATCH\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L814\",\n \"kind\": \"heading\",\n \"source_line\": 814,\n \"title\": \"ERROR_20260714_PRIVILEGED_FILE_REDIRECTION_BEFORE_SUDO\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L822\",\n \"kind\": \"heading\",\n \"source_line\": 822,\n \"title\": \"ERROR_20260714_COLLECTOR_RUN_COLUMN_ASSUMPTION\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L830\",\n \"kind\": \"heading\",\n \"source_line\": 830,\n \"title\": \"ERROR_20260714_REMOTE_STDIN_ARGUMENT_SHIFT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L838\",\n \"kind\": \"heading\",\n \"source_line\": 838,\n \"title\": \"ERROR_20260714_OVERSIZED_COMMAND_PARSE_FAILURE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L847\",\n \"kind\": \"heading\",\n \"source_line\": 847,\n \"title\": \"ERROR_20260714_HOMELAB_ADMIN_HELP_RC_ASSUMPTION\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L856\",\n \"kind\": \"heading\",\n \"source_line\": 856,\n \"title\": \"ERROR_20260715_EXPECTED_NEGATIVE_RC_TRAP_CLASSIFICATION\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L864\",\n \"kind\": \"heading\",\n \"source_line\": 864,\n \"title\": \"ERROR_20260715_DUPLICATE_MACHINE_MARKER_COUNT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L875\",\n \"kind\": \"heading\",\n \"source_line\": 875,\n \"title\": \"ERROR_20260715_OUTER_WRAPPER_SHELL_SYNTAX\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L888\",\n \"kind\": \"heading\",\n \"source_line\": 888,\n \"title\": \"ERROR_20260715_INLINE_REMOTE_SHELL_IN_APPLY_PHASE\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L902\",\n \"kind\": \"heading\",\n \"source_line\": 902,\n \"title\": \"ERROR_20260715_OPTIONAL_RUN_DIRECTORY_FIND_UNDER_PIPEFAIL\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L912\",\n \"kind\": \"heading\",\n \"source_line\": 912,\n \"title\": \"ERROR_20260715_PG_CONSTRAINT_CONTYPE_CHAR_CONCAT\",\n \"status\": \"known\"\n },\n {\n \"id\": \"ERR-H-L925\",\n \"kind\": \"heading\",\n \"source_line\": 925,\n \"title\": \"ERROR_20260715_LIVE_COLLECTOR_VERIFIER_WRONG_PATH\",\n \"status\": \"known\"\n }\n ],\n \"rules\": [\n {\n \"id\": \"CHECK-1\",\n \"source_line\": 12,\n \"text\": \"команда не должна быть большим paste.\"\n },\n {\n \"id\": \"CHECK-2\",\n \"source_line\": 13,\n \"text\": \"команда не должна содержать большой here-doc.\"\n },\n {\n \"id\": \"CHECK-3\",\n \"source_line\": 14,\n \"text\": \"команда не должна смешивать Markdown, backticks и shell-логику.\"\n },\n {\n \"id\": \"CHECK-4\",\n \"source_line\": 15,\n \"text\": \"команда не должна иметь вложенный ssh с несколькими уровнями кавычек.\"\n },\n {\n \"id\": \"CHECK-5\",\n \"source_line\": 16,\n \"text\": \"команда не должна печатать секреты.\"\n },\n {\n \"id\": \"CHECK-6\",\n \"source_line\": 17,\n \"text\": \"если создаётся файл, сначала маленький безопасный шаг, потом проверка.\"\n },\n {\n \"id\": \"CHECK-7\",\n \"source_line\": 18,\n \"text\": \"если команда длиннее 8 строк, её нельзя давать в интерактивный shell.\"\n },\n {\n \"id\": \"CHECK-8\",\n \"source_line\": 19,\n \"text\": \"для edge-vm использовать debian@[PRIVATE_IP] и sudo.\"\n },\n {\n \"id\": \"CHECK-9\",\n \"source_line\": 20,\n \"text\": \"для forum-prod использовать pve02 и ключ [SENSITIVE_PATH]\n },\n {\n \"id\": \"CHECK-10\",\n \"source_line\": 21,\n \"text\": \"Corosync не трогать без отдельного плана и rollback.\"\n }\n ]\n}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 65c45d4..f63e975 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,5 +1,5 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=ERRORS-INDEX-001 +COMMAND_ID=ERRORS-INDEX-002 STATUS=OK RC=0 HOST=pve01 @@ -9,26 +9,23 @@ REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc -COMMAND_SHA256=280cb3910a51e34e4cd97ad077f10a28b2b911f5bc672977c54efa8325b01468 +COMMAND_SHA256=320d2e834c18cb3ecee1ad270cb372132a31f2c87781f769e32d2b277ac192d0 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGES_MADE=false SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=1a8a3b39313470910499ff5f400ab65de37d07de55347ff7bd7fafb4c8235afd -SANITIZED_OUTPUT_SHA256=1a8a3b39313470910499ff5f400ab65de37d07de55347ff7bd7fafb4c8235afd +RAW_EVIDENCE_SHA256=db3e029f3d7e9a846cd057979abf1d4a8e25d939d7a11c50a3c5f385608f1516 +SANITIZED_OUTPUT_SHA256=60cdef1a88d83032c74570ef700037f2b97060d0ae8e16d80e4f1474a12cc3e5 OUTPUT_BEGIN { "schema_version": 1, "status": "READY", - "generated_at_utc": "2026-07-21T07:10:17Z", - "source": { - "path": "/etc/pve/HOMELAB_ASSISTANT_ERROR_REGISTER.md", - "sha256": "ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc", - "immutable_context_command_id": "CONTEXT-SOURCES-FULL-002" - }, - "entry_count": 146, + "generated_at_utc": "2026-07-21T07:13:12.781160Z", + "source_sha256": "ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc", + "source_lines": 934, + "entry_count": 150, "rule_count": 10, "duplicate_ids": [], "entries": [ @@ -263,6 +260,34 @@ OUTPUT_BEGIN "title": "Ошибка: post-backup-pass-slo-reconciliation checked pve01 router health on edge-vm.", "status": "known" }, + { + "id": "ERR-H-L5", + "kind": "heading", + "source_line": 5, + "title": "Критические ошибки ассистента", + "status": "known" + }, + { + "id": "ERR-H-L11", + "kind": "heading", + "source_line": 11, + "title": "Жёсткие правила перед каждой командой", + "status": "known" + }, + { + "id": "ERR-H-L23", + "kind": "heading", + "source_line": 23, + "title": "Текущие важные факты", + "status": "known" + }, + { + "id": "ERR-H-L31", + "kind": "heading", + "source_line": 31, + "title": "Правило для справочника", + "status": "known" + }, { "id": "ERR-H-L174", "kind": "heading", @@ -1099,7 +1124,7 @@ OUTPUT_BEGIN { "id": "CHECK-9", "source_line": 20, - "text": "для forum-prod использовать pve02 и ключ [SENSITIVE_PATH]" + "text": "для forum-prod использовать pve02 и ключ [SENSITIVE_PATH] }, { "id": "CHECK-10",