| Confirmed compromise | Affected package/version was installed and lifecycle/build execution or credential-harvesting behavior is observed. | Lockfile/cache hit plus npm logs, process telemetry, build logs, proxy logs, or endpoint telemetry. | Isolate host or runner, preserve package artifacts, and rotate reachable credentials from a clean environment. | Affected artifacts are removed, credentials rotated, and downstream audits show no unauthorized write activity. |
| Presumed exposed | Affected package/version was installed on a credential-bearing workstation, runner, or builder, but runtime telemetry is incomplete. | Lockfile, package cache, build log, container layer, or package-manager record. | Keep npm, GitHub, cloud, SSH, and deployment credentials in scope. | Owners confirm clean rebuilds and credential rotation or accept documented residual risk. |
| Potentially exposed | Dependency inventory shows affected package names but resolved versions or execution are unknown. | Manifest, lockfile, registry proxy logs, and build records. | Reconstruct package resolution and lifecycle execution. | Each hit is dispositioned as confirmed, presumed, or not exposed. |
| Not exposed | No affected package names, versions, caches, build logs, or selectors appear in complete evidence. | Negative repository, CI, package cache, endpoint, and proxy searches. | Preserve negative evidence and enforce lifecycle-script controls. | Evidence coverage includes endpoints, CI, build images, and package mirrors. |
| Unknown | Dependency, cache, endpoint, build, or audit telemetry is missing. | Named gap with owner and retention window. | Keep reachable credentials in scope until evidence or rotation closes the gap. | Missing evidence is recovered or risk owner accepts uncertainty. |