Protected ReadonlyautoProtected ReadonlybackendProtected ReadonlydirectoryFor the Installed view.
ProtectedclassifyDrift takes precedence over Update, mirroring the skill and MCP classifiers: a plugin whose root no longer matches what was installed must be fixed before it counts as updatable, and that is also what keeps the auto-updater from silently replacing edited content. Nothing is lost by fixing first - Fix and Update are the same clean replace, so a single Fix already lands the current registry content.
Both are decided against the one recorded hash, which is always the endorsed one: an update means the registry published a different hash, drift means the tree on disk no longer produces it.
For the Search view.
The marker-less directory Link should adopt for this entry, i.e. what installed-manually refers to.
Adopts an existing local directory by writing the provenance marker.
ProtectedmatchesA marker-less directory carries no identifier, so only the canonical name counts: adopting any other would make Update or Fix create a second directory beside the adopted one.
Frontend view of PluginInstallBackendService, plus the classification the cards render from.