This was a stupid mistake on my part with an error message that completely missed the problem.
The package and module system is very sensitive to naming, which is a bit buried in the extensive documentation.
The package name must be <name>.jl, and the module must be <name> in that file, and the name entry in project.toml must be “<name>”. It makes sense but it might be nice if one of the name specifiers dominated all others. But, it would be perhaps unnecessarily confusing to allow the three specifiers to disagree. For sure it would be. That was all ok.
Further, no name in the module file or in any included source files can also have <name>. Oops. I did that. So, I renamed the module and package everywhere because I liked using my original name as the name of a struct in the code.
My bad. But, the error message certainly provided no clue but that often happens when one error masks another–or prevents parsing so a lesser error is reported. Hard to prevent this…