The graph stores when a fact was true (event-time) separately from when you learned it (ingest-time). Most "what was true on date X?" questions need the former; most audit questions need the latter. Confusing them is the most common subtle wrong answer in assistant memory.
When to Use
The user asks about a window: "during 2024," "last quarter," "before we started Project Atlas."
A fact has changed and the user is asking about the old version: "where did Sara work before?"
Reconstructing a sequence of decisions or moves.
Reconciling a contradiction by figuring out which fact came first in the world (not just first in the database).
Workflow
Reach for the right axis. Window queries → event-time. "When did I find out?" → ingest-time. They are different columns; using the wrong one is silently wrong.
Treat event_end = 0 as "still true," not "ended at 0." The query layer expects this convention.
For half-open windows, the cutover instant belongs to the next window. A relation that ended at exactly 2025-01-01 00:00 does not overlap "during 2025."
Normalize relative time before querying. "Last summer," "before her wedding," "around the move." Convert to a concrete [from_ts, to_ts] first, then query.
Surface uncertainty. If the timestamp is approximate, say so in the response — not "in 2023" if you only know "around 2023."
Anti-patterns
Using last_seen as a proxy for "when was this true?" — it's an ingest signal, not an event signal.
Returning the most recent matching row when the question wants the historical row.
Silently downcasting "since spring 2024" to a single point.
Examples
Example 1: "Where did Alice work during 2024?" → Window [2024-01-01, 2025-01-01), event-time overlap. Returns Acme (closed at 2025-01-01) only if it overlaps strictly before that instant.
Example 2: "When did I tell you about my new job?" → Ingest-time query. Look at first_seen on the relation, not event_start of the job itself.
1---2name: temporal-reasoning3description: Temporal Reasoning4---5# Temporal Reasoning67The graph stores when a fact was *true* (event-time) separately from when you *learned* it (ingest-time). Most "what was true on date X?" questions need the former; most audit questions need the latter. Confusing them is the most common subtle wrong answer in assistant memory.89## When to Use10- The user asks about a window: "during 2024," "last quarter," "before we started Project Atlas."11- A fact has changed and the user is asking about the old version: "where did Sara work before?"12- Reconstructing a sequence of decisions or moves.13- Reconciling a contradiction by figuring out which fact came first in the world (not just first in the database).1415## Workflow161. **Reach for the right axis.** Window queries → event-time. "When did I find out?" → ingest-time. They are different columns; using the wrong one is silently wrong.172. **Treat `event_end = 0` as "still true," not "ended at 0."** The query layer expects this convention.183. **For half-open windows, the cutover instant belongs to the *next* window.** A relation that ended at exactly 2025-01-01 00:00 does not overlap "during 2025."194. **Normalize relative time before querying.** "Last summer," "before her wedding," "around the move." Convert to a concrete `[from_ts, to_ts]` first, then query.205. **Surface uncertainty.** If the timestamp is approximate, say so in the response — not "in 2023" if you only know "around 2023."2122## Anti-patterns23- Using `last_seen` as a proxy for "when was this true?" — it's an ingest signal, not an event signal.24- Returning the most recent matching row when the question wants the *historical* row.25- Silently downcasting "since spring 2024" to a single point.2627## Examples28**Example 1:** "Where did Alice work during 2024?" → Window `[2024-01-01, 2025-01-01)`, event-time overlap. Returns Acme (closed at 2025-01-01) only if it overlaps strictly before that instant.2930**Example 2:** "When did I tell you about my new job?" → Ingest-time query. Look at `first_seen` on the relation, not `event_start` of the job itself.
Run npx skillmds@latest add sethdford/temporal-reasoning in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Temporal Reasoning It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
sethdford (@sethdford) published this skill. Their other Agent Skills are listed on their SkillMD profile.