1
0
Files
homelab-public-context/runtime/latest.json
T
2026-09-21 01:31:55 +00:00

39 lines
68 KiB
JSON

{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "SIGNALBOT-260921-RECONCILIATION-UNRESOLVED-RCA-052RCA1",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "read-only",
"component": "signalbot-reconciliation-unresolved-rca",
"started_at_utc": "2026-09-21T01:31:52Z",
"finished_at_utc": "2026-09-21T01:31:54Z",
"reference_register_checked": true,
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
"error_register_checked": true,
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
"command_sha256": "fa016567d1f883b6750dde1125c4cf074802ecf2f0db7998080c8cc7e0534f29",
"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": "e103000052d95420a0460e4dfde59ebfcb62ec394ea3591409d27cdbbe048e59",
"sanitized_output_sha256": "e103000052d95420a0460e4dfde59ebfcb62ec394ea3591409d27cdbbe048e59",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
"output": "SIGNALBOT052RCA1_RESULT={\"decision\":\"HOLD_D1_CLEAN_BUT_GLOBAL_UNRESOLVED_RECONCILIATION_BLOCKS_FINAL\",\"git_grep\":[\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_reconciliation.py:57: RECONCILED = \\\"RECONCILED\\\"\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_reconciliation.py:58: UNRESOLVED = \\\"UNRESOLVED\\\"\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_reconciliation.py:317: failure_reason=\\\"REST_FETCH_OR_VALIDATION_FAILED\\\",\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:252: CREATE TABLE IF NOT EXISTS reconnect_reconciliation(\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:268: CREATE INDEX IF NOT EXISTS idx_reconnect_reconciliation_time\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:269: ON reconnect_reconciliation(reconnect_received_at);\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:299: \\\"SELECT COUNT(*) AS n FROM reconnect_reconciliation WHERE status=?\\\",\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:314: LEFT JOIN reconnect_reconciliation rr\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:323: \\\"SELECT COUNT(*) AS n FROM reconnect_reconciliation WHERE status=?\\\",\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:324: (ReconciliationStatus.UNRESOLVED.value,),\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:328: SELECT failure_reason FROM reconnect_reconciliation\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:332: (ReconciliationStatus.UNRESOLVED.value,),\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:563: INSERT OR IGNORE INTO reconnect_reconciliation(\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:598: \\\"SELECT * FROM reconnect_reconciliation WHERE window_id=?\\\",\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:616: SELECT * FROM reconnect_reconciliation\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:648: status=ReconciliationStatus.RECONCILED,\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:667: status=ReconciliationStatus.UNRESOLVED,\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:684: if status not in {ReconciliationStatus.RECONCILED, ReconciliationStatus.UNRESOLVED}:\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:708: UPDATE reconnect_reconciliation\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:986: LEFT JOIN reconnect_reconciliation rr\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/bitfinex_trade_collector.py:999: row[\\\"status\\\"] != ReconciliationStatus.RECONCILED.value\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/live_health.py:269: _append_reason(reasons, \\\"RECONNECT_RECONCILIATION_UNRESOLVED\\\")\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:demonov_forward_map/producer_policy.py:101: fixture_provenance=\\\"UNRESOLVED_PRODUCTION\\\",\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:scripts/v1810_transcript_operator_audit.py:75:assert sm['JAN13_16_17_TRANSCRIPT_IDENTITY']=='RETRIEVED_BUT_OBJECT_ID_UNRESOLVED'\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:scripts/v1823_identifiability_closure.py:15: dict(hypothesis='H4_PUBLIC20_SEMANTIC_ALIAS_PHYSICAL_NOV10', physical_origin='physical 2021-11-10 high; semantic label 2021-11-20', declaration_binding='same prominent Oct03 predecessor', supporting_line='same affine line as H3', oct03_origin_render='INDISTINGUISHABLE_FROM_H3', postfreeze_farfield='INDISTINGUISHABLE_FROM_H3', downstream_ohlc='INDISTINGUISHABLE_FROM_H3', late_text='COMPATIBLE_WITH_LITERAL_PUBLIC_DATE', status='UNRESOLVED_EQUIVALENCE_CLASS'),\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:scripts/v1823_identifiability_closure.py:16: dict(hypothesis='H5_PUBLIC20_OTHER_OBJECT', physical_origin='unknown / potentially 20Nov-related', declaration_binding='different historical object than prominent Oct03 ray', supporting_line='object-specific unknown', oct03_origin_render='NOT_A_TEST_OF_THIS_OBJECT', postfreeze_farfield='NOT_A_TEST_OF_THIS_OBJECT', downstream_ohlc='cannot identify absent object geometry', late_text='COMPATIBLE', status='UNRESOLVED_OBJECT_BINDING'),\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:scripts/v1823_identifiability_closure.py:17: dict(hypothesis='H6_PUBLIC_DATE_PAIR_IS_LABEL_NOT_HANDLE_METADATA', physical_origin='unknown handle; public dates are reporting labels', declaration_binding='may be same or other object', supporting_line='underidentified', oct03_origin_render='cannot recover label semantics', postfreeze_farfield='cannot recover label semantics', downstream_ohlc='cannot recover label semantics', late_text='COMPATIBLE', status='UNRESOLVED_SEMANTIC_LAYER'),\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:scripts/v1824_modern_semantics_media_control.py:222: dict(hypothesis='H5_PUBLIC20_BINDS_OTHER_HISTORICAL_OBJECT', preserves_common_date_as_candle_identity_schema='POTENTIALLY_YES', preserves_literal_2022_text='YES', matches_prominent_2022_render='NOT_APPLICABLE_TO_OTHER_OBJECT', matches_2019_magnet_operator='POTENTIALLY_YES', matches_modern_row_semantics='YES_IF_OTHER_OBJECT_USES_20NOV_CANDLE', extra_unannounced_semantic_switch='NO', v4_1_update='UNCHANGED_UNRESOLVED_OBJECT_BINDING', reason='Still the cleanest way to preserve literal date and common operator without semantic alias, but no target album/object evidence identifies such an object.'),\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:scripts/v1824_modern_semantics_media_control.py:265: 'H5': 'UNCHANGED_UNRESOLVED_OBJECT_BINDING',\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:scripts/v1826_target_media_dual_object_audit.py:63:assert media[\\\"telegram_attachment_cardinality\\\"]==\\\"UNRESOLVED_FROM_TELEMETR_HTML\\\"\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:scripts/v1828_semantic_alias_nontransferability_audit.py:165: {'component':'PUBLIC_STRING_CORRECTION_HISTORY','v4_4':'UNRESOLVED','v4_5':'NO_IN_PLACE_CORRECTION_OBSERVED_ON_CURRENT_PUBLIC_SURFACE','delta':'Target lacks edited marker while same Telegram surface shows it on controls; mirrors preserve 20'},\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_collector_reconnect_loop.py:89: rows=j.reconciliation_windows_overlapping(T0,T0+timedelta(seconds=20)); assert len(rows)==1 and rows[0].status is ReconciliationStatus.RECONCILED and len(client.calls)==1; j.close()\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_d1_reconciliation_finality.py:27: if status is ReconciliationStatus.RECONCILED: j.mark_reconciliation_reconciled(window.window_id,evidence_sha256=\\\"a\\\"*64,recovered_row_count=0,resolved_at=T0+timedelta(hours=6,seconds=2))\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_d1_reconciliation_finality.py:28: elif status is ReconciliationStatus.UNRESOLVED: j.mark_reconciliation_unresolved(window.window_id,evidence_sha256=\\\"b\\\"*64,failure_reason=\\\"SIMULATED\\\",resolved_at=T0+timedelta(hours=6,seconds=2))\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_d1_reconciliation_finality.py:34: j,l,_=setup(tmp_path,ReconciliationStatus.RECONCILED); r=j.finalize_ready_d1(l,finalized_at=T0+timedelta(days=1,seconds=2)); assert r is not None; j.close()\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_d1_reconciliation_finality.py:40: j,l,_=setup(tmp_path,ReconciliationStatus.UNRESOLVED); assert finalize_ready_d1_without_stopping_collection(j,l,finalized_at=T0+timedelta(days=1,seconds=2)) is None; j.close()\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_d1_reconciliation_finality.py:43: j,l,event=setup(tmp_path,ReconciliationStatus.RECONCILED); j._db.execute(\\\"DELETE FROM reconnect_reconciliation WHERE reconnect_event_seq=?\\\",(event,)); assert finalize_ready_d1_without_stopping_collection(j,l,finalized_at=T0+timedelta(days=1,seconds=2)) is None; j.close()\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_d1_reconciliation_finality.py:46: j,l,_=setup(tmp_path,ReconciliationStatus.RECONCILED); j._db.execute(\\\"INSERT INTO sequence_events(session_id,source_sequence,received_at,event_kind) VALUES(?,?,?,?)\\\",(\\\"b\\\",999,(T0+timedelta(hours=8)).isoformat(),\\\"GAP\\\")); assert finalize_ready_d1_without_stopping_collection(j,l,finalized_at=T0+timedelta(days=1,seconds=2)) is None; j.close()\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_d1_reconciliation_finality.py:49: j,l,_=setup(tmp_path,ReconciliationStatus.RECONCILED); j._meta_set(\\\"post_finality_revision\\\",\\\"1\\\"); assert finalize_ready_d1_without_stopping_collection(j,l,finalized_at=T0+timedelta(days=1,seconds=2)) is None; j.close()\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation.py:105: assert resolved.status is ReconciliationStatus.RECONCILED\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation.py:118: assert unresolved.status is ReconciliationStatus.UNRESOLVED\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation.py:184: assert resolved.status is ReconciliationStatus.RECONCILED\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation.py:200: assert resolved.status is ReconciliationStatus.UNRESOLVED\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation.py:201: assert resolved.failure_reason == \\\"REST_FETCH_OR_VALIDATION_FAILED\\\"\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation.py:218: assert resolved.status is ReconciliationStatus.UNRESOLVED\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation.py:232: assert resolved.status is ReconciliationStatus.UNRESOLVED\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation.py:252: assert resolved.status is ReconciliationStatus.UNRESOLVED\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation_health.py:173: assert \\\"RECONNECT_RECONCILIATION_UNRESOLVED\\\" not in health[\\\"reason_codes\\\"]\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation_health.py:202: failure_reason=\\\"REST_FETCH_OR_VALIDATION_FAILED\\\",\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation_health.py:207: assert \\\"RECONNECT_RECONCILIATION_UNRESOLVED\\\" in health[\\\"reason_codes\\\"]\",\"749073ae0f894debc06fb0ffbf7a84abf9da531f:tests/test_bitfinex_reconciliation_health.py:209: assert health[\\\"reconciliation_last_reason\\\"] == \\\"REST_FETCH_OR_VALIDATION_FAILED\\\"\"],\"git_grep_rc\":0,\"guest\":{\"accepted_d1_candidate\":{\"close_at\":\"2026-09-19T00:00:00+00:00\",\"finality_state\":\"FINALIZED\",\"logical_d1_id\":\"bb9cbf18d81e605641e7aa9b792d35d1f55c3cae51fbe1abfe1617b72f0eaa14\",\"open_at\":\"2026-09-18T00:00:00+00:00\"},\"accepted_d1_revision_count\":1,\"collector_log_match_count\":0,\"collector_log_tail\":[],\"collector_public_rest_probe\":{\"ok\":true,\"result\":{\"bytes\":3,\"http\":200,\"prefix\":\"[1]\",\"sha256\":\"080a9ed428559ef602668b4c00f114f1a11c3f6b02a435f0bdc154578e4d7f22\"}},\"collector_status.json\":{\"prospective_reconnect_detected\":true,\"reconciliation_last_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"reconciliation_pending_count\":0,\"reconciliation_unresolved_count\":9,\"reconnect_detected\":true,\"updated_at\":\"2026-09-21T01:31:53.050618+00:00\"},\"failure_reason_counts\":{\"\":9,\"REST_FETCH_OR_VALIDATION_FAILED\":9},\"finalized_intervals\":[{\"close_at\":\"2026-09-19T00:00:00+00:00\",\"finality_state\":\"FINALIZED\",\"logical_d1_id\":\"bb9cbf18d81e605641e7aa9b792d35d1f55c3cae51fbe1abfe1617b72f0eaa14\",\"open_at\":\"2026-09-18T00:00:00+00:00\"}],\"host_public_rest_probe\":{\"body_prefix\":\"[1]\",\"bytes\":3,\"http\":200,\"ok\":true,\"sha256\":\"080a9ed428559ef602668b4c00f114f1a11c3f6b02a435f0bdc154578e4d7f22\"},\"live_status.json\":{\"execution_authority\":false,\"heartbeat_at\":\"2026-09-21T01:31:39.054064+00:00\",\"last_primary_closed_d1\":null,\"production_launch_allowed\":false,\"prospective_research_collection_allowed\":true,\"risk_authority\":false,\"source_fail_closed_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"source_reconnect_detected\":true,\"status\":\"FAIL_CLOSED\"},\"ok\":true,\"quick_check\":[\"ok\"],\"reconciliation_columns\":[\"window_id\",\"reconnect_event_seq\",\"reconnect_received_at\",\"previous_trade_identity\",\"previous_trade_mts\",\"next_trade_identity\",\"next_trade_mts\",\"status\",\"evidence_sha256\",\"recovered_row_count\",\"failure_reason\",\"created_at\",\"resolved_at\"],\"reconciliation_total\":18,\"status_counts\":{\"RECONCILED\":9,\"UNRESOLVED\":9},\"timing_classification\":\"ACCEPTED_D1_PREDATES_ALL_CURRENT_UNRESOLVED_BUT_GLOBAL_GATE_BLOCKS\",\"unresolved\":[{\"created_at\":\"2026-09-19T08:56:43.166296+00:00\",\"evidence_sha256\":\"0933e981b764b89e...\",\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"next_trade_identity\":\"cac1c294e6e6f358f8cb8151ecb7ca573b64f9a116d8cab2f0db588df7d83dc7\",\"next_trade_mts\":\"2026-09-19T08:56:43.071000+00:00\",\"previous_trade_identity\":\"ac5ee89769b01055080a1ef6b66a3bf2a0ee49841730f551293552af57e61809\",\"previous_trade_mts\":\"2026-09-19T08:56:34.170000+00:00\",\"reconnect_event_seq\":251009,\"reconnect_received_at\":\"2026-09-19T08:56:37.306311+00:00\",\"recovered_row_count\":0,\"resolved_at\":\"2026-09-19T08:56:43.166296+00:00\",\"status\":\"UNRESOLVED\",\"window_id\":\"9cef91126f4f0043718d71b90d627540355d1f0f0f1fd75ee30f9bef3379ad88\"},{\"created_at\":\"2026-09-19T20:55:47.702369+00:00\",\"evidence_sha256\":\"0933e981b764b89e...\",\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"next_trade_identity\":\"d5d2cd472e6043a8a6d5a9efe6de57f75964d72e204ff37860a0d5de899dbbf1\",\"next_trade_mts\":\"2026-09-19T20:55:47.585000+00:00\",\"previous_trade_identity\":\"8d61cfd2c7da8ed694776ff0e009bd1fb90d2cd315c202c907443449564de6d8\",\"previous_trade_mts\":\"2026-09-19T20:53:15.067000+00:00\",\"reconnect_event_seq\":303837,\"reconnect_received_at\":\"2026-09-19T20:55:45.541470+00:00\",\"recovered_row_count\":0,\"resolved_at\":\"2026-09-19T20:55:47.702369+00:00\",\"status\":\"UNRESOLVED\",\"window_id\":\"6a8bbda8609aea6fb0d659bdcedcb37cad24318deaabba9ece38b821a312ed37\"},{\"created_at\":\"2026-09-20T01:19:16.494983+00:00\",\"evidence_sha256\":\"0933e981b764b89e...\",\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"next_trade_identity\":\"bd6ae492eca899f8710d0c4b88704cb5a0a34ff94a23419249366f4ebd3586b6\",\"next_trade_mts\":\"2026-09-20T01:19:16.432000+00:00\",\"previous_trade_identity\":\"4d902cf30ae01b151d21f3ecd1b706af0a7f87c9c44995b381e0e064b2f236b3\",\"previous_trade_mts\":\"2026-09-20T01:19:03.365000+00:00\",\"reconnect_event_seq\":318578,\"reconnect_received_at\":\"2026-09-20T01:19:10.585588+00:00\",\"recovered_row_count\":0,\"resolved_at\":\"2026-09-20T01:19:16.494983+00:00\",\"status\":\"UNRESOLVED\",\"window_id\":\"f3342e8836aa6f1a655a977e6839647e8f305cb90ce4a1977c417f9541a0ecda\"},{\"created_at\":\"2026-09-20T07:26:46.505770+00:00\",\"evidence_sha256\":\"0933e981b764b89e...\",\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"next_trade_identity\":\"15a77ac49619bc44a15ab3cb04219963639c612347f0de2ba82bf482c59a6b61\",\"next_trade_mts\":\"2026-09-20T07:26:46.404000+00:00\",\"previous_trade_identity\":\"25ae8d55a395d0a39001b1c409a86130c78b7221d31bdefc80242fc7af49da60\",\"previous_trade_mts\":\"2026-09-20T07:26:42.303000+00:00\",\"reconnect_event_seq\":350488,\"reconnect_received_at\":\"2026-09-20T07:26:44.462330+00:00\",\"recovered_row_count\":0,\"resolved_at\":\"2026-09-20T07:26:46.505770+00:00\",\"status\":\"UNRESOLVED\",\"window_id\":\"f429abc398b54cb0cbd869dce8c0be4e8c8ff8fb5ec7bb1a345c3bc8c7a394fb\"},{\"created_at\":\"2026-09-20T13:53:16.842477+00:00\",\"evidence_sha256\":\"0933e981b764b89e...\",\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"next_trade_identity\":\"7782961f0ddf1bd08bdd9a1e311da68898b133f65fea2e24698fd9612e52a008\",\"next_trade_mts\":\"2026-09-20T13:53:16.750000+00:00\",\"previous_trade_identity\":\"102515c73c5748a56ca153cab57cdb832b5aae503a5485a23265c6313699d80f\",\"previous_trade_mts\":\"2026-09-20T13:52:37.772000+00:00\",\"reconnect_event_seq\":377008,\"reconnect_received_at\":\"2026-09-20T13:53:16.325492+00:00\",\"recovered_row_count\":0,\"resolved_at\":\"2026-09-20T13:53:16.842477+00:00\",\"status\":\"UNRESOLVED\",\"window_id\":\"7ba6b9d6bfcc433411890610b9d1282178a9646d61d026798b82f51a4985ccdc\"},{\"created_at\":\"2026-09-20T17:27:36.374674+00:00\",\"evidence_sha256\":\"0933e981b764b89e...\",\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"next_trade_identity\":\"8c6394e7f3a93cb2e27c18f997704fa34336ce94112dee05c8ef6a8809821b0a\",\"next_trade_mts\":\"2026-09-20T17:27:36.291000+00:00\",\"previous_trade_identity\":\"67b068829952038e414e37f3453cd0cf3903ade761e19dea3a63c276b1743041\",\"previous_trade_mts\":\"2026-09-20T17:26:57.638000+00:00\",\"reconnect_event_seq\":397710,\"reconnect_received_at\":\"2026-09-20T17:27:33.837394+00:00\",\"recovered_row_count\":0,\"resolved_at\":\"2026-09-20T17:27:36.374674+00:00\",\"status\":\"UNRESOLVED\",\"window_id\":\"3531b2a1ebb67b0c993098f03d5039596b23c365f383696f154b0de7c1f35014\"},{\"created_at\":\"2026-09-21T00:24:23.299034+00:00\",\"evidence_sha256\":\"0933e981b764b89e...\",\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"next_trade_identity\":\"cb133d7053bf7d9fc87bcab995eaaf7f687c598b972df115a1e268920a9e39f3\",\"next_trade_mts\":\"2026-09-21T00:24:23.217000+00:00\",\"previous_trade_identity\":\"669c24c1506be52bad95587b5671a8ca82d5c998c6d0bf4e8c21816f7f4013a1\",\"previous_trade_mts\":\"2026-09-21T00:23:51.273000+00:00\",\"reconnect_event_seq\":433876,\"reconnect_received_at\":\"2026-09-21T00:24:21.491095+00:00\",\"recovered_row_count\":0,\"resolved_at\":\"2026-09-21T00:24:23.299034+00:00\",\"status\":\"UNRESOLVED\",\"window_id\":\"ff8241e034cd198ca101e2fb3aa1490f1c1f6419d660da8dbedd53f9c793570f\"},{\"created_at\":\"2026-09-21T00:42:54.658882+00:00\",\"evidence_sha256\":\"0933e981b764b89e...\",\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"next_trade_identity\":\"153be4780f583c7140051c66c6db78e338eb85dc10a7b2b18823f53a886e745f\",\"next_trade_mts\":\"2026-09-21T00:42:54.561000+00:00\",\"previous_trade_identity\":\"712e7f4b0dd599f1cd5b0bda031d78b35e2ec2b13477688815f4b3e1928f5a28\",\"previous_trade_mts\":\"2026-09-21T00:41:03.150000+00:00\",\"reconnect_event_seq\":437370,\"reconnect_received_at\":\"2026-09-21T00:42:48.180360+00:00\",\"recovered_row_count\":0,\"resolved_at\":\"2026-09-21T00:42:54.658882+00:00\",\"status\":\"UNRESOLVED\",\"window_id\":\"430d641924a7288977018e3493ef5e93305dc1d92122b5f2a2ac5f50b4e66988\"},{\"created_at\":\"2026-09-21T00:49:26.894105+00:00\",\"evidence_sha256\":\"0933e981b764b89e...\",\"failure_reason\":\"REST_FETCH_OR_VALIDATION_FAILED\",\"next_trade_identity\":\"faa4ee2e78e629ed93689c4d00cfc3b5cbf532d8a208d45460da9852a7ec1cfe\",\"next_trade_mts\":\"2026-09-21T00:49:26.818000+00:00\",\"previous_trade_identity\":\"5dfdb1893e2243a4cbc8088791a958d96cc3416d9b8cdd2fb8d3fe41d3420190\",\"previous_trade_mts\":\"2026-09-21T00:48:31.003000+00:00\",\"reconnect_event_seq\":438938,\"reconnect_received_at\":\"2026-09-21T00:49:23.294194+00:00\",\"recovered_row_count\":0,\"resolved_at\":\"2026-09-21T00:49:26.894105+00:00\",\"status\":\"UNRESOLVED\",\"window_id\":\"27cab14c1de70fe0d3439f687d7ee5eafe9b6e9c02f308366178fe02eae6c6ba\"}],\"unresolved_after_accepted_d1_count\":9,\"unresolved_after_event_seq\":[251009,303837,318578,350488,377008,397710,433876,437370,438938],\"unresolved_before_accepted_d1_count\":0,\"unresolved_count\":9,\"unresolved_overlap_accepted_d1_count\":0,\"unresolved_overlap_event_seq\":[],\"worker_REST_FETCH_OR_VALIDATION_FAILED_count_2h\":0,\"worker_SOURCE_FINALITY_count_2h\":480},\"holds\":[],\"ok\":true,\"qga_guest_exitcode\":0,\"qga_guest_stderr_present\":false,\"qga_outer_rc\":0,\"qga_outer_stderr_present\":false,\"source_evidence\":{\"demonov_forward_map/bitfinex_reconciliation.py\":{\"sha256\":\"023ce0a041b50b866a48d9f752bd80479a34789d82f73c81d18246ed8871ef8e\",\"snippets\":[[\"43: \\\"trade_id\\\": trade_id,\",\"44: \\\"mts_ms\\\": mts_ms,\",\"45: \\\"amount\\\": format(amount, \\\"f\\\"),\",\"46: \\\"price\\\": format(price, \\\"f\\\"),\",\"47: },\",\"48: ensure_ascii=True,\",\"49: sort_keys=True,\",\"50: separators=(\\\",\\\", \\\":\\\"),\",\"51: ).encode(\\\"utf-8\\\")\",\"52: return hashlib.sha256(raw).hexdigest()\",\"53:\",\"54:\",\"55:class ReconciliationStatus(str, Enum):\",\"56: PENDING = \\\"PENDING\\\"\",\"57: RECONCILED = \\\"RECONCILED\\\"\",\"58: UNRESOLVED = \\\"UNRESOLVED\\\"\",\"59:\",\"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\"],[\"102: trade_id=trade_id,\",\"103: mts_ms=mts_ms,\",\"104: amount=amount,\",\"105: price=price,\",\"106: )\",\"107: return BitfinexCanonicalTradeV1.build(\",\"108: trade_id=trade_id,\",\"109: mts=datetime.fromtimestamp(mts_ms / 1000, tz=timezone.utc),\",\"110: amount=amount,\",\"111: price=price,\",\"112: source_payload_hash=source_payload_hash,\",\"113: )\",\"114:\",\"115:\",\"116:def _stdlib_fetch_json(url: str, *, timeout: float, max_bytes: int) -> object:\",\"117: request = Request(\",\"118: url,\",\"119: headers={\\\"Accept\\\": \\\"application/json\\\", \\\"User-Agent\\\": \\\"demonov-shadow/CR0116-reconcile\\\"},\",\"120: method=\\\"GET\\\",\",\"121: )\",\"122: try:\",\"123: with urlopen(request, timeout=timeout) as response:\",\"124: body = response.read(max_bytes + 1)\",\"125: except Exception as exc:\",\"126: raise DemonovError(\\\"Bitfinex public trade history request failed\\\") from exc\",\"127: if len(body) > max_bytes:\",\"128: raise DemonovError(\\\"Bitfinex public trade history response too large\\\")\",\"129: try:\",\"130: return json.loads(body.decode(\\\"utf-8\\\"))\"],[\"133:\",\"134:\",\"135:class BitfinexPublicTradeHistoryClient:\",\"136: def __init__(\",\"137: self,\",\"138: *,\",\"139: fetch_json: Callable[..., object] | None = None,\",\"140: timeout: float = 20.0,\",\"141: max_bytes: int = 4 * 1024 * 1024,\",\"142: ) -> None:\",\"143: self._fetch_json = fetch_json or _stdlib_fetch_json\",\"144: self.timeout = float(timeout)\",\"145: self.max_bytes = int(max_bytes)\",\"146:\",\"147: def fetch_trade_window(\",\"148: self,\",\"149: symbol: str,\",\"150: *,\",\"151: start_mts: datetime,\",\"152: end_mts: datetime,\",\"153: ) -> BitfinexTradeHistoryBatch:\",\"154: if not isinstance(symbol, str) or not symbol.startswith(\\\"t\\\") or len(symbol) < 2:\",\"155: raise DemonovError(\\\"Bitfinex trade history symbol invalid\\\")\",\"156: start_mts = _utc(start_mts, \\\"start_mts\\\")\",\"157: end_mts = _utc(end_mts, \\\"end_mts\\\")\",\"158: if end_mts < start_mts:\",\"159: raise DemonovError(\\\"Bitfinex trade history interval invalid\\\")\",\"160: start_ms = int(start_mts.timestamp() * 1000)\",\"161: end_ms = int(end_mts.timestamp() * 1000)\"],[\"217:\",\"218: def reconcile_window(\",\"219: self,\",\"220: journal,\",\"221: window_id: str,\",\"222: *,\",\"223: symbol: str,\",\"224: resolved_at: datetime,\",\"225: ) -> ReconciliationWindow:\",\"226: resolved_at = _utc(resolved_at, \\\"resolved_at\\\")\",\"227: window = journal.reconciliation_window(window_id)\",\"228: if window.status != ReconciliationStatus.PENDING:\",\"229: return window\",\"230: try:\",\"231: batch = self.fetch_trade_window(\",\"232: symbol,\",\"233: start_mts=window.previous_trade_mts,\",\"234: end_mts=window.next_trade_mts,\",\"235: )\",\"236: if batch.raw_row_count >= BITFINEX_PUBLIC_HISTORY_LIMIT:\",\"237: return journal.mark_reconciliation_unresolved(\",\"238: window_id,\",\"239: evidence_sha256=batch.evidence_sha256,\",\"240: failure_reason=\\\"REST_ROW_LIMIT_REACHED\\\",\",\"241: resolved_at=resolved_at,\",\"242: )\",\"243: if not batch.trades:\",\"244: return journal.mark_reconciliation_unresolved(\",\"245: window_id,\"],[\"262: for index, trade in enumerate(batch.trades):\",\"263: receipt = SourceReceiptV1.build(\",\"264: venue_id=\\\"BITFINEX\\\",\",\"265: source_kind=\\\"REST_TRADE_HISTORY\\\",\",\"266: received_at=resolved_at,\",\"267: source_sequence=index,\",\"268: raw_payload_hash=trade.source_payload_hash,\",\"269: collector_session_id=f\\\"reconciliation:{window_id}\\\",\",\"270: )\",\"271: receipt_id = journal.record_receipt(receipt)\",\"272: result = journal.record_trade(trade, receipt_id=receipt_id)\",\"273: if result == \\\"INSERTED\\\":\",\"274: recovered += 1\",\"275: elif result != \\\"DUPLICATE\\\":\",\"276: return journal.mark_reconciliation_unresolved(\",\"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):\"],[\"300: window_id,\",\"301: evidence_sha256=batch.evidence_sha256,\",\"302: failure_reason=\\\"REST_MERGE_PROOF_FAILED\\\",\",\"303: resolved_at=resolved_at,\",\"304: )\",\"305: return journal.mark_reconciliation_reconciled(\",\"306: window_id,\",\"307: evidence_sha256=batch.evidence_sha256,\",\"308: recovered_row_count=recovered,\",\"309: resolved_at=resolved_at,\",\"310: )\",\"311: except DemonovError as exc:\",\"312: reason = str(exc)\",\"313: reason_hash = hashlib.sha256(reason.encode(\\\"utf-8\\\")).hexdigest()\",\"314: return journal.mark_reconciliation_unresolved(\",\"315: window_id,\",\"316: evidence_sha256=reason_hash,\",\"317: failure_reason=\\\"REST_FETCH_OR_VALIDATION_FAILED\\\",\",\"318: resolved_at=resolved_at,\",\"319: )\"]]},\"demonov_forward_map/bitfinex_trade_collector.py\":{\"sha256\":\"71ad3dfbdedd7d9bb698fd20bbfa8bfad0dace003e0592716ff6299f2c8ee121\",\"snippets\":[[\"238: CREATE TABLE IF NOT EXISTS d1_revisions(\",\"239: revision_id TEXT PRIMARY KEY,\",\"240: logical_d1_id TEXT NOT NULL,\",\"241: revision_json TEXT NOT NULL\",\"242: );\",\"243: CREATE TABLE IF NOT EXISTS finalized_d1(\",\"244: logical_d1_id TEXT PRIMARY KEY,\",\"245: close_at TEXT NOT NULL,\",\"246: finalized_d1_id TEXT NOT NULL UNIQUE,\",\"247: revision_id TEXT NOT NULL,\",\"248: logical_json TEXT NOT NULL,\",\"249: revision_json TEXT NOT NULL,\",\"250: finalized_json TEXT NOT NULL\",\"251: );\",\"252: CREATE TABLE IF NOT EXISTS reconnect_reconciliation(\",\"253: window_id TEXT PRIMARY KEY,\",\"254: reconnect_event_seq INTEGER NOT NULL UNIQUE\",\"255: REFERENCES sequence_events(event_seq),\",\"256: reconnect_received_at TEXT NOT NULL,\",\"257: previous_trade_identity TEXT NOT NULL,\",\"258: previous_trade_mts TEXT NOT NULL,\",\"259: next_trade_identity TEXT NOT NULL,\",\"260: next_trade_mts TEXT NOT NULL,\",\"261: status TEXT NOT NULL,\",\"262: evidence_sha256 TEXT NOT NULL,\",\"263: recovered_row_count INTEGER NOT NULL,\",\"264: failure_reason TEXT NOT NULL,\",\"265: created_at TEXT NOT NULL,\",\"266: resolved_at TEXT\"],[\"285: )\",\"286:\",\"287: def _status(self) -> BitfinexCollectorStatus:\",\"288: return BitfinexCollectorStatus(\",\"289: gap_detected=self._meta_get(\\\"gap_detected\\\") == \\\"1\\\",\",\"290: reconnect_detected=self._meta_get(\\\"reconnect_detected\\\") == \\\"1\\\",\",\"291: post_finality_revision=(\",\"292: self._meta_get(\\\"post_finality_revision\\\") == \\\"1\\\"\",\"293: ),\",\"294: fail_closed_reason=self._meta_get(\\\"fail_closed_reason\\\") or \\\"\\\",\",\"295: )\",\"296:\",\"297: def _reconciliation_status_summary(self) -> tuple[int, int, str]:\",\"298: pending_row = self._db.execute(\",\"299: \\\"SELECT COUNT(*) AS n FROM reconnect_reconciliation WHERE status=?\\\",\",\"300: (ReconciliationStatus.PENDING.value,),\",\"301: ).fetchone()\",\"302: active_pending = 0\",\"303: active_raw = self._meta_get(\\\"active_reconnect_pending_event_seq\\\")\",\"304: if active_raw:\",\"305: try:\",\"306: active_seq = int(active_raw)\",\"307: except ValueError:\",\"308: active_seq = 0\",\"309: if active_seq > 0:\",\"310: row = self._db.execute(\",\"311: \\\"\\\"\\\"\",\"312: SELECT se.event_kind, rr.window_id\",\"313: FROM sequence_events se\"],[\"318: (active_seq,),\",\"319: ).fetchone()\",\"320: if row is not None and row[\\\"event_kind\\\"] == \\\"RECONNECT\\\" and row[\\\"window_id\\\"] is None:\",\"321: active_pending = 1\",\"322: unresolved_row = self._db.execute(\",\"323: \\\"SELECT COUNT(*) AS n FROM reconnect_reconciliation WHERE status=?\\\",\",\"324: (ReconciliationStatus.UNRESOLVED.value,),\",\"325: ).fetchone()\",\"326: latest = self._db.execute(\",\"327: \\\"\\\"\\\"\",\"328: SELECT failure_reason FROM reconnect_reconciliation\",\"329: WHERE status=?\",\"330: ORDER BY reconnect_event_seq DESC LIMIT 1\",\"331: \\\"\\\"\\\",\",\"332: (ReconciliationStatus.UNRESOLVED.value,),\",\"333: ).fetchone()\",\"334: pending = (0 if pending_row is None else int(pending_row[\\\"n\\\"])) + active_pending\",\"335: unresolved = 0 if unresolved_row is None else int(unresolved_row[\\\"n\\\"])\",\"336: reason = \\\"\\\" if latest is None else str(latest[\\\"failure_reason\\\"])\",\"337: return pending, unresolved, reason\",\"338:\",\"339: def _persist_status_file(self) -> None:\",\"340: status = self._status()\",\"341: prospective = self.current_prospective_source_state()\",\"342: pending, unresolved, last_reason = self._reconciliation_status_summary()\",\"343: payload = {\",\"344: \\\"gap_detected\\\": status.gap_detected,\",\"345: \\\"reconnect_detected\\\": status.reconnect_detected,\",\"346: \\\"post_finality_revision\\\": status.post_finality_revision,\"],[\"469: self._meta_set(f\\\"last_sequence:{session_id}\\\", str(sequence))\",\"470: self._db.execute(\",\"471: \\\"\\\"\\\"\",\"472: INSERT INTO sequence_events(\",\"473: session_id,source_sequence,received_at,event_kind\",\"474: ) VALUES(?,?,?,?)\",\"475: \\\"\\\"\\\",\",\"476: (session_id, sequence, received_at.isoformat(), \\\"SEQUENCE\\\"),\",\"477: )\",\"478: self._persist_status_file()\",\"479: return None\",\"480:\",\"481: def current_prospective_source_state(self) -> BitfinexCollectorStatus:\",\"482: # Historical GAP/RECONNECT events are enforced per D1 by finality.\",\"483: # Only reconciliation that is still missing/pending/unresolved blocks\",\"484: # prospective scientific continuity globally.\",\"485: pending, unresolved, last_reason = self._reconciliation_status_summary()\",\"486: post_finality_revision = (\",\"487: self._meta_get(\\\"post_finality_revision\\\") == \\\"1\\\"\",\"488: )\",\"489: reconnect_blocked = pending > 0 or unresolved > 0\",\"490: if post_finality_revision:\",\"491: reason = \\\"post-finality source revision detected\\\"\",\"492: elif unresolved > 0:\",\"493: reason = last_reason or \\\"reconnect reconciliation unresolved\\\"\",\"494: elif pending > 0:\",\"495: reason = \\\"reconnect reconciliation pending\\\"\",\"496: else:\",\"497: reason = \\\"\\\"\"],[\"500: reconnect_detected=reconnect_blocked,\",\"501: post_finality_revision=post_finality_revision,\",\"502: fail_closed_reason=reason,\",\"503: )\",\"504:\",\"505: def current_gap_state(self) -> BitfinexCollectorStatus:\",\"506: return self._status()\",\"507:\",\"508: def latest_canonical_trade(self) -> BitfinexCanonicalTradeV1 | None:\",\"509: row = self._db.execute(\",\"510: \\\"\\\"\\\"\",\"511: SELECT trade_identity,semantic_hash,trade_id,mts,amount,price,source_payload_hash\",\"512: FROM trade_revisions ORDER BY revision_seq DESC LIMIT 1\",\"513: \\\"\\\"\\\"\",\"514: ).fetchone()\",\"515: if row is None:\",\"516: return None\",\"517: return BitfinexCanonicalTradeV1(\",\"518: trade_identity=str(row[\\\"trade_identity\\\"]),\",\"519: semantic_hash=str(row[\\\"semantic_hash\\\"]),\",\"520: trade_id=int(row[\\\"trade_id\\\"]),\",\"521: mts=_dt(row[\\\"mts\\\"]),\",\"522: amount=Decimal(row[\\\"amount\\\"]),\",\"523: price=Decimal(row[\\\"price\\\"]),\",\"524: source_payload_hash=str(row[\\\"source_payload_hash\\\"]),\",\"525: )\",\"526:\",\"527: def create_reconciliation_window(\",\"528: self,\"],[\"531: previous_trade: BitfinexCanonicalTradeV1,\",\"532: next_trade: BitfinexCanonicalTradeV1,\",\"533: created_at: datetime,\",\"534: ) -> ReconciliationWindow:\",\"535: if not isinstance(reconnect_event_seq, int) or isinstance(reconnect_event_seq, bool) or reconnect_event_seq <= 0:\",\"536: raise DemonovError(\\\"reconnect_event_seq must be a positive integer\\\")\",\"537: if not isinstance(previous_trade, BitfinexCanonicalTradeV1) or not isinstance(next_trade, BitfinexCanonicalTradeV1):\",\"538: raise DemonovError(\\\"canonical reconnect boundary trades required\\\")\",\"539: created_at = _utc(created_at, \\\"created_at\\\")\",\"540: if next_trade.mts < previous_trade.mts:\",\"541: raise DemonovError(\\\"reconnect trade boundaries out of order\\\")\",\"542: event = self._db.execute(\",\"543: \\\"SELECT received_at,event_kind FROM sequence_events WHERE event_seq=?\\\",\",\"544: (reconnect_event_seq,),\",\"545: ).fetchone()\",\"546: if event is None or event[\\\"event_kind\\\"] != \\\"RECONNECT\\\":\",\"547: raise DemonovError(\\\"reconciliation window requires RECONNECT event\\\")\",\"548: reconnect_received_at = _dt(event[\\\"received_at\\\"])\",\"549: window_id = canonical_hash(\",\"550: {\",\"551: \\\"schema\\\": \\\"CR0116_BITFINEX_RECONCILIATION_WINDOW_V1\\\",\",\"552: \\\"reconnect_event_seq\\\": reconnect_event_seq,\",\"553: \\\"reconnect_received_at\\\": reconnect_received_at,\",\"554: \\\"previous_trade_identity\\\": previous_trade.trade_identity,\",\"555: \\\"previous_trade_mts\\\": previous_trade.mts,\",\"556: \\\"next_trade_identity\\\": next_trade.trade_identity,\",\"557: \\\"next_trade_mts\\\": next_trade.mts,\",\"558: }\",\"559: )\"],[\"584: ),\",\"585: )\",\"586: except sqlite3.IntegrityError as exc:\",\"587: raise DemonovError(\\\"RECONNECT event already bound to a different reconciliation window\\\") from exc\",\"588: window = self.reconciliation_window(window_id)\",\"589: if window.reconnect_event_seq != reconnect_event_seq:\",\"590: raise DemonovError(\\\"reconciliation window identity conflict\\\")\",\"591: if self._meta_get(\\\"active_reconnect_pending_event_seq\\\") == str(reconnect_event_seq):\",\"592: self._meta_set(\\\"active_reconnect_pending_event_seq\\\", \\\"\\\")\",\"593: self._persist_status_file()\",\"594: return window\",\"595:\",\"596: def reconciliation_window(self, window_id: str) -> ReconciliationWindow:\",\"597: row = self._db.execute(\",\"598: \\\"SELECT * FROM reconnect_reconciliation WHERE window_id=?\\\",\",\"599: (window_id,),\",\"600: ).fetchone()\",\"601: if row is None:\",\"602: raise DemonovError(\\\"reconciliation window not found\\\")\",\"603: return self._reconciliation_from_row(row)\",\"604:\",\"605: def reconciliation_windows_overlapping(\",\"606: self,\",\"607: open_at: datetime,\",\"608: close_at: datetime,\",\"609: ) -> tuple[ReconciliationWindow, ...]:\",\"610: open_at = _utc(open_at, \\\"open_at\\\")\",\"611: close_at = _utc(close_at, \\\"close_at\\\")\",\"612: if close_at < open_at:\"],[\"618: ORDER BY reconnect_event_seq\",\"619: \\\"\\\"\\\",\",\"620: (open_at.isoformat(), close_at.isoformat()),\",\"621: ).fetchall()\",\"622: return tuple(self._reconciliation_from_row(row) for row in rows)\",\"623:\",\"624: def latest_trade_semantic_hash(self, trade_identity: str) -> str | None:\",\"625: row = self._db.execute(\",\"626: \\\"\\\"\\\"\",\"627: SELECT semantic_hash FROM trade_revisions\",\"628: WHERE trade_identity=?\",\"629: ORDER BY revision_seq DESC LIMIT 1\",\"630: \\\"\\\"\\\",\",\"631: (trade_identity,),\",\"632: ).fetchone()\",\"633: return None if row is None else str(row[\\\"semantic_hash\\\"])\",\"634:\",\"635: def has_trade_identity(self, trade_identity: str) -> bool:\",\"636: return self.latest_trade_semantic_hash(trade_identity) is not None\",\"637:\",\"638: def mark_reconciliation_reconciled(\",\"639: self,\",\"640: window_id: str,\",\"641: *,\",\"642: evidence_sha256: str,\",\"643: recovered_row_count: int,\",\"644: resolved_at: datetime,\",\"645: ) -> ReconciliationWindow:\",\"646: return self._mark_reconciliation_terminal(\"]]},\"demonov_forward_map/live_health.py\":{\"sha256\":\"a45da5b399b0a87a40fed04e68c728a9960b604e7b69c0f73aa23042c31349ec\",\"snippets\":[[\"57: return value if value > 0 else None\",\"58:\",\"59:\",\"60:def _open_ro(path: Path):\",\"61: uri = path.resolve().as_uri() + \\\"?mode=ro\\\"\",\"62: return sqlite3.connect(uri, uri=True, timeout=5)\",\"63:\",\"64:\",\"65:def _sqlite_integrity(path: Path) -> bool:\",\"66: if not path.exists():\",\"67: return True\",\"68: try:\",\"69: db = _open_ro(path)\",\"70: try:\",\"71: row = db.execute(\\\"PRAGMA quick_check\\\").fetchone()\",\"72: return bool(row and str(row[0]).lower() == \\\"ok\\\")\",\"73: finally:\",\"74: db.close()\",\"75: except sqlite3.DatabaseError:\",\"76: return False\",\"77:\",\"78:\",\"79:def _last_finalized(path: Path) -> tuple[str | None, str | None]:\",\"80: if not path.exists():\",\"81: return None, None\",\"82: try:\",\"83: db = _open_ro(path)\",\"84: try:\",\"85: close_row = db.execute(\"],[\"107:) -> tuple[int, int | None, int, str | None]:\",\"108: if not prospective_path.exists():\",\"109: return 0, None, 0, None\",\"110:\",\"111: terminal = {}\",\"112: indeterminate = 0\",\"113: last_sent = None\",\"114: if relay_path.exists():\",\"115: try:\",\"116: relay = _open_ro(relay_path)\",\"117: try:\",\"118: rows = relay.execute(\",\"119: \\\"SELECT outbox_id,status,finalized_at \\\"\",\"120: \\\"FROM notification_relay_ledger\\\"\",\"121: ).fetchall()\",\"122: finally:\",\"123: relay.close()\",\"124: for outbox_id, status, finalized_at in rows:\",\"125: terminal[str(outbox_id)] = str(status)\",\"126: if status == \\\"INDETERMINATE\\\":\",\"127: indeterminate += 1\",\"128: if status == \\\"SENT\\\" and finalized_at:\",\"129: stamp = _aware(str(finalized_at))\",\"130: if stamp is not None and (\",\"131: last_sent is None or stamp > last_sent\",\"132: ):\",\"133: last_sent = stamp\",\"134: except sqlite3.DatabaseError:\",\"135: return 0, None, 0, None\"],[\"234: now=current,\",\"235: )\",\"236:\",\"237: reasons: list[str] = []\",\"238: scientific_fail = False\",\"239: degraded = False\",\"240:\",\"241: if any(value is None for value in slo.values()):\",\"242: _append_reason(reasons, \\\"SLO_CONFIGURATION_INVALID\\\")\",\"243: scientific_fail = True\",\"244:\",\"245: prospective_gap = collector.get(\\\"prospective_gap_detected\\\", collector.get(\\\"gap_detected\\\")) is True\",\"246: prospective_reconnect = collector.get(\\\"prospective_reconnect_detected\\\", collector.get(\\\"reconnect_detected\\\")) is True\",\"247: reconciliation_pending = collector.get(\\\"reconciliation_pending_count\\\", 0)\",\"248: reconciliation_unresolved = collector.get(\\\"reconciliation_unresolved_count\\\", 0)\",\"249: reconciliation_last_reason = collector.get(\\\"reconciliation_last_reason\\\", \\\"\\\")\",\"250: reconciliation_status_invalid = (\",\"251: not isinstance(reconciliation_pending, int)\",\"252: or isinstance(reconciliation_pending, bool)\",\"253: or reconciliation_pending < 0\",\"254: or not isinstance(reconciliation_unresolved, int)\",\"255: or isinstance(reconciliation_unresolved, bool)\",\"256: or reconciliation_unresolved < 0\",\"257: or not isinstance(reconciliation_last_reason, str)\",\"258: )\",\"259: if prospective_gap:\",\"260: _append_reason(reasons, \\\"SOURCE_SEQUENCE_GAP\\\")\",\"261: scientific_fail = True\",\"262: if reconciliation_status_invalid:\"],[\"395: and slo[\\\"relay_heartbeat_slo_seconds\\\"] is not None\",\"396: and relay_age <= slo[\\\"relay_heartbeat_slo_seconds\\\"]\",\"397: ),\",\"398: \\\"collector_heartbeat_age_seconds\\\": collector_age,\",\"399: \\\"worker_heartbeat_age_seconds\\\": worker_age,\",\"400: \\\"relay_heartbeat_age_seconds\\\": relay_age,\",\"401: \\\"last_finalized_primary_d1_close\\\": last_finalized,\",\"402: \\\"last_finalized_primary_d1_age_seconds\\\": last_finalized_age,\",\"403: \\\"current_logical_d1_finality_state\\\": current_finality_state,\",\"404: \\\"source_gap_detected\\\": collector.get(\\\"gap_detected\\\") is True,\",\"405: \\\"source_reconnect_detected\\\": (\",\"406: collector.get(\\\"reconnect_detected\\\") is True\",\"407: ),\",\"408: \\\"reconciliation_pending_count\\\": reconciliation_pending,\",\"409: \\\"reconciliation_unresolved_count\\\": reconciliation_unresolved,\",\"410: \\\"reconciliation_last_reason\\\": reconciliation_last_reason,\",\"411: \\\"source_post_finality_revision\\\": (\",\"412: collector.get(\\\"post_finality_revision\\\") is True\",\"413: ),\",\"414: \\\"source_fail_closed_reason\\\": collector.get(\",\"415: \\\"fail_closed_reason\\\",\",\"416: \\\"\\\",\",\"417: ),\",\"418: \\\"signal_outbox_pending_count\\\": pending_count,\",\"419: \\\"oldest_pending_outbox_age_seconds\\\": oldest_pending_age,\",\"420: \\\"indeterminate_delivery_count\\\": indeterminate_count,\",\"421: \\\"last_successful_notification_delivery_at\\\": last_sent_at,\",\"422: \\\"sqlite_integrity_ok\\\": sqlite_integrity_ok,\",\"423: \\\"slo\\\": slo,\"]]},\"demonov_forward_map/producer_policy.py\":{\"sha256\":\"995a4155cd01296a643b0ef7464bf6e7402f68ccb48640b43e8507c8208d98cf\",\"snippets\":[[\"25: if self.decision_id!=self.content_hash: raise DemonovError(\\\"decision_id must match content hash\\\")\",\"26: @property\",\"27: def content_hash(self):\",\"28: d=dict(self.__dict__);d.pop(\\\"decision_id\\\");return canonical_hash(d)\",\"29: @classmethod\",\"30: def build(cls,**kwargs):\",\"31: n=dict(kwargs);n[\\\"payload\\\"]=dict(n.get(\\\"payload\\\",{}));n[\\\"causal_parent_event_ids\\\"]=tuple(n.get(\\\"causal_parent_event_ids\\\",()));n[\\\"source_event_ids\\\"]=tuple(n.get(\\\"source_event_ids\\\",()));return cls(decision_id=canonical_hash(n),**n)\",\"32:class ProducerTransitionPolicy(Protocol):\",\"33: def decide(self,*,state,input_event)->ProducerTransitionDecision: ...\",\"34:class LaunchBlockedTransitionPolicy:\",\"35: policy_id=\\\"CR0107_LAUNCH_BLOCKED\\\"\",\"36: def decide(self,*,state,input_event):\",\"37: decided_at=getattr(input_event,\\\"known_at\\\",None) or getattr(state,\\\"state_at\\\",None)\",\"38: state_before=getattr(state,\\\"interaction_state\\\",None)\",\"39: return ProducerTransitionDecision.build(policy_id=self.policy_id,disposition=\\\"ABSTAIN\\\",state_before=state_before,state_after=None,event_type=None,payload_schema_id=None,payload={},causal_parent_event_ids=(),source_event_ids=(),decided_at=decided_at,reason=\\\"production transition semantics unresolved\\\")\",\"40:\",\"41:@dataclass(frozen=True)\",\"42:class ProducerLaunchGate:\",\"43: transition_policy_frozen: bool\",\"44: live_schema_registry_frozen: bool\",\"45: market_registry_frozen: bool\",\"46: timeframe_registry_frozen: bool\",\"47: fixture_provenance: str\",\"48:\",\"49: def __post_init__(self):\",\"50: flags=(\",\"51: self.transition_policy_frozen,\",\"52: self.live_schema_registry_frozen,\",\"53: self.market_registry_frozen,\"],[\"87: transition_policy_frozen=transition_policy_frozen,\",\"88: live_schema_registry_frozen=live_schema_registry_frozen,\",\"89: market_registry_frozen=market_registry_frozen,\",\"90: timeframe_registry_frozen=timeframe_registry_frozen,\",\"91: fixture_provenance=fixture_provenance,\",\"92: )\",\"93:\",\"94: @classmethod\",\"95: def current(cls):\",\"96: return cls.build(\",\"97: transition_policy_frozen=False,\",\"98: live_schema_registry_frozen=False,\",\"99: market_registry_frozen=False,\",\"100: timeframe_registry_frozen=False,\",\"101: fixture_provenance=\\\"UNRESOLVED_PRODUCTION\\\",\",\"102: )\"]]},\"scripts/v1810_transcript_operator_audit.py\":{\"sha256\":\"72f1bf26be83d77f2255f463e868923e4668e363d6bd27e68997ead346421897\",\"snippets\":[[\"61:t1,y1=pts[idx]\",\"62:for t,y in pts:\",\"63: if t <= t1:\",\"64: line=y0+m_support*(t-t0)\",\"65: assert y <= line + 1e-12\",\"66:# A too-steep candidate (more negative slope) cuts at least one candle.\",\"67:m_bad=min(slopes)\",\"68:assert any(y > y0+m_bad*(t-t0)+1e-12 for t,y in pts)\",\"69:\",\"70:# Status governance.\",\"71:sm={r['rule']:r['new_v2.7'] for r in status}\",\"72:assert sm['MANUAL_CORRECTED_SUPPORTING_ENVELOPE']=='DIRECT_IMPLEMENTATION_STYLE_SUPPORT'\",\"73:assert sm['EXACT_CONVEX_HULL_IS_AUTHOR_MENTAL_RULE']=='UNPROVEN_COMPUTATIONAL_EQUIVALENCE'\",\"74:assert sm['BOUNDARY_SPECIAL_FIRST_POINT_CLASS']=='DIRECTLY_SUPPORTED'\",\"75:assert sm['JAN13_16_17_TRANSCRIPT_IDENTITY']=='RETRIEVED_BUT_OBJECT_ID_UNRESOLVED'\",\"76:\",\"77:out = {\",\"78: 'evidence_rows': len(ev),\",\"79: 'required_operator_rules_present': len(required),\",\"80: 'native_tf_status': tfmap,\",\"81: 'successor_clearance_rows': len(clear),\",\"82: 'successor_closest_interior': closest,\",\"83: 'manual_support_equivalence_synthetic': 'PASS',\",\"84: 'status_assertions': 'PASS'\",\"85:}\",\"86:rawdir=ROOT/'data'/'v18_10_raw'\",\"87:rawdir.mkdir(parents=True,exist_ok=True)\",\"88:(rawdir/'V1810_REPRO_SUMMARY_v2.7.json').write_text(json.dumps(out,ensure_ascii=False,indent=2),encoding='utf-8')\",\"89:print(json.dumps(out,ensure_ascii=False,indent=2))\"]]},\"scripts/v1823_identifiability_closure.py\":{\"sha256\":\"b1a07fd36508b6cf81d1965bc87c75849282413d93fb418d390543ec69b8f97c\",\"snippets\":[[\"1:from pathlib import Path\",\"2:import pandas as pd, json, hashlib, math\",\"3:ROOT=Path(__file__).resolve().parents[1]\",\"4:\",\"5:# Load frozen prior evidence\",\"6:feas=pd.read_csv(ROOT/'599_OCT03_NOVEMBER_ORIGIN_FEASIBILITY_v3.9.csv')\",\"7:pix=pd.read_csv(ROOT/'600_PUBLIC20_21_PIXEL_SEPARATION_STRESS_v3.9.csv')\",\"8:aff=pd.read_csv(ROOT/'603_AFFINE_SEMANTIC_DATE_VS_MAGNET_ANCHOR_STRESS_v3.9.csv')\",\"9:\",\"10:# Hypothesis falsification / identifiability matrix\",\"11:rows=[\",\"12: dict(hypothesis='H1_PUBLIC20_LITERAL_HIGH_SAME_PROMINENT_OBJECT', physical_origin='2021-11-20 daily high', declaration_binding='same prominent Oct03 predecessor', supporting_line='20NovHigh-Apr03High', oct03_origin_render='REJECTED', postfreeze_farfield='REJECTED', downstream_ohlc='requires positive tolerance on tested feeds', late_text='literal date string supports declaration only', status='FALSIFIED_FOR_PROMINENT_OBJECT_UNDER_LITERAL_HIGH_MAGNET'),\",\"13: dict(hypothesis='H2_NOV21_LITERAL_HIGH_SAME_PROMINENT_OBJECT', physical_origin='2021-11-21 daily high', declaration_binding='same prominent Oct03 predecessor', supporting_line='21NovHigh-Apr03High', oct03_origin_render='REJECTED', postfreeze_farfield='REJECTED', downstream_ohlc='requires positive tolerance on tested feeds', late_text='not literally declared', status='FALSIFIED_FOR_PROMINENT_OBJECT_UNDER_LITERAL_HIGH_MAGNET'),\",\"14: dict(hypothesis='H3_NOV10_LITERAL_HIGH_SAME_PROMINENT_OBJECT', physical_origin='2021-11-10 daily high', declaration_binding='same prominent Oct03 predecessor', supporting_line='10NovHigh-Apr03High', oct03_origin_render='COMPATIBLE; only strict-L2 among joint feasible dates', postfreeze_farfield='BEST; two-frame frozen midpoint RMS winner', downstream_ohlc='strict upper-hull certificate on Bitstamp control; no epsilon needed there', late_text='conflicts with literal public date unless typo/alias\",\"15: dict(hypothesis='H4_PUBLIC20_SEMANTIC_ALIAS_PHYSICAL_NOV10', physical_origin='physical 2021-11-10 high; semantic label 2021-11-20', declaration_binding='same prominent Oct03 predecessor', supporting_line='same affine line as H3', oct03_origin_render='INDISTINGUISHABLE_FROM_H3', postfreeze_farfield='INDISTINGUISHABLE_FROM_H3', downstream_ohlc='INDISTINGUISHABLE_FROM_H3', late_text='COMPATIBLE_WITH_LITERAL_PUBLIC_DATE', status='UNRESOLVED_EQUIVALENCE_CLASS'),\",\"16: dict(hypothesis='H5_PUBLIC20_OTHER_OBJECT', physical_origin='unknown / potentially 20Nov-related', declaration_binding='different historical object than prominent Oct03 ray', supporting_line='object-specific unknown', oct03_origin_render='NOT_A_TEST_OF_THIS_OBJECT', postfreeze_farfield='NOT_A_TEST_OF_THIS_OBJECT', downstream_ohlc='cannot identify absent object geometry', late_text='COMPATIBLE', status='UNRESOLVED_OBJECT_BINDING'),\",\"17: dict(hypothesis='H6_PUBLIC_DATE_PAIR_IS_LABEL_NOT_HANDLE_METADATA', physical_origin='unknown handle; public dates are reporting labels', declaration_binding='may be same or other object', supporting_line='underidentified', oct03_origin_render='cannot recover label semantics', postfreeze_farfield='cannot recover label semantics', downstream_ohlc='cannot recover label semantics', late_text='COMPATIBLE', status='UNRESOLVED_SEMANTIC_LAYER'),\",\"18:]\",\"19:pd.DataFrame(rows).to_csv(ROOT/'616_ADVERSARIAL_HYPOTHESIS_FALSIFICATION_MATRIX_v4.0.csv',index=False)\",\"20:\",\"21:channels=[\",\"22: ('DOWNSTREAM_OHLC_AFTER_ORIGIN','supporting-line geometry and clearance','NO','H3 vs H4 are affine-identical after physical line is fixed'),\",\"23: ('FAR_FIELD_CONTEMPORANEOUS_SCREENSHOT','line family / slope-position','NO','can reject 20/21 literal family but not typo vs semantic alias on same line'),\",\"24: ('VISIBLE_FINITE_RAY_ORIGIN_RENDER','physical endpoint region','NO','can bind physical Nov8/9/10 region; cannot tell why late text says Nov20'),\",\"25: ('STRICT_PIVOT_OPERATOR_PRIOR','operator compatibility discriminator','NO','selects Nov10 within feasible region but does not decode declaration semantics'),\",\"26: ('LATE_POST_TEXT_ONLY','declared date-pair identity','NO','reveals literal Nov20 string but not which rendered object/handle it names'),\",\"27: ('LATE_FOLLOWUP_CLASS_NARRATION','2026-to-2022 trendline analogy class','NO','binds analogy at class level, not exact historical object or anchor'),\",\"28: ('ORIGINAL_AUG17_ALBUM_PIXELS','object-to-caption correspondence','POTENTIALLY_YES','can show which line is paired with 20.11.21-03.04.22'),\",\"29: ('SELECTED_HANDLE_OR_EDITABLE_OBJECT','native physical anchor metadata','YES_FOR_HANDLE','can distinguish Nov10 vs 8/9 physical handle; still needs text/object binding for typo vs semantic alias'),\"]]},\"scripts/v1824_modern_semantics_media_control.py\":{\"sha256\":\"ee0794d3780e610f1b8754e034b8b25b9289e7eeff9c2d658752b289bae88f0a\",\"snippets\":[[\"208: dict(test='MODERN_RAW_DATE_HIGH_NO_HIDDENY', evidence='Raw date-high line yields clean outer-envelope holdout and no hidden Y is required for decisive August state sequence.', result='PASS', implication='Modern row does not need arbitrary label semantics to explain geometry.', strength='GEOMETRIC'),\",\"209: dict(test='MODERN_MAY14_ACTIVE_CONSTRAINT_UPDATE', evidence=f'May14 becomes the final active support update in May1-20; it protrudes {float(u14.protrusion_above_previous_active_line_usd):.3f} USD ({float(u14.protrusion_above_previous_active_line_pct):.6f}%) above the prior Oct06->May11 active line.', result='PASS', implication='May14 is operator-like correction/most-protruding-candle event, not merely a nearby calendar label.', strength='DYNAMIC_HULL'),\",\"210: dict(test='MODERN_BREAK_FSM_CROSSFEED', evidence='Both Bitfinex and Coinbase reproduce Aug17 CLOSE -> Aug18 FULL_RANGE for raw date-high ray.', result='PASS', implication='The same compact date identities generate a specific later event chronology on two feeds.', strength='PROSPECTIVE_STYLE_HOLDOUT'),\",\"211: dict(test='LEGACY_PUBLIC20_UNDER_CANDLE_IDENTITY', evidence='Nov20 fails strict L1/L2 cross-venue and literal high+magnet is rejected for prominent Oct03 ray by source-render/far-field evidence.', result='ANOMALY', implication='Under shared operator-compressed semantics, 2022 public `20` is exceptional and needs typo/correction, other-object binding, or explicit semantic exception.', strength='CROSS_ERA_CONTRAST'),\",\"212: dict(test='SEMANTIC_ALIAS_IDENTIFIABILITY', evidence='A semantic 20Nov label can still name the same Nov10 physical line mathematically.', result='NOT_FALSIFIED', implication='Schema evidence changes parsimony/priors but does not logically prove typo.', strength='IDENTIFIABILITY_LIMIT'),\",\"213:]\",\"214:pd.DataFrame(sem_rows).to_csv(ROOT / '628_MODERN_DECLARATION_SEMANTICS_CONTROL_v4.1.csv', index=False)\",\"215:\",\"216:# ---------------------------------------------------------------------------\",\"217:# 6. Same-post schema consistency / hypothesis update without fake probabilities.\",\"218:# ---------------------------------------------------------------------------\",\"219:schema_rows = [\",\"220: dict(hypothesis='H3_NOV10_PHYSICAL_PUBLIC20_TYPO_OR_CORRECTION', preserves_common_date_as_candle_identity_schema='YES', preserves_literal_2022_text='NO_WITHOUT_CORRECTION', matches_prominent_2022_render='YES', matches_2019_magnet_operator='YES', matches_modern_row_semantics='YES', extra_unannounced_semantic_switch='NO', v4_1_update='UPGRADED_IF_SAME_PROMINENT_OBJECT', reason='One character/date correction reconciles common schema, strict pivot, visible origin, far-field geometry and no-cut o\",\"221: dict(hypothesis='H4_PUBLIC20_SEMANTIC_ALIAS_PHYSICAL_NOV10', preserves_common_date_as_candle_identity_schema='NO_OR_REQUIRES_EXCEPTION', preserves_literal_2022_text='YES', matches_prominent_2022_render='YES_PHYSICAL_NOV10', matches_2019_magnet_operator='PHYSICAL_YES_SEMANTIC_LABEL_NO', matches_modern_row_semantics='REQUIRES_2022_ONLY_SCHEMA_EXCEPTION', extra_unannounced_semantic_switch='YES', v4_1_update='DOWNGRADED_BUT_NOT_FALSIFIED', reason='Geometry remains identical to H3, but public dat\",\"222: dict(hypothesis='H5_PUBLIC20_BINDS_OTHER_HISTORICAL_OBJECT', preserves_common_date_as_candle_identity_schema='POTENTIALLY_YES', preserves_literal_2022_text='YES', matches_prominent_2022_render='NOT_APPLICABLE_TO_OTHER_OBJECT', matches_2019_magnet_operator='POTENTIALLY_YES', matches_modern_row_semantics='YES_IF_OTHER_OBJECT_USES_20NOV_CANDLE', extra_unannounced_semantic_switch='NO', v4_1_update='UNCHANGED_UNRESOLVED_OBJECT_BINDING', reason='Still the cleanest way to preserve literal date and \",\"223: dict(hypothesis='H6_DATE_PAIRS_ARE_ARBITRARY_REPORTING_LABELS', preserves_common_date_as_candle_identity_schema='NO', preserves_literal_2022_text='YES', matches_prominent_2022_render='UNDERIDENTIFIED', matches_2019_magnet_operator='WEAK', matches_modern_row_semantics='WEAK_AGAINST_CONTROL', extra_unannounced_semantic_switch='GLOBAL_LABEL_MODEL', v4_1_update='MATERIALLY_DOWNGRADED_NOT_FALSIFIED', reason='Modern dates independently coincide with pivot, active-constraint and break-FSM structure\",\"224:]\",\"225:pd.DataFrame(schema_rows).to_csv(ROOT / '631_SAME_POST_COORDINATE_SCHEMA_CONSISTENCY_v4.1.csv', index=False)\",\"226:\",\"227:# ---------------------------------------------------------------------------\",\"228:# 7. Frozen media observability ledger (manual web retrieval state, no network in script).\",\"229:# ---------------------------------------------------------------------------\",\"230:media_rows = [\",\"231: dict(item='AUG17_TARGET_POST', source='Telegram @tradertrend/4992', observed='post identity + literal text', media_state='TARGET_MEDIA_BYTES_UNOBSERVED', attachment_count='4 via Telemetr search index', access_state='PUBLIC_POST_TEXT_OBSERVED_MEDIA_NOT_EXPOSED_IN_INDEXABLE_TELEGRAM_HTML', url='https://t.me/tradertrend/4992', consequence='Text/object binding remains missing.'),\",\"232: dict(item='AUG17_TELEMETR_INDEX', source='Telemetr channel content page/search index', observed='four Image placeholders after exact coordinate text', media_state='ATTACHMENT_COUNT_KNOWN_BYTES_UNOBSERVED', attachment_count='4', access_state='PUBLIC_INDEX_VISIBLE; direct target media URLs not surfaced in current search representation', url='https://telemetr.me/content/AAAAAEt9uY5bGaRQ2MUsRQ', consequence='Confirms album cardinality, not object-caption mapping.'),\",\"233: dict(item='TELEMETR_PUBLIC_API', source='Telemetr.io Public API Swagger', observed='ChannelMessage has media support; API requires access key', media_state='POTENTIAL_METADATA_CHANNEL_AUTH_GATED', attachment_count='unknown without authenticated query', access_state='ACCESS_KEY_REQUIRED', url='https://api.telemetr.io/swagger-ui/', consequence='Possible future retrieval route if authorized access is available; not evidence by itself.'),\",\"234: dict(item='MAY18_AUTHOR_RENDER_MIRROR', source='Mondiara mirror attributed to Trader 80/20', observed='original author TradingView chart metadata 18.05.2026 10:08 UTC+3; Bitfinex BTC/USD 1D', media_state='MIRROR_BYTES_OBSERVED_IN_WEB_LAYER', attachment_count='1 relevant chart', access_state='PUBLIC_MIRROR', url='https://news.mondiara.com/categories/38/posts/231899', consequence='Confirms modern workflow/feed checkpoint; exact later-published descending object remains visually ambiguous.'),\",\"235: dict(item='MAY18_TELEGRAM_POST', source='Telegram @tradertrend/4947', observed='original post identity recovered', media_state='ORIGINAL_CDN_NOT_PERSISTENTLY_RETRIEVED; MIRRORS_SURVIVE', attachment_count='>=1', access_state='PUBLIC_POST; mirror preservation useful', url='https://t.me/tradertrend/4947', consequence='Establishes mirror-preservation strategy for target Aug17 album.'),\",\"236:]\"],[\"251: 'public_dates': ['2025-10-06','2026-05-14'],\",\"252: 'strict_L1_bitfinex_coinbase': True,\",\"253: 'strict_L2_coinbase': True,\",\"254: 'crossfeed_high_diff_pct': {'oct06': oct_crossfeed_pct, 'may14': may_crossfeed_pct},\",\"255: 'certified_may_support_dates': cert_dates,\",\"256: 'latest_active_constraint_date': updates_df.iloc[-1].new_active_date,\",\"257: 'may14_protrusion_vs_previous_active_usd': float(u14.protrusion_above_previous_active_line_usd),\",\"258: 'may14_protrusion_vs_previous_active_pct': float(u14.protrusion_above_previous_active_line_pct),\",\"259: 'minimum_monthly_proxy_guard_slack_pct_under_preMay14_active_line': float(min_guard[4]),\",\"260: 'aug17_to_aug18_state_two_feeds': 'CLOSE -> FULL_RANGE',\",\"261: },\",\"262: 'hypothesis_update': {\",\"263: 'H3': 'UPGRADED_IF_SAME_PROMINENT_OBJECT',\",\"264: 'H4': 'DOWNGRADED_BUT_GEOMETRICALLY_NONFALSIFIABLE_VS_H3',\",\"265: 'H5': 'UNCHANGED_UNRESOLVED_OBJECT_BINDING',\",\"266: 'H6': 'MATERIALLY_DOWNGRADED_NOT_FALSIFIED'\",\"267: },\",\"268: 'media_bottleneck': 'POST_ID_KNOWN + ATTACHMENT_COUNT_4_KNOWN; TARGET_MEDIA_BYTES/OBJECT_CAPTION_MAPPING_UNOBSERVED',\",\"269:}\",\"270:(RAW / 'V1824_MODERN_SEMANTICS_MEDIA_CONTROL_SUMMARY_v4.1.json').write_text(json.dumps(summary, ensure_ascii=False, indent=2) + '\\\\n', encoding='utf-8')\",\"271:\",\"272:# Freeze direct operator excerpt for audit without needing to parse nested corpus manually.\",\"273:(RAW / 'V1824_DIRECT_AUTHOR_OPERATOR_EXCERPT_m65_v4.1.txt').write_text(\",\"274: f'mnum=65\\\\ndate={by_mnum[65].get(\\\"date\\\")}\\\\n\\\\n{m65}\\\\n', encoding='utf-8')\",\"275:\",\"276:print('V18.24 MODERN SEMANTICS / MEDIA CONTROL: PASS')\",\"277:print(json.dumps(summary, ensure_ascii=False, indent=2))\"]]},\"scripts/v1826_target_media_dual_object_audit.py\":{\"sha256\":\"ec31207b2e873f39c2db6d41775c294ab371fff793b83c1c6bf43edc978bbaea\",\"snippets\":[[\"49:\",\"50:assert abs(get(\\\"BF_NOV10_TO_APR03\\\",\\\"2022-10-03\\\") - 20457.54166667) < 1e-6\",\"51:assert abs(get(\\\"BF_PUBLIC20_TO_APR03\\\",\\\"2022-10-03\\\") - 30835.01492537) < 1e-6\",\"52:assert abs(get(\\\"BF_NOV10_TO_APR03\\\",\\\"2022-11-03\\\") - 15859.63888889) < 1e-6\",\"53:assert abs(get(\\\"CB_APR03_TO_NOV05_SUCCESSOR\\\",\\\"2022-12-22\\\") - 15823.43796296) < 1e-6\",\"54:assert abs(get(\\\"CB_PUBLIC20_TO_APR03\\\",\\\"2023-01-14\\\") - 20938.41791045) < 1e-6\",\"55:\",\"56:# Target media structure: verify only URL/slot facts, not pixels.\",\"57:media=json.load(open(RAW/\\\"V1826_TARGET_MEDIA_BROWSER_OBSERVED_v4.3.json\\\",encoding=\\\"utf-8\\\"))\",\"58:slots=media[\\\"rendered_slots\\\"]\",\"59:assert [x[\\\"telemetr_link_number\\\"] for x in slots] == [39,40,39,40]\",\"60:urls=[x[\\\"url\\\"] for x in slots]\",\"61:assert len(slots)==4\",\"62:assert len(set(urls))==2\",\"63:assert media[\\\"telegram_attachment_cardinality\\\"]==\\\"UNRESOLVED_FROM_TELEMETR_HTML\\\"\",\"64:assert media[\\\"local_byte_freeze\\\"] is False\",\"65:\",\"66:# Jan negative-control arithmetic. Visual band itself is a manual browser estimate,\",\"67:# therefore only separation conditional on that recorded broad band is asserted.\",\"68:jan=json.load(open(RAW/\\\"V1826_JAN2023_BROWSER_IMAGE_LEAD_v4.3.json\\\",encoding=\\\"utf-8\\\"))\",\"69:bf_lit=get(\\\"BF_PUBLIC20_TO_APR03\\\",\\\"2023-01-14\\\")\",\"70:assert abs(bf_lit - jan[\\\"bitfinex_literal20_to_apr03_projection_2023_01_14_usd\\\"]) < 1e-6\",\"71:upper=float(jan[\\\"manual_broad_y_band_at_january_break_candle_usd\\\"][1])\",\"72:assert bf_lit - upper > 2000\",\"73:assert jan[\\\"classification\\\"]==\\\"NEGATIVE_CONTROL_NOT_LITERAL20_OBJECT\\\"\",\"74:\",\"75:# Hypothesis decomposition consistency.\",\"76:h=list(csv.DictReader(open(R/\\\"661_HYPOTHESIS_BINDING_DECOMPOSITION_v4.3.csv\\\",encoding=\\\"utf-8\\\")))\",\"77:hd={x[\\\"hypothesis_component\\\"]:x for x in h}\"]]}},\"source_paths\":[\"demonov_forward_map/bitfinex_reconciliation.py\",\"demonov_forward_map/bitfinex_trade_collector.py\",\"demonov_forward_map/live_health.py\",\"demonov_forward_map/producer_policy.py\",\"scripts/v1810_transcript_operator_audit.py\",\"scripts/v1823_identifiability_closure.py\",\"scripts/v1824_modern_semantics_media_control.py\",\"scripts/v1826_target_media_dual_object_audit.py\",\"scripts/v1828_semantic_alias_nontransferability_audit.py\",\"tests/test_bitfinex_collector_reconnect_loop.py\",\"tests/test_bitfinex_d1_reconciliation_finality.py\",\"tests/test_bitfinex_reconciliation.py\",\"tests/test_bitfinex_reconciliation_health.py\"]}\nTASK_RESULT=HOLD_D1_CLEAN_BUT_GLOBAL_UNRESOLVED_RECONCILIATION_BLOCKS_FINAL\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SIGNALBOT-260921-RECONCILIATION-UNRESOLVED-RCA-052RCA1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n"
}