CHAT_OUTPUT_BEGIN
COMMAND_ID=SIGNALBOT-260921-SEMANTIC-CONFLICT-RCA-052SEM1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=signalbot-semantic-conflict-rca
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=799aae26989afb94d89f08d220301cf95e7fe17a020c7a93169a9901c4187e90
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=d5c2a64daf8587b3999184cd18a7471783ccf62b6539a4e62e137bc360c56ab4
SANITIZED_OUTPUT_SHA256=d5c2a64daf8587b3999184cd18a7471783ccf62b6539a4e62e137bc360c56ab4
OUTPUT_BEGIN
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"}}
TASK_RESULT=PASS_SIGNALBOT_052SEM1_SEMANTIC_CONFLICT_RCA_CAPTURED
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SIGNALBOT-260921-SEMANTIC-CONFLICT-RCA-052SEM1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}

OUTPUT_END
CHAT_OUTPUT_END
