A time mention is resolved against its document - #740
Merged
WaylandYang merged 3 commits intoSep 17, 2026
Merged
Conversation
This was referenced Sep 17, 2026
WaylandYang
force-pushed
the
feat/extraction-reads-only-the-open-graph
branch
from
September 17, 2026 13:45
1713f69 to
d97fb10
Compare
Base automatically changed from
feat/extraction-reads-only-the-open-graph
to
dev
September 17, 2026 13:52
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: WaylandYang <wayland0916@gmail.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: WaylandYang <wayland0916@gmail.com>
…does not Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: WaylandYang <wayland0916@gmail.com>
WaylandYang
force-pushed
the
feat/a-time-mention-is-resolved-against-its-document
branch
from
September 17, 2026 13:54
caa8ae2 to
db2682c
Compare
WaylandYang
deleted the
feat/a-time-mention-is-resolved-against-its-document
branch
September 17, 2026 14:02
This was referenced Sep 17, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #736. Cuts 1 and 2 of 0045 (#724): a time mention is resolved against its document, by code, from an interpretation the model gives; upload time and file modification time are no longer document dates (#714).
What lands
Contract (
utopia_extract::time, two calls, the model never computes a date):Resolution (
utopia-server::time_resolution, jobresolve_time, enqueued after every open extraction and after a nod): dates the document once and stores the context ondocuments.time_context(the date goes todoc_timewith sourcecontentwhen the document had none); interprets the document's distinct mentions in batches; computes intervals in code (calendar arithmetic with month-end clamping, quarters on the calendar or the fiscal year, truncation to the stated granularity, and the interval a shape implies); grades each mention A (written), B (computed from an anchor the document states) or C (unresolved, nothing written); writesvalid_from/valid_toon the open statement from itswhenandendedmentions. Idempotent, so re-running re-resolves when an anchor turns up.Ledger (migration 0064):
time_mentionscarries the role of the words (when|ended), the interpretation, the grade and the resolved interval with its precisions;documents.time_context;doc_timeis NULL with sourcenonefor every document whose only date was the upload or the file modification time, and the writers no longer fill it;graph::set_open_validitywrites the world-axis position of an open row.Measured on the 25-document batch (NVDA filings, FDA releases, statistics bulletins)
Documents dated from their own text: the ten FDA release paragraphs to their release day, the three 8-Ks to their filing day, the earnings release to its dateline, the seven statistics-bulletin paragraphs to the reporting year 2024 (year precision); the trade-in notice paragraphs and the harbor test text carry no date and get none. Upload time is used nowhere.
51 time mentions on 985 open statements, after the second run of the interpretation call:
33 statements now carry a world-axis position (there were 0); every written precision matches its value (the CHECK constraints hold). Between two runs of the same interpretation call at temperature 0 the model changed its reading of 6 of 51 mentions (a relative period given as a bare period name instead of an anchor); the prompt now says a relative period anchors to the document, and a count inside a named trial does not count from the document.
Not in this change
Extending the document's time context from later chunks (a fiscal year end stated deep in a filing; today only the opening seeds it, so fiscal quarters stay C when the opening is silent). Grades replacing the confidence gate in the temporal engine (0045 cut 3); re-resolution triggered by a person setting a document's date and the time-anchor review queue (cut 4); a null attestation column (
facts.attested_fromstays NOT NULL; undated documents attest nothing throughattested_at); source connectors still pass modification times asdoc_timewith sourcesource(S3, GitHub, Jira, WebDAV, Notion) — worth its own decision.🤖 Generated with Claude Code