pert:
That is the manual installation folder structure. Manual installation doesn't have the version folder. The Boards Manager folder structure would be sparkfun\stuff because the architecture and version folders are automatically generated during Boards Manager installation based on the information in the JSON file.
Ok, after many hours re-reading your posts and looking at other's GitHub pages I understand where my confusion was coming from with regards to the installation folders.
I knew that Boards Manager installed the package in the Arduino15 folder:
C:\Users\username\AppData\Local\Arduino15\packages\
Although the constructed package that Boards Manager downloads only needs the folder projectname\stuff, I also knew that when Boards Manager unpacked it to the Arduino15 folder, it adds all kinds of other intermediate folders automatically -
Arduino15\packages\projectname\hardware\avr\version\stuff
My assumption was that manual install must do the same thing. I see now that not only does manual install require a different folder structure, it doesn't even go into the same folder. Perhaps the average user is not supposed to know about the Arduino15 folder and maybe I only knew enough to be dangerous.
So for those reading this later with the same confusion, ignore what Boards Manager does in Arduino15. For manual install the files go into the user's sketchbook directory in the hardware subfolder (create it if it doesn't exist):
sketchbookfolder\hardware\projectname\avr\stuff
Ok, so anyway I have taken various of your suggestions and created a new repository from scratch. I've edited my prior posts to point to the new, hopefully final locations for anyone else following along.
GitHub: OpenPanzerProject\OpenPanzerBoards
This repo has two branches. The master branch (also the default) has the manual installation files. The gh-pages branch (I'd never heard of such a thing before), has our JSON and packages for the IDE Boards Manager. I've modelled this after MCUDude's setup as you mentioned.
I think MCUDude's method would be a good example to use on the Boards Manager Support File Locations on GitHub example page, perhaps replacing Adafruit. Adafruit is a little unusual, they actually use two different repositories entirely, one for manual install files (Adafruit_Arduino_Boards) and the other for the Boards Manager packages (arduino-board-index). They do use a gh-pages branch on this latter one but that is also essentially the only branch in that repo. It took me a while to dig up both these repos and understand what they had done, as neither one is linked from the example page.
I'm also still a relative newbie when it comes to GitHub, so to me the pros/cons of adding another branch aren't really apparent. What I detect is that branches are perhaps typically intended eventually to be merged and GitHub wants to keep reminding me of that with my gh-pages branch, although in this application I will want the master and gh-pages branch to remain separate for all eternity and basically represent completely different things.
Finally, I've tested my package in several versions of the IDE. My case is a little unusual than most in that I am trying to force the use of avr-gcc-4.8.1 even in later versions of the IDE that would otherwise use the newer 4.9.2. I found that when I tried anything beyond 1.6.9 I would get compile errors, which I was finally able to correct by copying the platform.txt from AVR Boards 1.6.11 (the last AVR Boards version to use avr-gcc-4.8.1, and not to be confused with the IDE version). Now it seems all to be working.
In my JSON I've specified the avr-gcc specifically in the "Tools" section, copying the URLs from Arduino's JSON. I'm not going to host them myself, I'll just use theirs. Hopefully this avoids the bug in IDE 1.6.10. It seems to work in my testing but of course I'm only testing my own board... I did not add avrdude to the "Tools" section, I don't know if that will cause issues in IDE 1.6.10 or not, I'm assuming not.