Safeguard
Security Guides•

Which date in an incident write-up matters for your scoping?

An incident write-up mixes publish, removal, disclosure, advisory and edit dates. Learn which one scopes your exposure and where to find each timestamp.

Safeguard Security Team
6 min read

The date that matters for scoping is when the bad version was published and became installable, through to when your own systems stopped serving it. The disclosure, advisory and edit dates in a write-up matter too, but they answer other questions. Learn to tell them apart, then read each one for what it says.

Why dates cause confusion

An incident write-up often contains four or five dates in two paragraphs. A reader scanning quickly may pick the first one and treat it as "when it happened". That is how teams scope the wrong window and either miss an exposure or raise a false alarm.

Each date is true. They simply describe different events. Reading them in order, with a label on each, removes most of the confusion.

The five dates

DateWhat it marksQuestion it answers
Publish dateWhen the bad version appeared in the registryWhen could anything have installed it?
Removal or fix dateWhen the registry or maintainer removed or replaced itWhen did it stop being available upstream?
Discovery dateWhen someone noticed the problemHow long was it live before anyone knew?
Disclosure or advisory dateWhen a public notice or record appearedWhen could scanners and the public learn of it?
Last edit dateWhen the write-up or record was changedIs what I read still current?

A sixth date belongs to you: the time your own mirror or cache stopped serving the version. It is often the latest of all.

Where to find each one

Do not rely on prose alone. Many dates can be read from the systems themselves.

  • npm publish time. The npm documentation shows that npm view can read a package's time field, including a single version's entry. Run npm view some-package time --json and read the timestamps for the versions named in the write-up.
  • PyPI upload time. The PyPI JSON API documentation describes release file entries that include upload time fields. The route is https://pypi.org/pypi/some-project/json.
  • Advisory creation and update dates. The GitHub Advisory Database documents search qualifiers for created and updated dates, in ISO 8601 form, with sorting by newest or most recently updated. That gives you the advisory side of the timeline.
  • Download timing. The npm download counts documentation says daily data is processed soon after UTC midnight, so a given day's numbers reflect UTC days.

Registry timestamps are machine records and are generally more reliable than a date typed into a blog post. When the two disagree, note both and trust the registry for when the file existed.

A worked example

Imagine a write-up published Friday at 16:00 UTC. It says: "On Tuesday we noticed unusual behavior in version 6.1.0. The version was removed on Wednesday. An advisory was filed Thursday."

Read naively, you might think the problem began Tuesday. Check the registry and you find 6.1.0 was published the previous Friday at 22:10 UTC. Now the timeline looks like this.

  1. Friday 22:10 UTC (previous week): version 6.1.0 published.
  2. Tuesday: maintainer notices something odd. Discovery.
  3. Wednesday: version removed from the registry.
  4. Thursday: advisory filed. Scanners can begin to match.
  5. Friday 16:00 UTC: write-up published.

Your exposure window runs from the previous Friday night to Wednesday, plus any mirror lag. That is nearly a week, not the single day the first sentence suggests. A build that ran on Saturday, long before anyone noticed anything, falls inside it.

If you had used the discovery date as the start, you would have missed every build from the weekend and Monday. That is the mistake this post exists to prevent.

Steps to build the timeline

  1. Copy every date and time from the write-up into the ticket, each with a label for what it marks.
  2. Pull the registry timestamps for the versions named, and add them with their source.
  3. Convert everything to UTC. Mixed time zones cause errors of hours.
  4. Add your own dates: when your mirror stopped serving it, and when your last relevant build ran.
  5. Choose the window start from the publish time and the end from the latest of removal and your own cutoff.
  6. Note any dates that conflict and who you trust for each.

See the earlier post on building the exposure window for how to match builds to the result.

Mistakes to watch for

MistakeEffectFix
Starting the window at discoveryMisses builds before anyone noticedStart at publish time
Ending at the write-up dateMisses mirror and cache lagEnd at your own cutoff
Trusting a date typed in proseMay be rounded or in a local time zoneCheck the registry timestamp
Ignoring edit datesYou may act on an outdated version of the pageNote when you read it and when it was last changed

A short habit helps: whenever a date appears in a write-up, write a label next to it in your notes before you use it. If you cannot say what the date marks, it is not ready to use.

Try it yourself

Click through it at your own pace, or open it full screen. Use it to see how items for new issues appear over time, and practice labeling which date each timestamp represents.

Safeguard's zero-day discovery and SBOM inventory give you the package and version side of this question, so matching a named version against what you run is a lookup rather than a search.

Quick check

Which date should I use as the start of my exposure window?

The registry publish time of the bad version, not the discovery or disclosure date. Anything installed after publication could have pulled it.

What if the write-up and the registry disagree on a date?

Record both, trust the registry timestamp for when the file existed, and note the disagreement in the ticket.

Why convert everything to UTC?

Mixed time zones can move a build inside or outside the window by hours. UTC makes registry data, logs and write-ups comparable.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.