a91c3ffd9452cdebcd78d6c0b4a2392dd712bfbc
User correction during the post-RC-overnight check-in: the 18a "Type::Fn metadata vs. new Type variant" call was justified across DESIGN.md, JOURNAL, and the commit message primarily by "avoids ~250 match-arm sites". That is an observation about the current state of the code, not a design rationale. CLAUDE.md gains two binding rules: - Design rationale ≠ implementation effort. Effort is at most a tiebreaker; a choice whose only stated reason is effort is suspect. The rule names the 18a misstep as the canonical anti-example so future sessions catch it earlier. - Direction freedom + bounce-back conditions inlined (was previously a cross-reference to a private auto-memory file outside the repo, which the user couldn't see). DESIGN.md Decision 10's Schema-additions block now leads with the substantive reasons for per-position metadata: semantic locality (modes belong to fn-parameter positions, not to types in general — Decision 1 line); compositional clarity (type identity vs. calling convention factor apart); future-proofing (per-position metadata generalises; Type-variant approach combinatoric blows up). The match-arm count remains parenthetical, explicitly named a tiebreaker. JOURNAL records the correction itself — the mistake stays as a data point because how design discipline corrupts is informative.
Description
No description provided
Languages
Rust
91.6%
Python
4.6%
C
1.8%
LLVM
1.6%
Shell
0.4%