1b6cbcb68b
T1 [high-1]: refine_multi_candidate_residual rigid-var filter now requires class + type-unification via constraint_type_matches, so forall a b. prelude.Show a, userlib.Show b => ... shapes discriminate by which typevar the residual is on. Discharge-time only; synth-time twin doesn't have a residual type to unify against (fresh metavar constructed after dispatch). T2 [high-2]: qualifier_is_class_shape extracted as pub(crate) helper adjacent to parse_method_qualifier; broadened to accept PascalCase single-segment qualifiers like Show.show alongside module-qualified ones. Same-module bare-class call sites now reachable; symmetric to mq.1 canonical-form rule. T3 [medium-1]: any_candidate_class_has_instance pub(crate) helper gates the class-method-shadowed-by-fn warning closure on registry instance presence (any candidate class, any type). Conservative tightening of the spec rule per Boss Q2 decision. T4 [medium-2]: four DESIGN.md Data Model schema fragments (SuperclassRef, InstanceDef.class, Type::Con.name, Constraint.class) annotated with canonical-form cross-references. Two trip-wires fixed inline: parse_method_qualifier docstring coherence, mq3 in-crate test fixture-repair (registry instance injection — analogous to mq.3 typeclass_22b3 pattern). 5/5 tasks. 548 tests green (was 545 + 3 new mq_tidy_* unit tests). bench/compile_check.py + cross_lang.py exit 0; check.py exit 0 both runs with noise-class metric migration on latency.implicit_at_rc.* max-tail (6th-consecutive observation since audit-cma). Baseline pristine.