diff --git a/runtime/history/SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1.json b/runtime/history/SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1.json new file mode 100644 index 00000000..ad679a8e --- /dev/null +++ b/runtime/history/SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1", + "status": "FAIL", + "rc": 2, + "host": "pve01", + "mode": "change", + "component": "signalbot-cr0116-reconnect-reconciliation-health-stage", + "started_at_utc": "2026-09-17T13:46:16Z", + "finished_at_utc": "2026-09-17T13:46:19Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "1aa93eaa3da1bb04ed9e2f7aecf93356de85c96f8575e374c77787d45d2f79d8", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": true, + "result_contract_valid": true, + "result_contract_status": "FAIL", + "result_contract_error": null, + "command_rc": 2, + "changes_made": true, + "rollback_started": true, + "rollback_restored": true, + "mutation_outcome": "ROLLED_BACK", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "b7bfbbd53a72392b80ec4c60422e41b38f0ed045ae479d0659b6f01ec4af6a83", + "sanitized_output_sha256": "b7bfbbd53a72392b80ec4c60422e41b38f0ed045ae479d0659b6f01ec4af6a83", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "SIGNALBOT050_BEGIN=SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1\nSIGNALBOT050_PRE_HEAD=350b1bd3689a15c82b84b4b84b172732d9a8a0cc\nSIGNALBOT050_PREFLIGHT=PASS\nSIGNALBOT050_RED=PASS_EXPECTED_MISSING_RECONCILIATION_HEALTH\nSIGNALBOT050_COMPILE=PASS\nSIGNALBOT050_TARGETED_GREEN=6\nSIGNALBOT050_FULL_TAIL=..........................................................F............. [ 13%]\n........................................................................ [ 26%]\n........................................................................ [ 39%]\n........................................................................ [ 52%]\n........................................................................ [ 65%]\n........................................................................ [ 78%]\n........................................................................ [ 91%]\n................................................. [100%]\n=================================== FAILURES ===================================\n_ CR0116ReconnectScopeTests.test_historical_reconnect_is_not_global_prospective_poison _\n\nself = \n\n def test_historical_reconnect_is_not_global_prospective_poison(self):\n with tempfile.TemporaryDirectory() as td:\n path = Path(td) / \"source.db\"\n with SQLiteBitfinexSourceJournal(path, collection_start_at=T0) as journal:\n journal._db.execute(\n \"\"\"\n INSERT INTO sequence_events(\n session_id,source_sequence,received_at,event_kind\n ) VALUES(?,?,?,?)\n \"\"\",\n (\n \"old-session\",\n 10,\n (T0 + timedelta(hours=1)).isoformat(),\n \"RECONNECT\",\n ),\n )\n state = journal.current_prospective_source_state()\n> self.assertFalse(state.reconnect_detected)\nE AssertionError: True is not false\n\ntests/test_cr0116_reconnect_scope.py:42: AssertionError\n=========================== short test summary info ============================\nFAILED tests/test_cr0116_reconnect_scope.py::CR0116ReconnectScopeTests::test_historical_reconnect_is_not_global_prospective_poison\n1 failed, 552 passed in 1.23s\n\n\nSIGNALBOT050_EXCEPTION_CLASS=builtins.RuntimeError\nSIGNALBOT050_EXCEPTION_MSG_SHA256=d1f29e05182bf9414507df6ef381056bd58317ac3042ab37b013bab030b776d2\nSIGNALBOT050_ROLLBACK_STARTED=true\nSIGNALBOT050_ROLLBACK_RESTORED=true\nSIGNALBOT050_PRODUCTION_RUNTIME_MUTATION=NO\nSIGNALBOT050_REAL_EXCHANGE_EXECUTION=NO\nSIGNALBOT050_RETUNE_80_20=NO\nSIGNALBOT050_RETUNE_DEMONOV=NO\nSIGNALBOT050_MUTATION_OUTCOME=ROLLED_BACK\nHOMELAB_RESULT_CONTRACT={\"changes_made\":true,\"command_id\":\"SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1\",\"rollback_restored\":true,\"rollback_started\":true,\"status\":\"FAIL\",\"version\":1}\n" +} diff --git a/runtime/history/SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1.txt b/runtime/history/SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1.txt new file mode 100644 index 00000000..6256bd60 --- /dev/null +++ b/runtime/history/SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1.txt @@ -0,0 +1,88 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1 +STATUS=FAIL +RC=2 +HOST=pve01 +MODE=change +COMPONENT=signalbot-cr0116-reconnect-reconciliation-health-stage +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=1aa93eaa3da1bb04ed9e2f7aecf93356de85c96f8575e374c77787d45d2f79d8 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGE_DECLARED=true +RESULT_CONTRACT_VALID=true +RESULT_CONTRACT_STATUS=FAIL +RESULT_CONTRACT_ERROR=NONE +COMMAND_RC=2 +CHANGES_MADE=true +ROLLBACK_STARTED=true +ROLLBACK_RESTORED=true +MUTATION_OUTCOME=ROLLED_BACK +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=b7bfbbd53a72392b80ec4c60422e41b38f0ed045ae479d0659b6f01ec4af6a83 +SANITIZED_OUTPUT_SHA256=b7bfbbd53a72392b80ec4c60422e41b38f0ed045ae479d0659b6f01ec4af6a83 +OUTPUT_BEGIN +SIGNALBOT050_BEGIN=SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1 +SIGNALBOT050_PRE_HEAD=350b1bd3689a15c82b84b4b84b172732d9a8a0cc +SIGNALBOT050_PREFLIGHT=PASS +SIGNALBOT050_RED=PASS_EXPECTED_MISSING_RECONCILIATION_HEALTH +SIGNALBOT050_COMPILE=PASS +SIGNALBOT050_TARGETED_GREEN=6 +SIGNALBOT050_FULL_TAIL=..........................................................F............. [ 13%] +........................................................................ [ 26%] +........................................................................ [ 39%] +........................................................................ [ 52%] +........................................................................ [ 65%] +........................................................................ [ 78%] +........................................................................ [ 91%] +................................................. [100%] +=================================== FAILURES =================================== +_ CR0116ReconnectScopeTests.test_historical_reconnect_is_not_global_prospective_poison _ + +self = + + def test_historical_reconnect_is_not_global_prospective_poison(self): + with tempfile.TemporaryDirectory() as td: + path = Path(td) / "source.db" + with SQLiteBitfinexSourceJournal(path, collection_start_at=T0) as journal: + journal._db.execute( + """ + INSERT INTO sequence_events( + session_id,source_sequence,received_at,event_kind + ) VALUES(?,?,?,?) + """, + ( + "old-session", + 10, + (T0 + timedelta(hours=1)).isoformat(), + "RECONNECT", + ), + ) + state = journal.current_prospective_source_state() +> self.assertFalse(state.reconnect_detected) +E AssertionError: True is not false + +tests/test_cr0116_reconnect_scope.py:42: AssertionError +=========================== short test summary info ============================ +FAILED tests/test_cr0116_reconnect_scope.py::CR0116ReconnectScopeTests::test_historical_reconnect_is_not_global_prospective_poison +1 failed, 552 passed in 1.23s + + +SIGNALBOT050_EXCEPTION_CLASS=builtins.RuntimeError +SIGNALBOT050_EXCEPTION_MSG_SHA256=d1f29e05182bf9414507df6ef381056bd58317ac3042ab37b013bab030b776d2 +SIGNALBOT050_ROLLBACK_STARTED=true +SIGNALBOT050_ROLLBACK_RESTORED=true +SIGNALBOT050_PRODUCTION_RUNTIME_MUTATION=NO +SIGNALBOT050_REAL_EXCHANGE_EXECUTION=NO +SIGNALBOT050_RETUNE_80_20=NO +SIGNALBOT050_RETUNE_DEMONOV=NO +SIGNALBOT050_MUTATION_OUTCOME=ROLLED_BACK +HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 7ed83f96..ad679a8e 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,38 +1,38 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "SUPPORT-260917-XENFORO-FLEET-ERROR-UNKNOWN-DIAGNOSTIC-494D1", - "status": "OK", - "rc": 0, + "command_id": "SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1", + "status": "FAIL", + "rc": 2, "host": "pve01", - "mode": "read-only", - "component": "xenforo-fleet-error-unknown-diagnostic", - "started_at_utc": "2026-09-17T13:36:41Z", - "finished_at_utc": "2026-09-17T13:36:50Z", + "mode": "change", + "component": "signalbot-cr0116-reconnect-reconciliation-health-stage", + "started_at_utc": "2026-09-17T13:46:16Z", + "finished_at_utc": "2026-09-17T13:46:19Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "733cdc65fa6d5760a164090b967371586be253ab9fd6f7884fe6560cd2969ba6", + "command_sha256": "1aa93eaa3da1bb04ed9e2f7aecf93356de85c96f8575e374c77787d45d2f79d8", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, - "change_declared": false, + "change_declared": true, "result_contract_valid": true, - "result_contract_status": null, + "result_contract_status": "FAIL", "result_contract_error": null, - "command_rc": 0, - "changes_made": false, - "rollback_started": false, - "rollback_restored": null, - "mutation_outcome": "NO_MUTATION", + "command_rc": 2, + "changes_made": true, + "rollback_started": true, + "rollback_restored": true, + "mutation_outcome": "ROLLED_BACK", "sanitized": true, "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "83bebde93c77e762139950d86a7a0e871ba9c373a1b33561584bbd762cba3a54", - "sanitized_output_sha256": "83bebde93c77e762139950d86a7a0e871ba9c373a1b33561584bbd762cba3a54", + "raw_evidence_sha256": "b7bfbbd53a72392b80ec4c60422e41b38f0ed045ae479d0659b6f01ec4af6a83", + "sanitized_output_sha256": "b7bfbbd53a72392b80ec4c60422e41b38f0ed045ae479d0659b6f01ec4af6a83", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "ERR494D1_BEGIN=\nERR494D1_DECISION=PASS_UNKNOWN_ERROR_DIAGNOSTIC\nERR494D1_NEXT_GATE=READY_FOR_EXACT_REPAIR_494R4\nERR494D1_SAFE_REPORT={\"class_counts\":{\"diagnostic_sql\":7,\"legacy_mail_transport\":3,\"other\":10,\"repair_probe\":2},\"commands_remaining_to_full_finish\":2,\"decision\":\"PASS_UNKNOWN_ERROR_DIAGNOSTIC\",\"next_gate\":\"READY_FOR_EXACT_REPAIR_494R4\",\"row_count_total\":22,\"scope\":\"READ_ONLY\",\"sites\":{\"codevipe.ru\":{\"board_host\":\"codevipe.ru\",\"class_counts\":{\"diagnostic_sql\":7,\"legacy_mail_transport\":1,\"other\":0,\"repair_probe\":2},\"ok\":true,\"row_count\":10,\"rows\":[{\"class\":\"legacy_mail_transport\",\"error_id\":1,\"exception_date\":1788999001,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 65: sendmail: envelope from address not accepted by the server sendmail: server message: 553 5.7.1 Sender address rejected: user not found. 1788999002-1ACLU4egAmI0-BvLQE2bE sendmail: could not send mail (account default from /etc/msmtprc)\",\"message_sha256\":\"d8bb954faf8b7d710bda13ff1ffd4f6cda4d73bd7160b8b2025b9fab4317f503\"},{\"class\":\"diagnostic_sql\",\"error_id\":2,\"exception_date\":1789642925,\"exception_type\":\"XF\\\\Db\\\\Exception\",\"file\":\"AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'\",\"message_sha256\":\"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc\"},{\"class\":\"diagnostic_sql\",\"error_id\":3,\"exception_date\":1789644830,\"exception_type\":\"XF\\\\Db\\\\Exception\",\"file\":\"AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'\",\"message_sha256\":\"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc\"},{\"class\":\"diagnostic_sql\",\"error_id\":4,\"exception_date\":1789646777,\"exception_type\":\"XF\\\\Db\\\\Exception\",\"file\":\"AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'\",\"message_sha256\":\"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc\"},{\"class\":\"diagnostic_sql\",\"error_id\":5,\"exception_date\":1789647120,\"exception_type\":\"XF\\\\Db\\\\Exception\",\"file\":\"AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'\",\"message_sha256\":\"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc\"},{\"class\":\"diagnostic_sql\",\"error_id\":6,\"exception_date\":1789647386,\"exception_type\":\"XF\\\\Db\\\\Exception\",\"file\":\"AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'\",\"message_sha256\":\"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc\"},{\"class\":\"diagnostic_sql\",\"error_id\":7,\"exception_date\":1789647759,\"exception_type\":\"XF\\\\Db\\\\Exception\",\"file\":\"AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'\",\"message_sha256\":\"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc\"},{\"class\":\"diagnostic_sql\",\"error_id\":8,\"exception_date\":1789648013,\"exception_type\":\"XF\\\\Db\\\\Exception\",\"file\":\"AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'\",\"message_sha256\":\"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc\"},{\"class\":\"repair_probe\",\"error_id\":9,\"exception_date\":1789651204,\"exception_type\":\"ErrorException\",\"file\":\"w2-494-qdvp2eei.php\",\"line\":15,\"message\":\"[E_WARNING] Array to string conversion\",\"message_sha256\":\"ab551ff9e1a92cf14aa803fc148705547f810aea8482203c063ebcc32a68e32e\"},{\"class\":\"repair_probe\",\"error_id\":10,\"exception_date\":1789651528,\"exception_type\":\"ErrorException\",\"file\":\"w2-494r2-umdn4gec.php\",\"line\":24,\"message\":\"[E_WARNING] Array to string conversion\",\"message_sha256\":\"ab551ff9e1a92cf14aa803fc148705547f810aea8482203c063ebcc32a68e32e\"}],\"stage\":\"DONE\"},\"dsmods.ru\":{\"board_host\":\"dsmods.ru\",\"class_counts\":{\"diagnostic_sql\":0,\"legacy_mail_transport\":1,\"other\":0,\"repair_probe\":0},\"ok\":true,\"row_count\":1,\"rows\":[{\"class\":\"legacy_mail_transport\",\"error_id\":2,\"exception_date\":1788999006,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 65: sendmail: envelope from address not accepted by the server sendmail: server message: 553 5.7.1 Sender address rejected: user not found. 1788999007-7ACYnudg6mI0-wrzZ9ta2 sendmail: could not send mail (account default from /etc/msmtprc)\",\"message_sha256\":\"1ced1378176e4d4da96a412862fca5ff9ddf1fe8431c4c94d663c231f1231232\"}],\"stage\":\"DONE\"},\"gamevipe.ru\":{\"board_host\":\"gamevipe.ru\",\"class_counts\":{\"diagnostic_sql\":0,\"legacy_mail_transport\":0,\"other\":0,\"repair_probe\":0},\"ok\":true,\"row_count\":0,\"rows\":[],\"stage\":\"DONE\"},\"hkmods.ru\":{\"board_host\":\"hkmods.ru\",\"class_counts\":{\"diagnostic_sql\":0,\"legacy_mail_transport\":0,\"other\":10,\"repair_probe\":0},\"ok\":true,\"row_count\":10,\"rows\":[{\"class\":\"other\",\"error_id\":3,\"exception_date\":1787678522,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available\",\"message_sha256\":\"c898e474749cfb43091023c896e572b18be85160cf7259eeff01f8655e3b9bfd\"},{\"class\":\"other\",\"error_id\":4,\"exception_date\":1787744837,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available\",\"message_sha256\":\"0616ce38b07b3df85d5a7d635ef4fe8d874d62fc967593ccb4ba6f838a179343\"},{\"class\":\"other\",\"error_id\":5,\"exception_date\":1787744959,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available\",\"message_sha256\":\"0616ce38b07b3df85d5a7d635ef4fe8d874d62fc967593ccb4ba6f838a179343\"},{\"class\":\"other\",\"error_id\":6,\"exception_date\":1787749158,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available\",\"message_sha256\":\"c3ea2bf328a479dd10d0666d940d9530860e6ed56071da6d0d32147293d9ebf9\"},{\"class\":\"other\",\"error_id\":7,\"exception_date\":1787749342,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available\",\"message_sha256\":\"c3ea2bf328a479dd10d0666d940d9530860e6ed56071da6d0d32147293d9ebf9\"},{\"class\":\"other\",\"error_id\":8,\"exception_date\":1787749493,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available\",\"message_sha256\":\"c3ea2bf328a479dd10d0666d940d9530860e6ed56071da6d0d32147293d9ebf9\"},{\"class\":\"other\",\"error_id\":9,\"exception_date\":1787749519,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available\",\"message_sha256\":\"e156d63fa0fe7d602eea047801ad73b430660412728518ac35f27aef3ce6b7a5\"},{\"class\":\"other\",\"error_id\":10,\"exception_date\":1787814122,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available\",\"message_sha256\":\"e156d63fa0fe7d602eea047801ad73b430660412728518ac35f27aef3ce6b7a5\"},{\"class\":\"other\",\"error_id\":11,\"exception_date\":1788075574,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available\",\"message_sha256\":\"3c4196fea2eed2b5aa6556c8540176a476ad4b878816d484f4638c30fb246810\"},{\"class\":\"other\",\"error_id\":12,\"exception_date\":1788075788,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available\",\"message_sha256\":\"3c4196fea2eed2b5aa6556c8540176a476ad4b878816d484f4638c30fb246810\"}],\"stage\":\"DONE\"},\"kingofwolk.ru\":{\"board_host\":\"kingofwolk.ru\",\"class_counts\":{\"diagnostic_sql\":0,\"legacy_mail_transport\":0,\"other\":0,\"repair_probe\":0},\"ok\":true,\"row_count\":0,\"rows\":[],\"stage\":\"DONE\"},\"newfi.ru\":{\"board_host\":\"newfi.ru\",\"class_counts\":{\"diagnostic_sql\":0,\"legacy_mail_transport\":0,\"other\":0,\"repair_probe\":0},\"ok\":true,\"row_count\":0,\"rows\":[],\"stage\":\"DONE\"},\"zakrutim.ru\":{\"board_host\":\"zakrutim.ru\",\"class_counts\":{\"diagnostic_sql\":0,\"legacy_mail_transport\":1,\"other\":0,\"repair_probe\":0},\"ok\":true,\"row_count\":1,\"rows\":[{\"class\":\"legacy_mail_transport\",\"error_id\":1,\"exception_date\":1788999005,\"exception_type\":\"Symfony\\\\Component\\\\Mailer\\\\Exception\\\\TransportException\",\"file\":\"ProcessStream.php\",\"line\":74,\"message\":\"Email to from failed: Process failed with exit code 65: sendmail: envelope from address not accepted by the server sendmail: server message: 553 5.7.1 Sender address rejected: user not found. 1788999006-6ACgTJhfxuQ0-ykq2gT2m sendmail: could not send mail (account default from /etc/msmtprc)\",\"message_sha256\":\"25b08ecc81193af929223d042c71e77a0285ebac4c2084bfb2d018dd78984f52\"}],\"stage\":\"DONE\"}},\"unknown_rows_exact\":10,\"vm211_excluded\":true}\nERR494D1_END=\n" + "output": "SIGNALBOT050_BEGIN=SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1\nSIGNALBOT050_PRE_HEAD=350b1bd3689a15c82b84b4b84b172732d9a8a0cc\nSIGNALBOT050_PREFLIGHT=PASS\nSIGNALBOT050_RED=PASS_EXPECTED_MISSING_RECONCILIATION_HEALTH\nSIGNALBOT050_COMPILE=PASS\nSIGNALBOT050_TARGETED_GREEN=6\nSIGNALBOT050_FULL_TAIL=..........................................................F............. [ 13%]\n........................................................................ [ 26%]\n........................................................................ [ 39%]\n........................................................................ [ 52%]\n........................................................................ [ 65%]\n........................................................................ [ 78%]\n........................................................................ [ 91%]\n................................................. [100%]\n=================================== FAILURES ===================================\n_ CR0116ReconnectScopeTests.test_historical_reconnect_is_not_global_prospective_poison _\n\nself = \n\n def test_historical_reconnect_is_not_global_prospective_poison(self):\n with tempfile.TemporaryDirectory() as td:\n path = Path(td) / \"source.db\"\n with SQLiteBitfinexSourceJournal(path, collection_start_at=T0) as journal:\n journal._db.execute(\n \"\"\"\n INSERT INTO sequence_events(\n session_id,source_sequence,received_at,event_kind\n ) VALUES(?,?,?,?)\n \"\"\",\n (\n \"old-session\",\n 10,\n (T0 + timedelta(hours=1)).isoformat(),\n \"RECONNECT\",\n ),\n )\n state = journal.current_prospective_source_state()\n> self.assertFalse(state.reconnect_detected)\nE AssertionError: True is not false\n\ntests/test_cr0116_reconnect_scope.py:42: AssertionError\n=========================== short test summary info ============================\nFAILED tests/test_cr0116_reconnect_scope.py::CR0116ReconnectScopeTests::test_historical_reconnect_is_not_global_prospective_poison\n1 failed, 552 passed in 1.23s\n\n\nSIGNALBOT050_EXCEPTION_CLASS=builtins.RuntimeError\nSIGNALBOT050_EXCEPTION_MSG_SHA256=d1f29e05182bf9414507df6ef381056bd58317ac3042ab37b013bab030b776d2\nSIGNALBOT050_ROLLBACK_STARTED=true\nSIGNALBOT050_ROLLBACK_RESTORED=true\nSIGNALBOT050_PRODUCTION_RUNTIME_MUTATION=NO\nSIGNALBOT050_REAL_EXCHANGE_EXECUTION=NO\nSIGNALBOT050_RETUNE_80_20=NO\nSIGNALBOT050_RETUNE_DEMONOV=NO\nSIGNALBOT050_MUTATION_OUTCOME=ROLLED_BACK\nHOMELAB_RESULT_CONTRACT={\"changes_made\":true,\"command_id\":\"SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1\",\"rollback_restored\":true,\"rollback_started\":true,\"status\":\"FAIL\",\"version\":1}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 9ea97173..6256bd60 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,37 +1,88 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=SUPPORT-260917-XENFORO-FLEET-ERROR-UNKNOWN-DIAGNOSTIC-494D1 -STATUS=OK -RC=0 +COMMAND_ID=SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1 +STATUS=FAIL +RC=2 HOST=pve01 -MODE=read-only -COMPONENT=xenforo-fleet-error-unknown-diagnostic +MODE=change +COMPONENT=signalbot-cr0116-reconnect-reconciliation-health-stage REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=733cdc65fa6d5760a164090b967371586be253ab9fd6f7884fe6560cd2969ba6 +COMMAND_SHA256=1aa93eaa3da1bb04ed9e2f7aecf93356de85c96f8575e374c77787d45d2f79d8 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true -CHANGE_DECLARED=false +CHANGE_DECLARED=true RESULT_CONTRACT_VALID=true -RESULT_CONTRACT_STATUS=NOT_APPLICABLE +RESULT_CONTRACT_STATUS=FAIL RESULT_CONTRACT_ERROR=NONE -COMMAND_RC=0 -CHANGES_MADE=false -ROLLBACK_STARTED=false -ROLLBACK_RESTORED=null -MUTATION_OUTCOME=NO_MUTATION +COMMAND_RC=2 +CHANGES_MADE=true +ROLLBACK_STARTED=true +ROLLBACK_RESTORED=true +MUTATION_OUTCOME=ROLLED_BACK SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=83bebde93c77e762139950d86a7a0e871ba9c373a1b33561584bbd762cba3a54 -SANITIZED_OUTPUT_SHA256=83bebde93c77e762139950d86a7a0e871ba9c373a1b33561584bbd762cba3a54 +RAW_EVIDENCE_SHA256=b7bfbbd53a72392b80ec4c60422e41b38f0ed045ae479d0659b6f01ec4af6a83 +SANITIZED_OUTPUT_SHA256=b7bfbbd53a72392b80ec4c60422e41b38f0ed045ae479d0659b6f01ec4af6a83 OUTPUT_BEGIN -ERR494D1_BEGIN= -ERR494D1_DECISION=PASS_UNKNOWN_ERROR_DIAGNOSTIC -ERR494D1_NEXT_GATE=READY_FOR_EXACT_REPAIR_494R4 -ERR494D1_SAFE_REPORT={"class_counts":{"diagnostic_sql":7,"legacy_mail_transport":3,"other":10,"repair_probe":2},"commands_remaining_to_full_finish":2,"decision":"PASS_UNKNOWN_ERROR_DIAGNOSTIC","next_gate":"READY_FOR_EXACT_REPAIR_494R4","row_count_total":22,"scope":"READ_ONLY","sites":{"codevipe.ru":{"board_host":"codevipe.ru","class_counts":{"diagnostic_sql":7,"legacy_mail_transport":1,"other":0,"repair_probe":2},"ok":true,"row_count":10,"rows":[{"class":"legacy_mail_transport","error_id":1,"exception_date":1788999001,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 65: sendmail: envelope from address not accepted by the server sendmail: server message: 553 5.7.1 Sender address rejected: user not found. 1788999002-1ACLU4egAmI0-BvLQE2bE sendmail: could not send mail (account default from /etc/msmtprc)","message_sha256":"d8bb954faf8b7d710bda13ff1ffd4f6cda4d73bd7160b8b2025b9fab4317f503"},{"class":"diagnostic_sql","error_id":2,"exception_date":1789642925,"exception_type":"XF\\Db\\Exception","file":"AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'","message_sha256":"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc"},{"class":"diagnostic_sql","error_id":3,"exception_date":1789644830,"exception_type":"XF\\Db\\Exception","file":"AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'","message_sha256":"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc"},{"class":"diagnostic_sql","error_id":4,"exception_date":1789646777,"exception_type":"XF\\Db\\Exception","file":"AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'","message_sha256":"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc"},{"class":"diagnostic_sql","error_id":5,"exception_date":1789647120,"exception_type":"XF\\Db\\Exception","file":"AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'","message_sha256":"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc"},{"class":"diagnostic_sql","error_id":6,"exception_date":1789647386,"exception_type":"XF\\Db\\Exception","file":"AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'","message_sha256":"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc"},{"class":"diagnostic_sql","error_id":7,"exception_date":1789647759,"exception_type":"XF\\Db\\Exception","file":"AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'","message_sha256":"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc"},{"class":"diagnostic_sql","error_id":8,"exception_date":1789648013,"exception_type":"XF\\Db\\Exception","file":"AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'r.option_group_id' in 'SELECT'","message_sha256":"e85c9cbfc78c55b1eb3b2708f2a04ca9a3fac3ad349f46b1f572f94b3c3833dc"},{"class":"repair_probe","error_id":9,"exception_date":1789651204,"exception_type":"ErrorException","file":"w2-494-qdvp2eei.php","line":15,"message":"[E_WARNING] Array to string conversion","message_sha256":"ab551ff9e1a92cf14aa803fc148705547f810aea8482203c063ebcc32a68e32e"},{"class":"repair_probe","error_id":10,"exception_date":1789651528,"exception_type":"ErrorException","file":"w2-494r2-umdn4gec.php","line":24,"message":"[E_WARNING] Array to string conversion","message_sha256":"ab551ff9e1a92cf14aa803fc148705547f810aea8482203c063ebcc32a68e32e"}],"stage":"DONE"},"dsmods.ru":{"board_host":"dsmods.ru","class_counts":{"diagnostic_sql":0,"legacy_mail_transport":1,"other":0,"repair_probe":0},"ok":true,"row_count":1,"rows":[{"class":"legacy_mail_transport","error_id":2,"exception_date":1788999006,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 65: sendmail: envelope from address not accepted by the server sendmail: server message: 553 5.7.1 Sender address rejected: user not found. 1788999007-7ACYnudg6mI0-wrzZ9ta2 sendmail: could not send mail (account default from /etc/msmtprc)","message_sha256":"1ced1378176e4d4da96a412862fca5ff9ddf1fe8431c4c94d663c231f1231232"}],"stage":"DONE"},"gamevipe.ru":{"board_host":"gamevipe.ru","class_counts":{"diagnostic_sql":0,"legacy_mail_transport":0,"other":0,"repair_probe":0},"ok":true,"row_count":0,"rows":[],"stage":"DONE"},"hkmods.ru":{"board_host":"hkmods.ru","class_counts":{"diagnostic_sql":0,"legacy_mail_transport":0,"other":10,"repair_probe":0},"ok":true,"row_count":10,"rows":[{"class":"other","error_id":3,"exception_date":1787678522,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available","message_sha256":"c898e474749cfb43091023c896e572b18be85160cf7259eeff01f8655e3b9bfd"},{"class":"other","error_id":4,"exception_date":1787744837,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available","message_sha256":"0616ce38b07b3df85d5a7d635ef4fe8d874d62fc967593ccb4ba6f838a179343"},{"class":"other","error_id":5,"exception_date":1787744959,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available","message_sha256":"0616ce38b07b3df85d5a7d635ef4fe8d874d62fc967593ccb4ba6f838a179343"},{"class":"other","error_id":6,"exception_date":1787749158,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available","message_sha256":"c3ea2bf328a479dd10d0666d940d9530860e6ed56071da6d0d32147293d9ebf9"},{"class":"other","error_id":7,"exception_date":1787749342,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available","message_sha256":"c3ea2bf328a479dd10d0666d940d9530860e6ed56071da6d0d32147293d9ebf9"},{"class":"other","error_id":8,"exception_date":1787749493,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available","message_sha256":"c3ea2bf328a479dd10d0666d940d9530860e6ed56071da6d0d32147293d9ebf9"},{"class":"other","error_id":9,"exception_date":1787749519,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available","message_sha256":"e156d63fa0fe7d602eea047801ad73b430660412728518ac35f27aef3ce6b7a5"},{"class":"other","error_id":10,"exception_date":1787814122,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available","message_sha256":"e156d63fa0fe7d602eea047801ad73b430660412728518ac35f27aef3ce6b7a5"},{"class":"other","error_id":11,"exception_date":1788075574,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available","message_sha256":"3c4196fea2eed2b5aa6556c8540176a476ad4b878816d484f4638c30fb246810"},{"class":"other","error_id":12,"exception_date":1788075788,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 78: sendmail: account default not found: no configuration file available","message_sha256":"3c4196fea2eed2b5aa6556c8540176a476ad4b878816d484f4638c30fb246810"}],"stage":"DONE"},"kingofwolk.ru":{"board_host":"kingofwolk.ru","class_counts":{"diagnostic_sql":0,"legacy_mail_transport":0,"other":0,"repair_probe":0},"ok":true,"row_count":0,"rows":[],"stage":"DONE"},"newfi.ru":{"board_host":"newfi.ru","class_counts":{"diagnostic_sql":0,"legacy_mail_transport":0,"other":0,"repair_probe":0},"ok":true,"row_count":0,"rows":[],"stage":"DONE"},"zakrutim.ru":{"board_host":"zakrutim.ru","class_counts":{"diagnostic_sql":0,"legacy_mail_transport":1,"other":0,"repair_probe":0},"ok":true,"row_count":1,"rows":[{"class":"legacy_mail_transport","error_id":1,"exception_date":1788999005,"exception_type":"Symfony\\Component\\Mailer\\Exception\\TransportException","file":"ProcessStream.php","line":74,"message":"Email to from failed: Process failed with exit code 65: sendmail: envelope from address not accepted by the server sendmail: server message: 553 5.7.1 Sender address rejected: user not found. 1788999006-6ACgTJhfxuQ0-ykq2gT2m sendmail: could not send mail (account default from /etc/msmtprc)","message_sha256":"25b08ecc81193af929223d042c71e77a0285ebac4c2084bfb2d018dd78984f52"}],"stage":"DONE"}},"unknown_rows_exact":10,"vm211_excluded":true} -ERR494D1_END= +SIGNALBOT050_BEGIN=SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1 +SIGNALBOT050_PRE_HEAD=350b1bd3689a15c82b84b4b84b172732d9a8a0cc +SIGNALBOT050_PREFLIGHT=PASS +SIGNALBOT050_RED=PASS_EXPECTED_MISSING_RECONCILIATION_HEALTH +SIGNALBOT050_COMPILE=PASS +SIGNALBOT050_TARGETED_GREEN=6 +SIGNALBOT050_FULL_TAIL=..........................................................F............. [ 13%] +........................................................................ [ 26%] +........................................................................ [ 39%] +........................................................................ [ 52%] +........................................................................ [ 65%] +........................................................................ [ 78%] +........................................................................ [ 91%] +................................................. [100%] +=================================== FAILURES =================================== +_ CR0116ReconnectScopeTests.test_historical_reconnect_is_not_global_prospective_poison _ + +self = + + def test_historical_reconnect_is_not_global_prospective_poison(self): + with tempfile.TemporaryDirectory() as td: + path = Path(td) / "source.db" + with SQLiteBitfinexSourceJournal(path, collection_start_at=T0) as journal: + journal._db.execute( + """ + INSERT INTO sequence_events( + session_id,source_sequence,received_at,event_kind + ) VALUES(?,?,?,?) + """, + ( + "old-session", + 10, + (T0 + timedelta(hours=1)).isoformat(), + "RECONNECT", + ), + ) + state = journal.current_prospective_source_state() +> self.assertFalse(state.reconnect_detected) +E AssertionError: True is not false + +tests/test_cr0116_reconnect_scope.py:42: AssertionError +=========================== short test summary info ============================ +FAILED tests/test_cr0116_reconnect_scope.py::CR0116ReconnectScopeTests::test_historical_reconnect_is_not_global_prospective_poison +1 failed, 552 passed in 1.23s + + +SIGNALBOT050_EXCEPTION_CLASS=builtins.RuntimeError +SIGNALBOT050_EXCEPTION_MSG_SHA256=d1f29e05182bf9414507df6ef381056bd58317ac3042ab37b013bab030b776d2 +SIGNALBOT050_ROLLBACK_STARTED=true +SIGNALBOT050_ROLLBACK_RESTORED=true +SIGNALBOT050_PRODUCTION_RUNTIME_MUTATION=NO +SIGNALBOT050_REAL_EXCHANGE_EXECUTION=NO +SIGNALBOT050_RETUNE_80_20=NO +SIGNALBOT050_RETUNE_DEMONOV=NO +SIGNALBOT050_MUTATION_OUTCOME=ROLLED_BACK +HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-050R1","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1} OUTPUT_END CHAT_OUTPUT_END