well-formed types Foo<T>, which means that all the where clauses on the type Foo are implemented

It seems like the latter two names should be altered, but not clear precisely to what.

we more or less decided to call this being legal

As I said before... this seems more confusing than helpful; now you have to explain the distinction between "legal" and "well-formed" when these two are actually more or less synonyms in natural language.

I think it would be better to state what sort of WF-ness it is; e.g. WFTrait(...), WFImpl(..) and whatnot...
This reduces "reasoning footprint" and ambiguity in the rules

well-formed trait references T: Trait, which means that T: Trait is implemented and so are all of its where clauses

I like "fully implemented" for this, though it's maybe not perfect. But it gives me a much stronger intuition than "well-formed" ever did. =)

@nikomatsakis all I'm saying is that "legal" and "wf" are synonyms; imo you gain nothing my having two words for it... just more confusion -- if you want to distinguish, talk about what sort of legality it is in the name

Basically the first context is sort of "visible to end users" -- it describes the conditions that must be met or else a user error is reported. The other two contexts are more internal.

So, @centril, I believe that well-formed is used traditionally to basically mean "all names are in scope". I reviewed briefly the Wadler paper to double check that intuition, and it seems to match (let me know if you think I am mistaken). It's a very simple guarantee. For historical reasons (read: my fault), I somehow started using the term in a more expansive way in rustc.

The conditions I am describing via "legal" is sort of analogous to what the OK judgements in Featherweight Java (see Fig 7). I prefer legal to "OK" =)