diff --git a/py/api/admin.py b/py/api/admin.py index 8175854..206792e 100644 --- a/py/api/admin.py +++ b/py/api/admin.py @@ -1506,6 +1506,7 @@ class AdminRoutesMixin: try: canonical[key] = json.loads(canonical[key]) except (ValueError, TypeError): + # Preserve malformed metadata for conservative resolver rejection. pass if not canonical.get("prompt") and not canonical.get("parameters"): return None diff --git a/tests/test_prompt_pairs.py b/tests/test_prompt_pairs.py index c219d82..5fb880a 100644 --- a/tests/test_prompt_pairs.py +++ b/tests/test_prompt_pairs.py @@ -253,13 +253,15 @@ class TestPromptPairs(unittest.TestCase): def test_connection_helpers_leave_commit_and_rollback_to_the_caller(self): conn = self.db.model.get_connection() - with self.assertRaisesRegex(RuntimeError, "rollback"): + + def rollback_transaction(): with conn: conn.execute("BEGIN IMMEDIATE") self.db._save_pair(conn, "transient", "temporary", tags=["tag"]) - with self.assertRaisesRegex(RuntimeError, "own transaction"): - self.save() + self.assertRaisesRegex(RuntimeError, "own transaction", self.save) raise RuntimeError("rollback") + + self.assertRaisesRegex(RuntimeError, "rollback", rollback_transaction) self.assertEqual(self.db.list_prompt_pairs()["total"], 0) self.assertEqual(self.db.search_prompts(), []) diff --git a/tools/preview-prompt-timeline.py b/tools/preview-prompt-timeline.py index 2510c78..bb3b1ed 100644 --- a/tools/preview-prompt-timeline.py +++ b/tools/preview-prompt-timeline.py @@ -40,6 +40,7 @@ if __name__ == "__main__": try: server.serve_forever() except KeyboardInterrupt: + # Ctrl+C exits normally; the finally block closes the listening socket. pass finally: server.server_close()