Safeguard
Compliance•

How do you give an auditor a complete list of dependency changes?

Auditors sample from a full population. How to produce a complete, defensible list of dependency changes from version control, tickets and deployments.

Safeguard Security Team
3 min read

Export every merged change that touched a dependency manifest or lockfile in the audit period, join it to its pull request, ticket and deployment, and give the auditor that list as the population. Explain how you built it, because completeness is the question they will ask first.

Why the population matters

Sampling only works if the list the sample comes from is complete. If your list omits emergency changes or automated updates, the sample says little about the real process. Our post on how auditors sample evidence, population and sample covers the principle. This post covers building the list for dependency changes specifically.

Sources for the list

Use at least two independent sources and reconcile them:

  1. Version control. Commits merged to production branches that modified manifest or lockfile paths, in the audit window.
  2. Pull request system. The matching pull requests, with approvers and checks.
  3. Change tickets. Tickets categorised as dependency or library changes.
  4. Deployment records. Releases that shipped each commit.

If a commit exists in version control with no ticket, that is a finding to explain, not hide. Automated update bots and direct pushes by administrators are the usual culprits.

Fields to include

FieldWhy it helps
Commit hash and dateAnchors the change in time
Repository and pathShows scope
Package, old version, new versionShows what actually changed
Pull request ID and approverShows review
Change ticket ID and categoryShows classification
Gate or scan resultShows security check
Deployment timeShows when it reached production
Path takenStandard, normal or emergency

Build it reproducibly

Write a small script that produces the list from the sources and keep the script and its output date. If an auditor asks you to rerun it for a different window, you can. Avoid building the list by hand in a spreadsheet, which is hard to defend.

Check completeness two ways. First, compare the count of production deployments that included a manifest change against the number of rows. Second, pick a few known changes from memory and confirm they appear.

Common holes

  • Bot commits. Include them, labelled as bot authored, with the human approver.
  • Squashed or rebased history. Use the merge event, not just commit messages.
  • Monorepos. Filter by path, and include nested manifests.
  • Direct hotfixes. Include them and show the emergency path record.
  • Container base image bumps. Decide whether they are in scope and say so.

What to hand over

Give the auditor the list, the method note, the extraction date and a point of contact. Offer to provide any row's linked evidence quickly. A short README beats a long email.

Try it yourself

Click through it at your own pace, or open it full screen.

Look at how an inventory can be filtered to see what changed.

Quick check

Do we include changes made by a bot?

Yes. Label them clearly and show the human review of the merge, if there was one.

What if a change has no ticket?

List it anyway, explain why, and record the corrective action. Hiding it is the riskier choice.

Safeguard can produce an SBOM and dependency inventory for each build to help reconcile what shipped, and you can run a free scan at gold.safeguard.sh/scan.

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.