; Fieldtest — canonical-type-names, axis 1: BareCrossModuleTypeRef. ; ; A consumer of std_maybe deliberately writes a BARE `Maybe` in its ; fn signature WITHOUT (import std_maybe). prep.1 migration ; (kernel-extension-mechanics): pre-prep.1 this fixture rejected ; bare `Maybe` even when the import WAS present (the canonical form ; required cross-module type refs to be qualified at all times). ; Post-prep.1 bare-in-scope is canonical; the rejection path narrows ; to "bare-not-in-scope". To preserve the fixture's NEGATIVE role ; the `(import std_maybe)` declaration is dropped; bare `Maybe` is ; now genuinely out of scope and fires `BareCrossModuleTypeRef` ; with the narrowed "not in scope" message. The candidates list ; comes from the consumer's explicit imports + implicit imports; ; here both are empty, so candidates is empty too. ; ; Expected: workspace-load error `BareCrossModuleTypeRef` naming ; the type with the narrowed wording. (module ct_2_bare_cross_module (fn classify (doc "Identity over Maybe; signature uses bare `Maybe` with no import.") (type (fn-type (params (own (con Maybe (con Int)))) (ret (own (con Maybe (con Int)))))) (params m) (body m)) (fn main (type (fn-type (params) (ret (own (con Unit))) (effects IO))) (params) (body (app classify (term-ctor Maybe Just 7)))))