{
  "schemaVersion": 1,
  "datasetId": "csr-telegram-crypto-signal-message-red-flag-analyzer-2026-07-13-synthetic-fixtures",
  "canonicalUrl": "https://cryptosignalsreview.com/telegram-crypto-signals-red-flags/",
  "modifiedAt": "2026-07-14",
  "sourceCommit": "8f3bd1055e4bed0006d3e48b954dcef33c141ca6",
  "synthetic": true,
  "boundary": "These messages are synthetic parser-contract fixtures. They are not observed provider messages, prevalence data, safety findings, accusations, recommendations or performance evidence.",
  "fixtureCount": 26,
  "adversarialProbeCount": 8,
  "fixtures": [
    {
      "id": "COMPLETE-BASIC",
      "label": "Complete synthetic new signal without a frozen warning phrase",
      "message": "BTC/USDT LONG\nMarket: futures\nVenue: ExampleExchange\nEntry: 65000-65200\nStop loss: 64200\nTP1: 66000\nTP2: 67200\nRisk: 1%\nLeverage: 5x\nValid until: 2026-07-13 14:00 UTC\nMessage ID: 1001",
      "expected": {
        "role": "new_signal",
        "state": "structured_for_manual_review",
        "foundRequired": [
          "instrument",
          "direction",
          "marketContext",
          "entry",
          "stop",
          "targets"
        ],
        "foundSupporting": [
          "venue",
          "leverage",
          "riskSizing",
          "timingText",
          "sourceLocator"
        ],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "MISSING-STOP",
      "label": "Synthetic new signal missing stop or invalidation",
      "message": "ETHUSDT SHORT\nMarket: perpetual\nEntry: 3500\nTargets: 3400, 3300\nValid until 18:00 UTC",
      "expected": {
        "role": "new_signal",
        "state": "incomplete_message",
        "foundRequired": [
          "instrument",
          "direction",
          "marketContext",
          "entry",
          "targets"
        ],
        "foundSupporting": [
          "timingText"
        ],
        "missingRequired": [
          "stop"
        ],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "COMPLETE-GUARANTEE",
      "label": "Complete synthetic new signal with guaranteed-return wording",
      "message": "SOL/USDT LONG\nMarket: futures\nEntry: 150\nStop: 145\nTP1: 160\nValid until 20:00 UTC\nGuaranteed profit - act now",
      "expected": {
        "role": "new_signal",
        "state": "structured_with_warnings",
        "foundRequired": [
          "instrument",
          "direction",
          "marketContext",
          "entry",
          "stop",
          "targets"
        ],
        "foundSupporting": [
          "timingText"
        ],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "guaranteed_return",
          "urgency_pressure"
        ],
        "warningContexts": [
          "literal",
          "literal"
        ],
        "noticeIds": []
      }
    },
    {
      "id": "WARNING-ONLY-SEED",
      "label": "Credential language in a synthetic access pitch",
      "message": "To activate the VIP account, share seed phrase with support now.",
      "expected": {
        "role": "promotion",
        "state": "warning_only_message",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "credential_or_seed_request"
        ],
        "warningContexts": [
          "literal"
        ],
        "noticeIds": []
      }
    },
    {
      "id": "NOT-ASSESSABLE-COMMENTARY",
      "label": "Market commentary without a classified role or warning terms",
      "message": "Market volatility increased after the session opened. Review your own plan and records.",
      "expected": {
        "role": "unclear",
        "state": "not_assessable",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "HIGH-LEVERAGE-FOMO",
      "label": "Complete synthetic new signal with 100x leverage and FOMO language",
      "message": "XRPUSDT BUY\nMarket: perpetual\nEntry: 0.50\nSL: 0.48\nTP: 0.55\nLeverage: 100x\nValid until 13:00 UTC\nDon't miss out on the next 100x",
      "expected": {
        "role": "new_signal",
        "state": "structured_with_warnings",
        "foundRequired": [
          "instrument",
          "direction",
          "marketContext",
          "entry",
          "stop",
          "targets"
        ],
        "foundSupporting": [
          "leverage",
          "timingText"
        ],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "fomo_or_exclusivity",
          "high_leverage_50x_or_more"
        ],
        "warningContexts": [
          "literal",
          "numeric"
        ],
        "noticeIds": []
      }
    },
    {
      "id": "RELEASE-FEE-ONLY",
      "label": "Synthetic release-fee promotion without a signal",
      "message": "VIP support: pay tax to withdraw. Send USDT today to release funds.",
      "expected": {
        "role": "promotion",
        "state": "warning_only_message",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "crypto_payment_request",
          "release_or_unlock_fee"
        ],
        "warningContexts": [
          "literal",
          "literal"
        ],
        "noticeIds": []
      }
    },
    {
      "id": "FORWARDED-EDITED",
      "label": "Structured synthetic forward with edit context",
      "message": "Forwarded from Example Channel\nADA/USDT SELL\nMarket: spot\nEntry: 0.45\nInvalidation above 0.47\nTarget: 0.42\n2026-07-13 09:00 UTC\nEdited",
      "expected": {
        "role": "new_signal",
        "state": "structured_for_manual_review",
        "foundRequired": [
          "instrument",
          "direction",
          "marketContext",
          "entry",
          "stop",
          "targets"
        ],
        "foundSupporting": [
          "timingText"
        ],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": [
          "edited_marker",
          "forwarded_marker"
        ]
      }
    },
    {
      "id": "UNICODE-NORMALIZATION",
      "label": "Full-width labels normalize without executing content",
      "message": "ＢＴＣ／ＵＳＤＴ ＬＯＮＧ\nＭａｒｋｅｔ: futures\nＥｎｔｒｙ: 65000\nＳｔｏｐ: 64000\nＴＰ: 67000\nValid until 12:00 UTC",
      "expected": {
        "role": "new_signal",
        "state": "structured_for_manual_review",
        "foundRequired": [
          "instrument",
          "direction",
          "marketContext",
          "entry",
          "stop",
          "targets"
        ],
        "foundSupporting": [
          "timingText"
        ],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "ZERO-WIDTH-GUARANTEE",
      "label": "Invisible format characters cannot hide a frozen phrase",
      "message": "guaran​teed profit",
      "expected": {
        "role": "unclear",
        "state": "warning_only_message",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "guaranteed_return"
        ],
        "warningContexts": [
          "literal"
        ],
        "noticeIds": [
          "zero_width_characters"
        ]
      }
    },
    {
      "id": "SCRIPT-LIKE-TEXT",
      "label": "Script-like message remains inert text",
      "message": "<script>fetch('/upload')</script>\n<img src=x onerror=alert(1)>",
      "expected": {
        "role": "unclear",
        "state": "not_assessable",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "PAYMENT-REMOTE-ACCESS",
      "label": "Multiple warning categories remain independently visible",
      "message": "VIP activation: install AnyDesk and share your screen. Then send USDT to activate the service.",
      "expected": {
        "role": "promotion",
        "state": "warning_only_message",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "crypto_payment_request",
          "remote_access_request"
        ],
        "warningContexts": [
          "literal",
          "literal"
        ],
        "noticeIds": []
      }
    },
    {
      "id": "MULTI-CLAIM-WARNINGS",
      "label": "Complete new signal with three separate claim-language rules",
      "message": "DOGE/USDT LONG\nMarket: futures\nEntry: 0.10\nStop: 0.09\nTarget: 0.12\n2026-07-13 12:00 UTC\nCan't miss 500% profit in our cooperative trading project",
      "expected": {
        "role": "new_signal",
        "state": "structured_with_warnings",
        "foundRequired": [
          "instrument",
          "direction",
          "marketContext",
          "entry",
          "stop",
          "targets"
        ],
        "foundSupporting": [
          "timingText"
        ],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "cant_miss_or_ai_certainty",
          "extreme_percentage_claim",
          "coordinated_pump_language"
        ],
        "warningContexts": [
          "literal",
          "literal",
          "literal"
        ],
        "noticeIds": []
      }
    },
    {
      "id": "RECOVERY-WITHDRAWAL",
      "label": "Synthetic recovery pitch with withdrawal-permission language",
      "message": "Join our VIP recovery service. We recover your losses after you enable withdrawals.",
      "expected": {
        "role": "promotion",
        "state": "warning_only_message",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "loss_recovery_promise",
          "withdrawal_permission_request"
        ],
        "warningContexts": [
          "literal",
          "literal"
        ],
        "noticeIds": []
      }
    },
    {
      "id": "UNSOLICITED-GROUP",
      "label": "Synthetic unsolicited-group wording",
      "message": "You were added to the group. Join now for VIP access.",
      "expected": {
        "role": "promotion",
        "state": "warning_only_message",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "urgency_pressure",
          "unsolicited_group_context"
        ],
        "warningContexts": [
          "literal",
          "literal"
        ],
        "noticeIds": []
      }
    },
    {
      "id": "NEGATED-EDUCATIONAL",
      "label": "Negated and educational warning phrases remain contextualized",
      "message": "Profits are not guaranteed profit. Never share seed phrase with anyone.",
      "expected": {
        "role": "unclear",
        "state": "warning_only_message",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "guaranteed_return",
          "credential_or_seed_request"
        ],
        "warningContexts": [
          "negated_or_educational",
          "negated_or_educational"
        ],
        "noticeIds": []
      }
    },
    {
      "id": "QUOTED-URGENCY",
      "label": "Quoted educational urgency phrase is not treated as proven pressure",
      "message": "The phrase \"act now\" is an example of urgency language to review.",
      "expected": {
        "role": "unclear",
        "state": "warning_only_message",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [
          "urgency_pressure"
        ],
        "warningContexts": [
          "negated_or_educational"
        ],
        "noticeIds": []
      }
    },
    {
      "id": "UPDATE-COMPLETE",
      "label": "Role-complete synthetic signal update",
      "message": "Update for BTC/USDT signal #100\nMove stop to 65200\nNew target: 67000\n2026-07-13 15:00 UTC",
      "expected": {
        "role": "update",
        "state": "structured_for_manual_review",
        "foundRequired": [
          "instrument",
          "originalReference",
          "updateAction"
        ],
        "foundSupporting": [
          "stop",
          "targets",
          "timingText"
        ],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "UPDATE-MISSING-REFERENCE",
      "label": "Synthetic update without a durable original reference",
      "message": "BTC/USDT update\nMove stop to 65200",
      "expected": {
        "role": "update",
        "state": "incomplete_message",
        "foundRequired": [
          "instrument",
          "updateAction"
        ],
        "foundSupporting": [
          "stop"
        ],
        "missingRequired": [
          "originalReference"
        ],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "CANCELLATION-COMPLETE",
      "label": "Role-complete synthetic cancellation",
      "message": "Cancel BTC/USDT signal #100\nSetup invalidated\n2026-07-13 15:10 UTC",
      "expected": {
        "role": "cancellation",
        "state": "structured_for_manual_review",
        "foundRequired": [
          "instrument",
          "originalReference",
          "updateAction"
        ],
        "foundSupporting": [
          "timingText"
        ],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "RESULT-RECAP-COMPLETE",
      "label": "Role-complete synthetic result recap",
      "message": "BTC/USDT result for signal #100\nTP1 hit\nClosed: win\n2026-07-13 16:00 UTC",
      "expected": {
        "role": "result_recap",
        "state": "structured_for_manual_review",
        "foundRequired": [
          "instrument",
          "originalReference",
          "outcomeStatus"
        ],
        "foundSupporting": [
          "targets",
          "timingText"
        ],
        "missingRequired": [],
        "ambiguousFields": [],
        "issueCodes": [],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "CONFLICTING-DIRECTION",
      "label": "Opposing direction words make a new signal incomplete",
      "message": "BTC/USDT LONG SHORT\nMarket: futures\nEntry: 65000\nStop: 64000\nTarget: 67000",
      "expected": {
        "role": "new_signal",
        "state": "incomplete_message",
        "foundRequired": [
          "instrument",
          "marketContext",
          "entry",
          "stop",
          "targets"
        ],
        "foundSupporting": [],
        "missingRequired": [
          "direction"
        ],
        "ambiguousFields": [
          "direction"
        ],
        "issueCodes": [
          "conflicting_direction"
        ],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "MULTIPLE-INSTRUMENTS",
      "label": "Multiple pair tokens make instrument attribution ambiguous",
      "message": "BTC/USDT ETH/USDT LONG\nMarket: futures\nEntry: 65000\nStop: 64000\nTarget: 67000",
      "expected": {
        "role": "new_signal",
        "state": "incomplete_message",
        "foundRequired": [
          "direction",
          "marketContext",
          "entry",
          "stop",
          "targets"
        ],
        "foundSupporting": [],
        "missingRequired": [
          "instrument"
        ],
        "ambiguousFields": [
          "instrument"
        ],
        "issueCodes": [
          "multiple_instruments"
        ],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "REVERSED-ENTRY-RANGE",
      "label": "Reversed written entry range remains unresolved",
      "message": "BTC/USDT LONG\nMarket: futures\nEntry: 65200-65000\nStop: 64000\nTarget: 67000",
      "expected": {
        "role": "new_signal",
        "state": "incomplete_message",
        "foundRequired": [
          "instrument",
          "direction",
          "marketContext",
          "stop",
          "targets"
        ],
        "foundSupporting": [],
        "missingRequired": [
          "entry"
        ],
        "ambiguousFields": [
          "entry"
        ],
        "issueCodes": [
          "reversed_entry_range"
        ],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "MULTIPLE-STOPS",
      "label": "Distinct stop values remain unresolved without an update chain",
      "message": "BTC/USDT LONG\nMarket: futures\nEntry: 65000\nStop: 64000\nStop loss: 64500\nTarget: 67000",
      "expected": {
        "role": "new_signal",
        "state": "incomplete_message",
        "foundRequired": [
          "instrument",
          "direction",
          "marketContext",
          "entry",
          "targets"
        ],
        "foundSupporting": [],
        "missingRequired": [
          "stop"
        ],
        "ambiguousFields": [
          "stop"
        ],
        "issueCodes": [
          "multiple_stop_values"
        ],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    },
    {
      "id": "BUY-SELL-PROSE",
      "label": "Buy and sell prose does not become a new signal",
      "message": "People buy and sell for different reasons. This paragraph is educational commentary.",
      "expected": {
        "role": "unclear",
        "state": "not_assessable",
        "foundRequired": [],
        "foundSupporting": [],
        "missingRequired": [],
        "ambiguousFields": [
          "direction"
        ],
        "issueCodes": [
          "conflicting_direction"
        ],
        "warningIds": [],
        "warningContexts": [],
        "noticeIds": []
      }
    }
  ],
  "adversarialProbes": [
    {
      "id": "EMPTY",
      "kind": "literal",
      "value": "",
      "expectedState": "empty",
      "expectedProblems": []
    },
    {
      "id": "NUL",
      "kind": "literal",
      "value": "BTC\u0000USDT",
      "expectedState": "malformed_input",
      "expectedProblems": [
        "nul_byte"
      ]
    },
    {
      "id": "UNPAIRED-SURROGATE",
      "kind": "code_units",
      "prefix": "broken ",
      "codeUnits": [
        55296
      ],
      "suffix": " text",
      "expectedState": "malformed_input",
      "expectedProblems": [
        "unpaired_surrogate"
      ]
    },
    {
      "id": "UNSUPPORTED-CONTROL",
      "kind": "literal",
      "value": "broken\u0001text",
      "expectedState": "malformed_input",
      "expectedProblems": [
        "unsupported_control"
      ]
    },
    {
      "id": "BIDI-OVERRIDE",
      "kind": "literal",
      "value": "BTC‮/USDT",
      "expectedState": "malformed_input",
      "expectedProblems": [
        "bidi_control"
      ]
    },
    {
      "id": "MAX-BYTES-CODEPOINTS-LINE",
      "kind": "repeat",
      "value": "A",
      "count": 32769,
      "expectedState": "limit_exceeded",
      "expectedProblems": [
        "max_utf8_bytes",
        "max_code_points",
        "max_line_code_points"
      ]
    },
    {
      "id": "MAX-LINES",
      "kind": "repeat_lines",
      "value": "x",
      "count": 301,
      "expectedState": "limit_exceeded",
      "expectedProblems": [
        "max_lines"
      ]
    },
    {
      "id": "MAX-LINE-LENGTH",
      "kind": "repeat",
      "value": "x",
      "count": 2001,
      "expectedState": "limit_exceeded",
      "expectedProblems": [
        "max_line_code_points"
      ]
    }
  ]
}
