Software Genomics, Groups, And Drift
VersionGopher™ compares software evidence from scans: hashes, versions, paths, formats, archive metadata, signing clues, and provenance. That can support drift detection for managed fleets, but it can also show generic scan similarity when the scans came from unrelated places. In the app this appears as Drift — the dashboard tile and each scan's drawer panel — powered by the Software Genomics method described here.
Using What Changed
Open What Changed from a scan's action menu or from Fleet Drift Analysis. The page supports two different questions, and the mode you choose changes what every bar means.
- Scan to scan: compares each capture with the immediately preceding retained scan. Use it to find when a change first appeared.
- Baseline relative: compares every later capture with one reference scan. A single-machine investigation lets you select it; a fleet uses the first scan in the chosen range. Use this mode to see how far machines have moved from that state.
- Changed: the same normalized path exists in both scans and both hashes are present but different.
- Added: the normalized path exists only in the newer scan.
- Deleted: the normalized path exists only in the older scan.
- Unverified: the path exists in both scans, but at least one side has no usable hash. It is shown separately and is not included in total drift.
Investigate one machine
- Choose Single machine, select the comparison mode, and pick the newer and older scans.
- Click a timeline segment to open its exact comparison. Drag across several segments to zoom into that period.
- Filter Changed, Added, Deleted, or Unverified files, search paths or hashes, and export the filtered evidence when needed.
Investigate a fleet
- Choose Fleet, then select one organization, the groups that should move together, and at least two managed machines.
- Optionally narrow the date range, choose scan-to-scan or baseline-relative mode, and select Analyze selected fleet.
- Read every miniature timeline against the same timestamp axis. A spike in the same horizontal position occurred in the same period across machines.
- Review Changes moving together. A shared event has the same change type, exact normalized path, and hash within the correlation window; isolated events occurred on only one selected machine.
- Click a machine segment to return to the exact two-scan comparison, or change the selected machines to compare a different cohort.
Best for IT shops and small businesses that periodically scan the same kind of machines with the same options. Designate a known-good scan, approve it as the durable baseline, and compare later captures to that intentional reference.
workstations servers kiosks golden imagesBest when users upload unrelated folders, software collections, mounted shares, downloads directories, or historical evidence. The scans may share tools, packages, archives, or hashes without being a controlled drift set.
shared tools common packages same installerHelpful for finding overlap, lineage, known hashes, vulnerable software, suspicious binaries, and archive clues. It is usually not a drift workflow unless the evidence set represents a controlled repeat scan of the same image or endpoint scope.
case folders mounted images offline drivesUseful for comparing target-company evidence, product images, inherited software, and sensitive archives. Grouping helps organize work, but a group name by itself does not prove why the scan was uploaded or whether scans should be treated as drift.
business units product lines acquisition targetsDesignate And Use A Trusted Baseline
VersionGopher 0.7.19 lets platform, organization, and group administrators designate an ordinary scan as an explicit reference. Managed endpoint scans and uploaded embedded or firmware scans use the same lifecycle. A designation starts as candidate; approval is a separate human decision, and a superseded reference can be retired without erasing its history.
- Choose a scan whose target, collector options, privileges, and environment represent the trusted state. Record its scan ID from the scan details or administrative workflow.
-
Create the candidate with
POST /api/scans/<scan-id>/baselines. Supply an optionallabelandnotes, plus onebaseline_type:golden_image,mission,approved_fleet, orreference. -
Review the candidate, then approve it with
PATCH /api/baselines/<baseline-id>and JSON{"status":"approved"}. Usecandidateto reset approval orretiredwhen the reference is no longer current. -
Compare a later scan with
GET /api/scans/<scan-id>/baseline-comparison/<baseline-id>. The result includes similarity and drift percentages, hash-set measurements, file additions/removals/changes, environment deltas, and a guardrail explaining what the evidence can and cannot prove. -
Use
GET /api/baselinesto list active references visible to your admin scope. Add?include_retired=1for lifecycle history. Stored comparisons are reused; reserve?force=1for an intentional recomputation.
How To Use Groups For Real Drift
Groups are a sharing and organization boundary. They also give teams a practical way to keep comparable scans together. For drift, create groups whose purpose is narrow and repeatable.
- Good:
Accounting Workstationsfor the same accounting laptop image scanned monthly. - Good:
Retail Kiosksfor point-of-sale kiosks built from the same image and scanned with the same collector options. - Good:
Linux Web Serversfor a controlled server pool scanned on the same cadence. - Risky:
Uploads,Evidence, orDownloadswhen users mix random folders, incident-response images, and one-off software collections.
Creating A Group Before You Deploy
Create the group before you enroll machines or upload scans, so nothing lands in a catch-all group by accident. Two ways to do it:
- Ahead of time: open Admin → Projects / Groups and choose + New Group. Name it for the fleet slice it will hold (see the patterns below).
- During deployment: the group dropdown in Create MSI bootstrap token and Configure Intune deployment includes + Create a new group, so you can create the right group without leaving the enrollment flow.
Whoever creates the group becomes its owner. Owners can add members and set roles later under Admin → Projects / Groups → Manage — you do not need to sort out membership before deploying. Machines enrolled through an MSI bootstrap or Intune deployment always land in the group tied to that deployment, and drift is measured within that group.
Recommended Group Pattern For IT Teams
Use one group for each fleet slice that should behave like a baseline. Keep scan methods deterministic so the differences VersionGopher sees are likely to be real software changes.
Workstations - Finance: finance laptops or desktops with the same managed software policy.Workstations - Engineering: developer machines, scanned separately because toolchains naturally differ.Servers - Windows: Windows server fleet or a specific server role.Servers - Linux Web: Linux web servers, containers, or VM templates managed together.Golden Images: repeatable scans of base images before deployment.Forensics - Case 2026-001: evidence organization only; interpret as similarity unless the case plan says otherwise.
How To Read Related Scans
Software Genomics looks for shared software markers. Strong overlap can mean many things: the same endpoint scanned twice, a clone, a reimage, a shared baseline, a common vendor package, an archive copied between systems, or simply a popular tool appearing in many places.
- Exact or near-exact match: strong evidence of a repeat capture, clone, reimage, or stable same-host lineage, especially when host and target provenance also match.
- Medium relatedness: likely shared packages, common tools, archive overlap, or product baseline similarity.
- Low relatedness: useful clue for analysts, but not enough to support drift or identity conclusions.
Rules Of Thumb
- Use drift language only for scans that were intentionally collected from the same managed scope.
- Use similarity language for random uploads, case folders, software archives, and mixed forensic images.
- Use separate groups when two fleets are supposed to be different.
- Keep collector version, command-line options, privileges, and target paths as consistent as possible for drift groups.
- Do not treat a group name, by itself, as proof of user intent or host identity.