31 lines
35 KiB
JSON
31 lines
35 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"command_id": "ERRORS-INDEX-001",
|
|
"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",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc",
|
|
"command_sha256": "280cb3910a51e34e4cd97ad077f10a28b2b911f5bc672977c54efa8325b01468",
|
|
"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": "1a8a3b39313470910499ff5f400ab65de37d07de55347ff7bd7fafb4c8235afd",
|
|
"sanitized_output_sha256": "1a8a3b39313470910499ff5f400ab65de37d07de55347ff7bd7fafb4c8235afd",
|
|
"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"
|
|
}
|