I decided I had to get to the bottom of this discrepancy, so I carefully counted every category I have in the 46 files that make up my total AIML set. Those 46 files are all placed in a ZIP file and loaded into the chat bot.
I did not actually count each category, I used notepad++ editor to tell me how many categories were in each file two ways. One with a special sort macro I have that places every category as the start of each line allowing me to sort them, and then by searching for a <category<>pattern> string. The counts came out to be exactly the same for each file.
I added them all together twice as well as using notepad++ to scan all open files, all 46 of them to report the number of occurrences of <category<>pattern> string. Again a perfect match.
I have 28,125 categories.
On load release 2.4.7 reports 28,119 loaded.
To find out why the difference, I decided to load each file individually and check how many categories were loaded.
Only two files showed a difference. The files containing all "a" and "I" categories were both off by -1.
That accounts for two of the missing 6.
Without more searching, I am making the assumption the 6 missing categories are actually duplicate categories so they were not loaded into the database.
That may be a bad assumption, but I really do not want to spend more time looking for 6 lost categories.
I did look to see if by change a log file was generated indicating a duplicate was found, but on load of AIML absolutely no log files are generated by my server.
What this says is that the older version is horrible at telling you how many categories you have loaded. It actually created more than you loaded I guess.
My only suggestion would be to put a log file out if indeed it is catching duplicates so that you can find them and correct them.
As for the <topic> question, I do have a single file with all topics in it. There are 43 <topic> entries and all of them are loaded into the database.
So the comment that program-o is ignoring those files is not accurate.