3.9 KiB
iter ctt.3 — KindMismatch retire (pure deletion across 3 files)
Date: 2026-05-12
Started from: 0e556f085c
Status: DONE
Tasks completed: 2 of 2
Summary
WorkspaceLoadError::KindMismatch, its dispatch site in
validate_classdefs, its walk_kind_mismatch helper, its Display
arm in crates/ail/src/main.rs:workspace_error_to_diagnostic, and
the "dead-but-defensive" doc-comment on the canonical-form-rejection
test are all retired. Two adjacent textual-consistency edits ride
along: the validate_classdefs doc-comment narrows from "Three
diagnostics fire from here" to "Two" with a successor sentence
naming the new path, and the crates/ailang-check/src/lib.rs:1428
22b.1-era archaeology comment drops the KindMismatch token from
its enumeration of class-schema diagnostics and gains a one-line
ctt.3 retirement marker. The existing test
class_param_in_applied_position_fires_canonical_form_rejection
stays green unchanged — it asserts BareCrossModuleTypeRef on the
malformed fixture, which is the canonical-form-validator successor
the plan named. cargo build --workspace clean, no orphan match
arms, no dead-code warnings. cargo test --workspace green
(~600 tests across 16 binary-test suites, zero failures).
Per-task notes
- iter ctt.3.1: atomic deletion pass — 6 Edits across 3 files. workspace.rs ×4 (variant delete;
validate_classdefsdoc + dispatch-loop delete;walk_kind_mismatchhelper delete; "dead-but-defensive" doc delete). main.rs ×1 (W::KindMismatcharm inworkspace_error_to_diagnostic). lib.rs ×1 (22b.1 archaeology comment). Build green at Step 7. - iter ctt.3.2: workspace-wide test gate — grep substantively clean in
crates/(one residualKindMismatchtoken at lib.rs:1431 is the ctt.3 retirement marker introduced by Step 6 itself, not a live consumer); canonical-form-rejection test PASS; fullcargo test --workspacePASS.
Concerns
- Plan-internal contradiction surfaced during Task 2 Step 1: the
plan's Step 6
new_stringdeliberately introduces a newKindMismatchtoken in the ctt.3 retirement marker (// ctt.3: KindMismatch retired — ...), but Task 2 Step 1's verification text says "Expected: zero hits incrates/". The parent spec atdocs/specs/2026-05-12-ct-tidy.md:384is more permissive ("grep KindMismatchreturns the three deletion sites only" — accepting the diff itself as the only mention, but silent on a successor archaeology marker). Substantive intent (retire the diagnostic) is met: variant, helper, dispatch, and Display arm are all gone. Treated ascompliantwith this concern recorded; Boss may choose to either tighten the spec/plan rule for future tidies or accept the retirement-marker pattern (which is already common in the codebase — cf. ctt.1 successor-rationale comments in workspace.rs). - Mid-deletion repair on workspace.rs:773 — the dispatch-loop
deletion in Step 2 orphaned the
mod_namebinding that destructuredfor (mod_name, m) in modules. Plan Step 7's acceptance criterion is "no dead-code warnings" — left asfor (mod_name, m)the build would warnunused variable: mod_name. Minimal cleanup applied: rewrote tofor m in modules.values(). Same body, samem: &Moduletype via.values()instead of tuple-destructure. Not in the plan's verbatim edit list but a foreseeable side-effect of the deletion and entirely mechanical.
Known debt
- None new. The "future tidy may retire" promise in the deleted doc-comment is now this iter; no successor obligation.
Files touched
crates/ailang-core/src/workspace.rs(variant delete + doc adjust + dispatch-loop delete + helper delete + test-doc delete +mod_namebinding cleanup)crates/ail/src/main.rs(Display arm delete)crates/ailang-check/src/lib.rs(archaeology comment edit)
Stats
bench/orchestrator-stats/2026-05-12-iter-ctt.3.json