Part of #44 — spec item 3.
One classifier module owns "does this plugin registration key entry name our package": spec parsing, scoped-name policy, case folding, path-form / file:/// entry resolution. Consumed identically by the suite's registration detector and both status paths.
The generated side receives it through the same mechanism as the rest of the machinery (byte-sync where identical; the core module after item 7) — never a second classifier.
Absorbs the scattered matching logic; drift becomes impossible to introduce on one side only.
Part of #44 — spec item 3.
One classifier module owns "does this plugin registration key entry name our package": spec parsing, scoped-name policy, case folding, path-form / file:/// entry resolution. Consumed identically by the suite's registration detector and both status paths.
The generated side receives it through the same mechanism as the rest of the machinery (byte-sync where identical; the core module after item 7) — never a second classifier.
Absorbs the scattered matching logic; drift becomes impossible to introduce on one side only.