Keep Dependabot’s recorded dependency value separate from the advisory’s vulnerable range. When adding dependency.version_requirement to an alert report, preserve its raw text and distinguish a missing field from null; neither is evidence that a dependency is safe. Start with a read-only sample and a parser test before changing the report your team relies on.

A potato reviewer holds separate Recorded dependency and Advisory range cards.
AI-generated conceptual illustration: the recorded dependency value and advisory range answer different questions.

What changed on October 20, 2026

GitHub added version_requirement to Dependabot alert REST responses and webhooks. It contains the dependency value last recorded for the alert: a resolved version from a lockfile or dependency submission, or a manifest’s version or constraint when no lockfile supplies it. The advisory’s vulnerable range is a different field. GitHub explicitly cautions that the value can be null, long constraints can be truncated, and one recorded value may not represent every vulnerable version covered by an alert. See the October 20 announcement.

This is useful report context, not a fresh inventory of everything installed. The practical task is to carry that context into your existing handoff without turning uncertainty into a confident-looking spreadsheet cell. The worksheet and proposed tests below are an editorial workflow, not a report from a live integration test.

Three folders are labelled Lockfile, Manifest and Build submission.
AI-generated source inventory, not an API response. Determine provenance from evidence rather than the shape of a string.

Label the value without guessing its origin

Use a heading such as “Recorded dependency value,” not “Installed version.” Keep the exact returned string in a raw field. A tidy-looking number does not prove which detection route produced it. If provenance matters to a decision, inspect the repository evidence or build submission separately and record the evidence link.

For example, a synthetic value >=2.0, <3.0 is not one installed release. Do not remove the operators to make it fit a numeric column. Nor should a report assume that version syntax from one package ecosystem applies to every other ecosystem. Preserve meaning first; sort and format second.

A compact alert handoff record

Copy this record into your internal issue or review document. Keep repository details within your team’s approved destination. Fill only what you actually observed; an unanswered question gets an owner, not an invented answer.

FieldWhat to recordCheck before handoff
IdentityHost, repository and alert numberCan another reviewer open the same alert? Do not merge records merely because package names match.
Dependency contextPackage, ecosystem and manifest pathAre similarly named dependencies in different paths still distinguishable?
Recorded valueRaw version_requirement plus present, null or missing statusDid any conversion replace an unknown with zero or an empty success?
Advisory contextVulnerable range in its own fieldCan the reader tell the advisory condition from the repository record?
ObservationFetch time, response source and recorded alert update timeFetch time describes this export, not when the dependency was last observed.
Follow-upUnresolved question, evidence needed and responsible reviewerDoes the next person know what to check rather than merely seeing a blank?
An empty Unknown card stands beside a filled Recorded card and a reminder that unknown is not a clean result.
AI-generated conceptual reminder: an unavailable value is not evidence of safety.

Keep unknowns visible

“Missing” means your input did not contain the key. “Null” means the key was present with a null value. Preserve that difference when reviewing old captured payloads alongside newer ones. If your transformation encounters an unexpected type, stop that row for review instead of silently coercing it into a plausible version.

A sensible display might show “Not supplied” for null and “Field absent in input” for missing, while retaining the original payload in an approved evidence location. These are suggested labels, not GitHub response values. Do not display either as “No vulnerable version.”

A potato holds an A card beside a folder containing A, B and C cards.
AI-generated schematic: one reported item need not describe the whole set. Letters and decorative bars are not measured versions or metrics.

One row is not necessarily the whole dependency picture

Before a remediation decision, ask whether the alert’s recorded value is enough for the question being answered. If a reviewer needs to know every occurrence in a monorepo, a single displayed value is not an inventory. Keep the alert link and manifest path available so the reviewer can inspect the actual affected context.

Separate two deliverables: a faithful export of what the alert says, and an investigation of what the project currently contains. Completing the first does not complete the second. Likewise, adding a new column should not automatically dismiss alerts, edit manifests or approve upgrades.

Test the report before sending it downstream

The following are synthetic test cases to add to your own parser suite. They are not live API observations or actual package recommendations. Record the input, expected output and observed output for each.

Synthetic inputExpected handlingFailure to catch
String “2.4.1”Retain the exact string and present statusNumeric conversion or loss of punctuation
String “>=2.0, <3.0”Retain the entire constraint as one valueSplitting at the comma or claiming one resolved release
Explicit nullRetain null status and an unknown-value labelSubstituting zero or a safe result
Key absentRetain missing statusSilently treating an older payload as a current null response
Two repositories, same alert numberKeep two separately identified recordsOverwriting one row with another
Request failsReport an incomplete collectionTurning a permissions or transport error into “zero alerts”
Four unchecked test cards are labelled Exact, Constraint, Null and Missing.
AI-generated proposed-test illustration. Unchecked cards are planning prompts, not observed test results.

For a real read-only collection, use the documented endpoint and access appropriate to its scope. The REST reference distinguishes repository, organization and enterprise endpoints. List responses are paginated; the maximum page size is 100, not a promise that one request contains every result. Follow the documented pagination links and record incomplete collection separately from a genuinely empty result.

A small release gate for the new column

The win is not one more filled column. It is a report that helps the next person make the right distinction: what was recorded, what is unknown, and what still needs checking. For a related but separate dependency task, use our GitHub Actions lockfile review worksheet; it concerns workflow dependencies, not Dependabot alert exports.