You clearly misunderstood me. First, I was not suggesting that functions are a good substitute for every protocol (I am, after all, ”Mr. Protocol-Oriented”). I was saying that this particular protocol started out as something that didn't even need to exist. I said it could have been a function type (a.k.a. closure). When your protocol has a single requirement that's a method, you might as well be represent that signature as a function type. You can have multiple functions that match the signature of that type, and you can store any one of them in a closure instance.
Note that I'm not sure your documentation exercise is as valuable as you hope.
It's not a hope, it's a fact that I can attest to from experience, and that has been validated by many people I've worked with over the last 20 years.
If we look at Collection's intro statement, "A sequence whose elements can be traversed multiple times, nondestructively, and accessed by an indexed subscript.", we can easily express RepositoryProvider in similar terms.
Yes, that's a good idea.
Perhaps "A cancellable source of information and functionality used to fetch, validate, and create working copies from a repository."
“Source of information and functionality” is vacuous; every type fits that description. All you've said here is that you have three functions that operate on repositories, (fetch, validate, and create). Also, calling a type “cancellable” has no obvious meaning. This is not yet an abstraction.
So I don't think it's that hard to create a statement that meets your criteria,
I'm still waiting to see one.
To be clear, this exercise is not about saying something that has the “ring in the ear” of a formalism, but about saying something that is actually meaningful. The desire for names to have a familiar/uniform feel, irrespective of information content, is part of what led to many of the “muffin man” names in Cocoa. It's obviously a very strong human instinct. In my experience, though, it's not just harmless/needless, but works against comprehension, by making things that are actually different seem the same. It's just as easy to fall into the same trap with documentation as with names, and it takes real work to do better.
it's just that the intro statement is most often the least read part of any type's documentation
If that's true, it's only because intro statements are typically weak, like the example we're discussing now.