{"record":{"id":"38c946ddd088b201","repo":"BerriAI/litellm","slug":"reminder-markers-entries-must-not-be-blank","errorCode":null,"errorMessage":"reminder_markers entries must not be blank","messagePattern":"reminder_markers entries must not be blank","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/router_strategy/complexity_router/config.py","lineNumber":92,"sourceCode":"\n\nclass ReminderMarkerPair(BaseModel):\n    \"\"\"One open/close delimiter pair a harness wraps injected context in.\n\n    Normalizing here rather than at the scan is what makes matching case-insensitive: markers reach\n    the scan already lowered, so it lowercases only the haystack and never the needles. Stripping\n    keeps YAML indentation whitespace from becoming part of the delimiter.\n    \"\"\"\n\n    open: str = Field(description=\"Opening delimiter, e.g. '<system-reminder>'\")\n    close: str = Field(description=\"Closing delimiter, e.g. '</system-reminder>'\")\n\n    @model_validator(mode=\"after\")\n    def _normalize(self) -> \"ReminderMarkerPair\":\n        open_marker: Final = self.open.strip().lower()\n        close_marker: Final = self.close.strip().lower()\n        if not open_marker or not close_marker:\n            raise ValueError(\"reminder_markers entries must not be blank\")\n        if open_marker == close_marker:\n            raise ValueError(\"reminder_markers open and close must be different strings\")\n        self.open = open_marker\n        self.close = close_marker\n        return self\n\n\n# ─── Default Keyword Lists ───\n# Note: Keywords should be full words/phrases to avoid substring false positives.\n# The matching logic uses word boundary detection for single-word keywords.\n\nDEFAULT_CODE_KEYWORDS: Final[list[str]] = [\n    \"function\",\n    \"class\",\n    \"def\",\n    \"const\",\n    \"let\",\n    \"var\",","sourceCodeStart":74,"sourceCodeEnd":110,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/router_strategy/complexity_router/config.py#L74-L110","documentation":"Pydantic validator on ReminderMarkerPair: the open or close delimiter is blank after stripping. Blank markers would make the context-injection scanner match everywhere, so the pair is rejected.","triggerScenarios":"Thrown at litellm/router_strategy/complexity_router/config.py:92 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use non-blank strings for reminder_markers entries."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}