A power-market interface should remember time.
Forecast vintages, live feeds, and delayed disclosures become knowable at different moments. Event time and publication time have to stay apart.

Power markets do not have one present. A five-minute dispatch interval, an hourly forecast vintage, a monthly queue snapshot, and a sixty-day disclosure can all describe the same operating day while becoming knowable weeks apart.
An interface that flattens those clocks looks simpler and quietly makes hindsight easy to mistake for what someone knew at the time. ERCOT publishes per-unit dispatch — base points, telemetered output, sustainable limits, and ancillary responsibility for every generation and load resource — at five-minute resolution, sixty days after the fact, on the order of 250,000 rows for a single disclosure day. It is the deepest record of what actually happened and the worst possible basis for a claim about what an operator could see.

The event and the evidence do not arrive together.
Historical analysis can preserve what was knowable at the time.
Conceptual product sequence. The tools and records vary with the market question.
01
Observation time is part of the value.
Every dataset contract names its event column and, where the source has one, its publication column, and it states whether a timestamp is an instant, an interval start, an interval end, or a date label. That is not metadata for its own sake. An interval-start convention read as an interval end shifts an entire day of prices by one interval, and nothing downstream will flag it.
For forecasts, the publication column carries the whole argument. ERCOT's mid-term load forecast issues a new vintage every hour across a seven-day horizon, broken out by weather zone and system total, and the public supply-and-demand feed carries realized demand alongside successive intraday forecast vintages for the same target at five-minute resolution. Comparing an actual against the forecast means nothing until the sentence says which issuance.
The distinction also decides what a change means. Movement across target times describes the shape of a curve. Movement across issue times for one fixed target describes a revision. Calling the first one convergence, or a forecast correcting itself, is a category error that a single timestamp column cannot protect anyone from.
02
Different cadences should not pretend to be one feed.
The catalog holds five-minute dispatch prices beside hourly day-ahead clears, planned-outage limits posted twice each business day, monthly congestion-revenue-right auction results, monthly interconnection-queue snapshots, and federal generator registrations that arrive as monthly and annual snapshots. They belong in one market model. They must never imply one freshness.
So freshness is a property of the dataset, and the product is deliberate about what it does and does not mean. A staleness threshold marks returned evidence as old; it is explicitly not a statement about the source's publication cadence, latency, or service level. A cadence label describes the data interval, not a promise about when the next file lands. When a source has not published, the surface renders empty rather than carrying the last value forward into a live conclusion.
Emptiness is typed for the same reason. Each contract declares whether an empty result is authoritative for the filtered scope or simply unknown, so zero rows can mean that nothing was reported or only that this filter and window found nothing. A returned row count and the span between its first and last timestamps describe the query result and nothing else; they are not evidence of feed coverage, publication lag, or a hole in the day.
03
The timeline is a working surface.
A useful timeline moves between now, before, and next without rebuilding the screen, and the layers move with it. Reading the interconnection queue at a past instant asks what was on file as of that date; reading it at a future one asks what is proposed to be delivered by then. Same table, different question, and the clock is what distinguishes them.
The agent inherits that state. A follow-up such as “what changed thirty minutes earlier?” only works when the market, geography, and clock stay attached, and calendar words resolve in the market's own timezone rather than the reader's: today in ERCOT is America/Chicago, in CAISO America/Los_Angeles, in NYISO and PJM America/New_York.
Time is not a filter applied after the query. It is part of the analytical state.
04
Durable research requires two clocks.
The strongest version of this is enforced rather than encouraged. A historical forecast comparison has to filter publication time to at or before the target time and then reduce to one vintage per target. A query that applies the causal filter but leaves several vintages standing comes back as requiring vintage reduction before it runs, and a query that ranks vintages without the causal filter is rejected as well. Only both together reconstruct what was knowable.
The queue desk pictured above is the same idea in a much slower market. ERCOT's interconnection queue is a monthly snapshot, so the product diffs consecutive postings into the projects that entered, exited, or changed, records which fields moved, and measures a commercial operation date slip in days. The interesting object is not the current queue. It is the sequence of publications that produced it, and what each one said at the time.
Showing those seams is what makes the work reproducible. Sanding them away would only make the product look calmer than the grid it describes.