Ok so I've learned two things.
The example call to addclasses in the control.lua (Starting as an example at line 145) for bobsclasses may be slightly off as the interface seems to expect a table with {name=some-name, class=some-class} instead of just a table with a raw class in it. If you just pass a class table to bobsclasses it will throw a control error on startup that prevents the game from starting. So the example call seems to be misleading.
So for example, my call to update fighter to be more turret focused crashed later when I used.
remote.call("bobclasses", "add_classes", {name="bob-fighter", class=myFighter})
Instead of
remote.call("bobclasses", "add_classes", myFighter)
Since it expects a paired element unlike what the example shows.
(My fighter was based on a get-classes copy of the fighter class.)
The second is if you try to add an existing class it throws an error that seems to be due to there being duplicate classes with a UI element (Despite the classes being indexed to their name, so one with an identical name such as "bob-fighter" should be overwriting the old one at line 141.)
Error while running event bobclasses::on_cutscene_cancelled (ID 187)
Gui element with name bob_class_fighter already present in the parent element.
stack traceback:
[C]: in function 'add'
bobclasses/control.lua:883: in function 'add_class_gui_classes'
bobclasses/control.lua:851: in function 'draw_class_gui'
bobclasses/control.lua:822: in function <bobclasses/control.lua:813>
stack traceback:
[C]: in function 'exit_cutscene'
base/script/freeplay/freeplay.lua:122: in function 'handler'
core/lualib/event_handler.lua:72: in function <core/lualib/event_handler.lua:70>
This seems to happen at the same line regardless of whether I let the cutscene play or cancel.
Edit from the next day: I'm going to fiddle around with trying to fix this but it still looks like its appending something that should be overwriting, despite the key value pairs at play...
I'm also sorry for assuming the factorio interfaces passed by reference, that was just a default of return values via lua AFAIK so I hadn't imagined the factorio would do a deep-copy or something.