diff --git a/openagent_eval/corpus/staleness.py b/openagent_eval/corpus/staleness.py index a2703d1..5ebca17 100644 --- a/openagent_eval/corpus/staleness.py +++ b/openagent_eval/corpus/staleness.py @@ -7,7 +7,7 @@ from __future__ import annotations import re -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta, timezone from typing import Any from openagent_eval.corpus.base import BaseCorpusAnalyzer @@ -172,6 +172,8 @@ def _extract_timestamp_from_metadata( continue if isinstance(value, datetime): + if value.tzinfo is None: + return value.replace(tzinfo=UTC) return value if isinstance(value, str): diff --git a/tests/unit/test_corpus/test_staleness.py b/tests/unit/test_corpus/test_staleness.py index 1369207..374b45c 100644 --- a/tests/unit/test_corpus/test_staleness.py +++ b/tests/unit/test_corpus/test_staleness.py @@ -59,6 +59,20 @@ async def test_detects_stale_documents(self, detector, stale_doc): ) assert "stale.txt" in report.issues[0].document_ids + @pytest.mark.asyncio + async def test_naive_metadata_datetime_is_treated_as_utc(self, detector): + """Test that naive metadata datetimes do not fail UTC comparisons.""" + doc = CorpusDocument( + doc_id="naive.txt", + content="Old content.", + metadata={"last_modified": datetime(2020, 1, 15)}, + ) + + report = await detector.analyze([doc]) + + assert len(report.issues) == 1 + assert report.issues[0].metadata["last_updated"].endswith("+00:00") + @pytest.mark.asyncio async def test_health_score_decreases_with_staleness(self, detector, recent_doc, stale_doc): """Test health score decreases with more stale documents."""