{"record":{"id":"52f64691d84aec9c","repo":"HKUDS/DeepTutor","slug":"staleinteractionerror-interaction-id-interacti","errorCode":null,"errorMessage":"StaleInteractionError({interaction_id}, {interaction.interaction_id})","messagePattern":"StaleInteractionError\\((.+?), (.+?)\\)","errorType":"exception","errorClass":"StaleInteractionError","httpStatus":null,"severity":"error","filePath":"deeptutor/learning/service.py","lineNumber":413,"sourceCode":"        turn_id: str = \"\",\n    ) -> MasteryInteraction | None:\n        \"\"\"Persist that an interaction card has been presented to the learner.\"\"\"\n\n        def mark(tx):\n            interaction = (\n                tx.get_interaction(interaction_id) if interaction_id else tx.active_interaction()\n            )\n            if interaction is None:\n                active = tx.active_interaction()\n                if active is not None and interaction_id:\n                    raise StaleInteractionError(interaction_id, active.interaction_id)\n                interaction = self._interaction_from_legacy_pending(\n                    tx.progress, session_id=session_id, turn_id=turn_id\n                )\n                if interaction is None:\n                    return None\n                if interaction_id and interaction.interaction_id != interaction_id:\n                    raise StaleInteractionError(interaction_id, interaction.interaction_id)\n            if interaction.status == InteractionStatus.REGISTERED:\n                interaction.status = InteractionStatus.AWAITING_INPUT\n                interaction.session_id = session_id or interaction.session_id\n                interaction.turn_id = turn_id or interaction.turn_id\n                tx.put_interaction(interaction)\n                tx.emit(\n                    \"interaction.awaiting_input\",\n                    {\"interaction_id\": interaction.interaction_id},\n                    session_id=interaction.session_id,\n                    turn_id=interaction.turn_id,\n                )\n            return interaction\n\n        _, interaction = self._store.mutate(book_id, mark)\n        return interaction\n\n    def record_question_answer(\n        self,","sourceCodeStart":395,"sourceCodeEnd":431,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/learning/service.py#L395-L431","documentation":"Error \"StaleInteractionError({interaction_id}, {interaction.interaction_id})\" thrown in HKUDS/DeepTutor.","triggerScenarios":"Thrown at deeptutor/learning/service.py:413 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}