Repository navigation
test(claims): corrections and contradictory dates keep each claim's own event time (#717, slice 5) - #927
Conversation
…wn event time (#717, slice 5) Acceptance criterion 3 of #717 had no end-to-end proof. The new handler test runs wiki_extract then wiki_resolve on the default SQLite backend over four memories about one entity: a dated decision, the same decision with a contradictory month-precision date, a dated correction that replaces it, and an undated decision. After resolution every event_time equals what its own sentence states: the superseded claim keeps its older date next to the correction's supersedes pointer and memo, both contradictory dates survive under a conflict_candidate memo, and the undated claim stays unknown. Each extraction is stamped with its own minute because the resolver only supersedes a prior extracted strictly earlier and SQLite's datetime('now') has one-second resolution; event times are never read from that stamp. Mutation check: making update_claim_supersedes also reset event_time fails 2 of the 5 tests. Refs #717 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_018kyZYupbw3xqXghCeXjBKy
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @cdeust's task in 2m 29s —— View job Review 1 of 3: PR #927
None of the five reviews found a Blocker. The comment also has three optional notes. I could not run pytest here because the command needed approval, so CI will show whether the tests pass. Verdict: approve |
Review 1 of 3: PR #927Five reviews ran on the diff: code quality, test coverage, documentation accuracy, security and performance. None found a Blocker. Each check below was done by reading the code:
I could not run pytest in this environment because the command needed approval. CI is the source of truth for that. Notes, no action before merge
Verdict: approve |
Summary
Tranche 5 de #717, critère d'acceptation 3 (« Corrections and contradictory dates preserve provenance and uncertainty; do not invent a date »). Aucun test ne le prouvait de bout en bout. Le nouveau test
tests_py/handlers/test_claim_event_time_supersession.pypasse par le vrai pipeline (wiki_extractpuiswiki_resolve, composition root des handlers, backend SQLite par défaut) sur quatre mémoires liées à la même entité : une décision datée au jour, la même décision avec une date contradictoire au mois, une correction datée qui la remplace (switched to … replaces), et une décision sans date.Après résolution :
event_timevaut exactement ce que sa phrase énonce (la résolution écritsupersedeset des memos, jamaisevent_time) ;supersedeset du memosupersedesde la correction ;conflict_candidatequi nomme la paire ;unknown: aucune date reprise des voisines ni d'extracted_at.Cause racine de la tranche : pas de bug de code trouvé, le comportement était correct mais non prouvé. Aucun changement de code de production.
Refs #717
Type of change
Test plan
pytest tests_py/handlers/test_claim_event_time_supersession.py: 5 passed.test_wiki_pipeline_sqlite,test_claim_event_time_persistence,test_claim_event_time,test_wiki_ir_event_time,test_wiki_extract_superseded) : 172 passed, 4 skipped (PostgreSQL absent).event_timeparupdate_claim_supersedesfait échouer 2 des 5 tests.ruff check,ruff format --check,scripts/check_craftsmanship.py: OK.Note de conception : chaque extraction est horodatée à sa propre minute (
UPDATE … extracted_at), car le résolveur ne remplace qu'une claim extraite strictement plus tôt etdatetime('now')de SQLite a une résolution d'une seconde. Les dates d'événement ne sont jamais lues depuis ce champ.Pas vérifié : la suite complète, pyright et les variantes PostgreSQL (torch ne se télécharge pas dans cet environnement ; le test est SQLite uniquement). La CI fera foi.
Audit notes
extracted_at, pas parevent_time. Une correction extraite avant le claim qu'elle corrige ne le remplacerait pas. Non modifié ici.Reviewer checklist
Tranches restantes de #717 : recherche (
wiki_viewsurevent_time, décision de comparaison entre précisions), synthèse (_claims_for_memory,wiki_frontmatter), intervalles abrégés si décidé.Generated by Claude Code