iter mq.tidy: close 4 actionable drift items from audit-mq
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.
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"iter_id": "mq.tidy",
|
||||
"date": "2026-05-13",
|
||||
"mode": "standard",
|
||||
"outcome": "DONE",
|
||||
"tasks_total": 5,
|
||||
"tasks_completed": 5,
|
||||
"reloops_per_task": {
|
||||
"1": 0,
|
||||
"2": 1,
|
||||
"3": 0,
|
||||
"4": 0,
|
||||
"5": 0
|
||||
},
|
||||
"review_loops_spec": 0,
|
||||
"review_loops_quality": 1,
|
||||
"blocked_reason": null,
|
||||
"tests_pre_iter": 545,
|
||||
"tests_post_iter": 548,
|
||||
"tests_added": 3,
|
||||
"tests_added_names": [
|
||||
"mq_tidy_rigid_var_filter_uses_type_unification",
|
||||
"mq_tidy_bare_class_qualifier_shape_accepted",
|
||||
"mq_tidy_shadow_warning_suppressed_when_no_instance"
|
||||
],
|
||||
"trip_wire_fixtures_repaired": [
|
||||
"mq3_class_method_shadowed_by_fn_warning_fires"
|
||||
],
|
||||
"bench_compile_check_exit": 0,
|
||||
"bench_cross_lang_exit": 0,
|
||||
"bench_check_exit": 0,
|
||||
"bench_check_noise_class_observations_consecutive": 6,
|
||||
"files_touched": [
|
||||
"crates/ailang-check/src/lib.rs",
|
||||
"docs/DESIGN.md"
|
||||
],
|
||||
"notes": {
|
||||
"reloops_per_task.2": "T2 had one quality-phase re-loop: parse_method_qualifier docstring update added to keep helper documentation coherent with the broadened gate (treated as coherence-required edit, not unrequested extra).",
|
||||
"review_loops_quality": "Single quality-phase re-loop on T2 for the docstring-coherence Minor; T3 trip-wire repair was implementer-phase (not a review-loop).",
|
||||
"trip_wire_note": "mq3_class_method_shadowed_by_fn_warning_fires used Registry::default() (no instances); post-T3 spec-rule tightening correctly suppresses the warning, so fixture was updated to ship a clsmod.Show Int registry entry. Analogous to mq.3's typeclass_22b3 trip-wire pattern.",
|
||||
"plan_step_5_inaccuracy": "Plan Task 5 Step 5 expected `cargo run --bin ail -- check examples/prelude.ail.json` to exit 0; actual behaviour is exit 1 (prelude is the loader's auto-injected module). Identical pre-edit; not a regression from this iter."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user