39 lines
16 KiB
JSON
39 lines
16 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"command_id": "SIGNALBOT-260921-SEMANTIC-CONFLICT-RCA-052SEM1",
|
|
"status": "OK",
|
|
"rc": 0,
|
|
"host": "pve01",
|
|
"mode": "read-only",
|
|
"component": "signalbot-semantic-conflict-rca",
|
|
"started_at_utc": "2026-09-21T06:03:29Z",
|
|
"finished_at_utc": "2026-09-21T06:03:33Z",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
|
|
"command_sha256": "799aae26989afb94d89f08d220301cf95e7fe17a020c7a93169a9901c4187e90",
|
|
"duplicate_failed_command_blocked": false,
|
|
"block_reason": null,
|
|
"execution_started": true,
|
|
"change_declared": false,
|
|
"result_contract_valid": true,
|
|
"result_contract_status": null,
|
|
"result_contract_error": null,
|
|
"command_rc": 0,
|
|
"changes_made": false,
|
|
"rollback_started": false,
|
|
"rollback_restored": null,
|
|
"mutation_outcome": "NO_MUTATION",
|
|
"sanitized": true,
|
|
"secrets_included": false,
|
|
"private_addresses_included": false,
|
|
"raw_evidence_retained_locally": true,
|
|
"raw_evidence_sha256": "d5c2a64daf8587b3999184cd18a7471783ccf62b6539a4e62e137bc360c56ab4",
|
|
"sanitized_output_sha256": "d5c2a64daf8587b3999184cd18a7471783ccf62b6539a4e62e137bc360c56ab4",
|
|
"output_truncated_in_json": false,
|
|
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
|
|
"output": "SIGNALBOT052SEM1_RESULT={\"outer_rc\":0,\"guest_exitcode\":0,\"rca\":{\"ok\":true,\"source_context\":[[60,\"\"],[61,\"@dataclass(frozen=True)\"],[62,\"class ReconciliationWindow:\"],[63,\" window_id: str\"],[64,\" reconnect_event_seq: int\"],[65,\" reconnect_received_at: datetime\"],[66,\" previous_trade_identity: str\"],[67,\" previous_trade_mts: datetime\"],[68,\" next_trade_identity: str\"],[69,\" next_trade_mts: datetime\"],[70,\" status: ReconciliationStatus\"],[71,\" evidence_sha256: str\"],[72,\" recovered_row_count: int\"],[73,\" failure_reason: str\"],[74,\" created_at: datetime\"],[182,\" order_keys: list[tuple[datetime, int]] = []\"],[183,\" for raw in payload:\"],[184,\" if not isinstance(raw, list):\"],[185,\" raise DemonovError(\\\"Bitfinex REST trade row malformed\\\")\"],[186,\" trade = normalize_bitfinex_rest_trade(raw)\"],[187,\" raw_rows.append(list(raw[:4]))\"],[188,\" prior = seen.get(trade.trade_identity)\"],[189,\" if prior is not None:\"],[190,\" if prior != trade.semantic_hash:\"],[191,\" raise DemonovError(\\\"Bitfinex REST trade semantic conflict\\\")\"],[192,\" continue\"],[193,\" seen[trade.trade_identity] = trade.semantic_hash\"],[194,\" normalized.append(trade)\"],[195,\" order_keys.append((trade.mts, trade.trade_id))\"],[196,\" if order_keys != sorted(order_keys):\"],[197,\" normalized.sort(key=lambda trade: (trade.mts, trade.trade_id))\"],[198,\"\"],[199,\" evidence_sha256 = canonical_hash(\"],[246,\" evidence_sha256=batch.evidence_sha256,\"],[247,\" failure_reason=\\\"REST_NO_FORWARD_PROOF\\\",\"],[248,\" resolved_at=resolved_at,\"],[249,\" )\"],[250,\"\"],[251,\" for trade in batch.trades:\"],[252,\" existing = journal.latest_trade_semantic_hash(trade.trade_identity)\"],[253,\" if existing is not None and existing != trade.semantic_hash:\"],[254,\" return journal.mark_reconciliation_unresolved(\"],[255,\" window_id,\"],[256,\" evidence_sha256=batch.evidence_sha256,\"],[257,\" failure_reason=\\\"REST_SEMANTIC_CONFLICT\\\",\"],[258,\" resolved_at=resolved_at,\"],[259,\" )\"],[260,\"\"],[261,\" recovered = 0\"],[262,\" for index, trade in enumerate(batch.trades):\"],[263,\" receipt = SourceReceiptV1.build(\"],[277,\" window_id,\"],[278,\" evidence_sha256=batch.evidence_sha256,\"],[279,\" failure_reason=f\\\"REST_INSERT_{result}\\\",\"],[280,\" resolved_at=resolved_at,\"],[281,\" )\"],[282,\"\"],[283,\" if not journal.has_trade_identity(window.previous_trade_identity):\"],[284,\" return journal.mark_reconciliation_unresolved(\"],[285,\" window_id,\"],[286,\" evidence_sha256=batch.evidence_sha256,\"],[287,\" failure_reason=\\\"PREVIOUS_BOUNDARY_MISSING\\\",\"],[288,\" resolved_at=resolved_at,\"],[289,\" )\"],[290,\" if not journal.has_trade_identity(window.next_trade_identity):\"],[291,\" return journal.mark_reconciliation_unresolved(\"],[292,\" window_id,\"],[293,\" evidence_sha256=batch.evidence_sha256,\"],[294,\" failure_reason=\\\"NEXT_BOUNDARY_MISSING\\\",\"],[295,\" resolved_at=resolved_at,\"],[296,\" )\"],[297,\" for trade in batch.trades:\"],[298,\" if journal.latest_trade_semantic_hash(trade.trade_identity) != trade.semantic_hash:\"],[299,\" return journal.mark_reconciliation_unresolved(\"],[300,\" window_id,\"],[301,\" evidence_sha256=batch.evidence_sha256,\"],[302,\" failure_reason=\\\"REST_MERGE_PROOF_FAILED\\\",\"],[303,\" resolved_at=resolved_at,\"],[304,\" )\"]],\"client_methods\":{\"fetch_trade_window\":\"(self, symbol: 'str', *, start_mts: 'datetime', end_mts: 'datetime') -> 'BitfinexTradeHistoryBatch'\",\"reconcile_window\":\"(self, journal, window_id: 'str', *, symbol: 'str', resolved_at: 'datetime') -> 'ReconciliationWindow'\"},\"live_pre_rows\":[{\"window_id\":\"9cef91126f4f0043718d71b90d627540355d1f0f0f1fd75ee30f9bef3379ad88\",\"reconnect_event_seq\":251009,\"reconnect_received_at\":\"2026-09-19T08:56:37.306311+00:00\",\"previous_trade_identity\":\"ac5ee89769b01055080a1ef6b66a3bf2a0ee49841730f551293552af57e61809\",\"previous_trade_mts\":\"2026-09-19T08:56:34.170000+00:00\",\"next_trade_identity\":\"cac1c294e6e6f358f8cb8151ecb7ca573b64f9a116d8cab2f0db588df7d83dc7\",\"next_trade_mts\":\"2026-09-19T08:56:43.071000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"0933e981b764b89edd58396a737136747668a903a239eac64d538d5f4f2d5391\",\"recovered_row_count\":0,\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"created_at\":\"2026-09-19T08:56:43.166296+00:00\",\"resolved_at\":\"2026-09-19T08:56:43.166296+00:00\"},{\"window_id\":\"f3342e8836aa6f1a655a977e6839647e8f305cb90ce4a1977c417f9541a0ecda\",\"reconnect_event_seq\":318578,\"reconnect_received_at\":\"2026-09-20T01:19:10.585588+00:00\",\"previous_trade_identity\":\"4d902cf30ae01b151d21f3ecd1b706af0a7f87c9c44995b381e0e064b2f236b3\",\"previous_trade_mts\":\"2026-09-20T01:19:03.365000+00:00\",\"next_trade_identity\":\"bd6ae492eca899f8710d0c4b88704cb5a0a34ff94a23419249366f4ebd3586b6\",\"next_trade_mts\":\"2026-09-20T01:19:16.432000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"0933e981b764b89edd58396a737136747668a903a239eac64d538d5f4f2d5391\",\"recovered_row_count\":0,\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"created_at\":\"2026-09-20T01:19:16.494983+00:00\",\"resolved_at\":\"2026-09-20T01:19:16.494983+00:00\"},{\"window_id\":\"f429abc398b54cb0cbd869dce8c0be4e8c8ff8fb5ec7bb1a345c3bc8c7a394fb\",\"reconnect_event_seq\":350488,\"reconnect_received_at\":\"2026-09-20T07:26:44.462330+00:00\",\"previous_trade_identity\":\"25ae8d55a395d0a39001b1c409a86130c78b7221d31bdefc80242fc7af49da60\",\"previous_trade_mts\":\"2026-09-20T07:26:42.303000+00:00\",\"next_trade_identity\":\"15a77ac49619bc44a15ab3cb04219963639c612347f0de2ba82bf482c59a6b61\",\"next_trade_mts\":\"2026-09-20T07:26:46.404000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"0933e981b764b89edd58396a737136747668a903a239eac64d538d5f4f2d5391\",\"recovered_row_count\":0,\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"created_at\":\"2026-09-20T07:26:46.505770+00:00\",\"resolved_at\":\"2026-09-20T07:26:46.505770+00:00\"},{\"window_id\":\"7ba6b9d6bfcc433411890610b9d1282178a9646d61d026798b82f51a4985ccdc\",\"reconnect_event_seq\":377008,\"reconnect_received_at\":\"2026-09-20T13:53:16.325492+00:00\",\"previous_trade_identity\":\"102515c73c5748a56ca153cab57cdb832b5aae503a5485a23265c6313699d80f\",\"previous_trade_mts\":\"2026-09-20T13:52:37.772000+00:00\",\"next_trade_identity\":\"7782961f0ddf1bd08bdd9a1e311da68898b133f65fea2e24698fd9612e52a008\",\"next_trade_mts\":\"2026-09-20T13:53:16.750000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"0933e981b764b89edd58396a737136747668a903a239eac64d538d5f4f2d5391\",\"recovered_row_count\":0,\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"created_at\":\"2026-09-20T13:53:16.842477+00:00\",\"resolved_at\":\"2026-09-20T13:53:16.842477+00:00\"}],\"results\":[{\"seq\":251009,\"result\":{\"window_id\":\"9cef91126f4f0043718d71b90d627540355d1f0f0f1fd75ee30f9bef3379ad88\",\"reconnect_event_seq\":251009,\"reconnect_received_at\":\"2026-09-19 08:56:37.306311+00:00\",\"previous_trade_identity\":\"ac5ee89769b01055080a1ef6b66a3bf2a0ee49841730f551293552af57e61809\",\"previous_trade_mts\":\"2026-09-19 08:56:34.170000+00:00\",\"next_trade_identity\":\"cac1c294e6e6f358f8cb8151ecb7ca573b64f9a116d8cab2f0db588df7d83dc7\",\"next_trade_mts\":\"2026-09-19 08:56:43.071000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"bdf2ac6ab74275846073a4813fef5f4cc409190a8444dd7e47d9283fa5736ec2\",\"recovered_row_count\":0,\"failure_reason\":\"REST_SEMANTIC_CONFLICT\",\"created_at\":\"2026-09-19 08:56:43.166296+00:00\",\"resolved_at\":\"2026-09-21 06:03:31.131666+00:00\"},\"fetch_row_counts\":[],\"raw_duplicate_conflicts\":[]},{\"seq\":318578,\"result\":{\"window_id\":\"f3342e8836aa6f1a655a977e6839647e8f305cb90ce4a1977c417f9541a0ecda\",\"reconnect_event_seq\":318578,\"reconnect_received_at\":\"2026-09-20 01:19:10.585588+00:00\",\"previous_trade_identity\":\"4d902cf30ae01b151d21f3ecd1b706af0a7f87c9c44995b381e0e064b2f236b3\",\"previous_trade_mts\":\"2026-09-20 01:19:03.365000+00:00\",\"next_trade_identity\":\"bd6ae492eca899f8710d0c4b88704cb5a0a34ff94a23419249366f4ebd3586b6\",\"next_trade_mts\":\"2026-09-20 01:19:16.432000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"1a60ffa68cbe5415f4e55b64a97803128ba79eb7b730d84cac69a364f597bc63\",\"recovered_row_count\":0,\"failure_reason\":\"REST_SEMANTIC_CONFLICT\",\"created_at\":\"2026-09-20 01:19:16.494983+00:00\",\"resolved_at\":\"2026-09-21 06:03:31.338545+00:00\"},\"fetch_row_counts\":[],\"raw_duplicate_conflicts\":[]},{\"seq\":350488,\"result\":{\"window_id\":\"f429abc398b54cb0cbd869dce8c0be4e8c8ff8fb5ec7bb1a345c3bc8c7a394fb\",\"reconnect_event_seq\":350488,\"reconnect_received_at\":\"2026-09-20 07:26:44.462330+00:00\",\"previous_trade_identity\":\"25ae8d55a395d0a39001b1c409a86130c78b7221d31bdefc80242fc7af49da60\",\"previous_trade_mts\":\"2026-09-20 07:26:42.303000+00:00\",\"next_trade_identity\":\"15a77ac49619bc44a15ab3cb04219963639c612347f0de2ba82bf482c59a6b61\",\"next_trade_mts\":\"2026-09-20 07:26:46.404000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"a3502d8e6d42f5e6b4febee02f36cf8e6abac43c8730db0a56e8721fed5ff04e\",\"recovered_row_count\":0,\"failure_reason\":\"REST_SEMANTIC_CONFLICT\",\"created_at\":\"2026-09-20 07:26:46.505770+00:00\",\"resolved_at\":\"2026-09-21 06:03:31.478492+00:00\"},\"fetch_row_counts\":[],\"raw_duplicate_conflicts\":[]},{\"seq\":377008,\"result\":{\"window_id\":\"7ba6b9d6bfcc433411890610b9d1282178a9646d61d026798b82f51a4985ccdc\",\"reconnect_event_seq\":377008,\"reconnect_received_at\":\"2026-09-20 13:53:16.325492+00:00\",\"previous_trade_identity\":\"102515c73c5748a56ca153cab57cdb832b5aae503a5485a23265c6313699d80f\",\"previous_trade_mts\":\"2026-09-20 13:52:37.772000+00:00\",\"next_trade_identity\":\"7782961f0ddf1bd08bdd9a1e311da68898b133f65fea2e24698fd9612e52a008\",\"next_trade_mts\":\"2026-09-20 13:53:16.750000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"6b4ff1de113e7f0433c9de74cbb88ed1218fe256244830433f4474b106ce41ef\",\"recovered_row_count\":0,\"failure_reason\":\"REST_SEMANTIC_CONFLICT\",\"created_at\":\"2026-09-20 13:53:16.842477+00:00\",\"resolved_at\":\"2026-09-21 06:03:31.708593+00:00\"},\"fetch_row_counts\":[],\"raw_duplicate_conflicts\":[]}],\"copy_post_rows\":[{\"window_id\":\"9cef91126f4f0043718d71b90d627540355d1f0f0f1fd75ee30f9bef3379ad88\",\"reconnect_event_seq\":251009,\"reconnect_received_at\":\"2026-09-19T08:56:37.306311+00:00\",\"previous_trade_identity\":\"ac5ee89769b01055080a1ef6b66a3bf2a0ee49841730f551293552af57e61809\",\"previous_trade_mts\":\"2026-09-19T08:56:34.170000+00:00\",\"next_trade_identity\":\"cac1c294e6e6f358f8cb8151ecb7ca573b64f9a116d8cab2f0db588df7d83dc7\",\"next_trade_mts\":\"2026-09-19T08:56:43.071000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"bdf2ac6ab74275846073a4813fef5f4cc409190a8444dd7e47d9283fa5736ec2\",\"recovered_row_count\":0,\"failure_reason\":\"REST_SEMANTIC_CONFLICT\",\"created_at\":\"2026-09-19T08:56:43.166296+00:00\",\"resolved_at\":\"2026-09-21T06:03:31.131666+00:00\"},{\"window_id\":\"f3342e8836aa6f1a655a977e6839647e8f305cb90ce4a1977c417f9541a0ecda\",\"reconnect_event_seq\":318578,\"reconnect_received_at\":\"2026-09-20T01:19:10.585588+00:00\",\"previous_trade_identity\":\"4d902cf30ae01b151d21f3ecd1b706af0a7f87c9c44995b381e0e064b2f236b3\",\"previous_trade_mts\":\"2026-09-20T01:19:03.365000+00:00\",\"next_trade_identity\":\"bd6ae492eca899f8710d0c4b88704cb5a0a34ff94a23419249366f4ebd3586b6\",\"next_trade_mts\":\"2026-09-20T01:19:16.432000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"1a60ffa68cbe5415f4e55b64a97803128ba79eb7b730d84cac69a364f597bc63\",\"recovered_row_count\":0,\"failure_reason\":\"REST_SEMANTIC_CONFLICT\",\"created_at\":\"2026-09-20T01:19:16.494983+00:00\",\"resolved_at\":\"2026-09-21T06:03:31.338545+00:00\"},{\"window_id\":\"f429abc398b54cb0cbd869dce8c0be4e8c8ff8fb5ec7bb1a345c3bc8c7a394fb\",\"reconnect_event_seq\":350488,\"reconnect_received_at\":\"2026-09-20T07:26:44.462330+00:00\",\"previous_trade_identity\":\"25ae8d55a395d0a39001b1c409a86130c78b7221d31bdefc80242fc7af49da60\",\"previous_trade_mts\":\"2026-09-20T07:26:42.303000+00:00\",\"next_trade_identity\":\"15a77ac49619bc44a15ab3cb04219963639c612347f0de2ba82bf482c59a6b61\",\"next_trade_mts\":\"2026-09-20T07:26:46.404000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"a3502d8e6d42f5e6b4febee02f36cf8e6abac43c8730db0a56e8721fed5ff04e\",\"recovered_row_count\":0,\"failure_reason\":\"REST_SEMANTIC_CONFLICT\",\"created_at\":\"2026-09-20T07:26:46.505770+00:00\",\"resolved_at\":\"2026-09-21T06:03:31.478492+00:00\"},{\"window_id\":\"7ba6b9d6bfcc433411890610b9d1282178a9646d61d026798b82f51a4985ccdc\",\"reconnect_event_seq\":377008,\"reconnect_received_at\":\"2026-09-20T13:53:16.325492+00:00\",\"previous_trade_identity\":\"102515c73c5748a56ca153cab57cdb832b5aae503a5485a23265c6313699d80f\",\"previous_trade_mts\":\"2026-09-20T13:52:37.772000+00:00\",\"next_trade_identity\":\"7782961f0ddf1bd08bdd9a1e311da68898b133f65fea2e24698fd9612e52a008\",\"next_trade_mts\":\"2026-09-20T13:53:16.750000+00:00\",\"status\":\"UNRESOLVED\",\"evidence_sha256\":\"6b4ff1de113e7f0433c9de74cbb88ed1218fe256244830433f4474b106ce41ef\",\"recovered_row_count\":0,\"failure_reason\":\"REST_SEMANTIC_CONFLICT\",\"created_at\":\"2026-09-20T13:53:16.842477+00:00\",\"resolved_at\":\"2026-09-21T06:03:31.708593+00:00\"}],\"copy_quick_check\":\"ok\"}}\nTASK_RESULT=PASS_SIGNALBOT_052SEM1_SEMANTIC_CONFLICT_RCA_CAPTURED\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SIGNALBOT-260921-SEMANTIC-CONFLICT-RCA-052SEM1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n"
|
|
}
|