Okay, I just typed up a giant response and then accidentally hit a keyboard shortcut that refreshed the page and lost the whole thing... so bear with me.
I created a brand new MV project, with only the latest versions of all three plugins:
CS_Core (1.11)
CraftingSystem (1.31)
CraftingLevelsScene (1.01)
In this test project, I left all plugin params as default with two exceptions:
I made an alchemy recipe for item 1, which needs one item 1 and one item 2 to craft.
I set 'Hide Unused Categories' to false in the levelscene plugin.
On the default map, I added one NPC who says a chat and then uses the function I gave you in a script call to add 51 experience to alchemy.
$gameParty.changeCraftExperience('alchemy', 51)
Opening the menu before talking to the npc correctly shows craft experience for Alchemy as 0/100 level 1. Talking to her once shows it as 51/100 level 1. Talking to her again shows it at 0/200 level 2.
This function is not doing anything fancy, and it has a pretty unique name, so it's unlikely another plugin is causing this compatibility problem. The best was to troubleshoot this further is to open the console from the test run (f8 or f12) click the console tab at the top, and then type the following:
$gameParty.changeCraftExperience
Without providing the ()s, or the params, instead of running the function, the console will output the code for the function, like below:
ƒ (category, add){ $gameParty._craftExperience[category] = $gameParty._craftExperience[category] + add var level = $gameParty._craftLevels[category] var requiredexp = eval(Ramza.CSParams.Experien…
if you click on this blurb in the console, it will take you to the sources tab and show you the whole thing, including the name of the js file it's coming from at the top, which should be CS_Core.
My version control isn't the best in the world, downright crappy, actually, so I can't tell exactly at what point I spun this function out of the original plugin and moved it to the core, but at least on version 1.15 of the base crafting system plugin, the function was there, and identical to the one in the CS_Core plugin. If your sources tab is showing a different plugin name than CS_Core at the top, then something is overwriting the function. The only thing that could be doing that is probably the craftingsystem plugin, but if you're using the newest version, that shouldn't be possible.
The only other thing I can suggest is maybe trying with a new save? The experience and levels, and maybe even the level curve could be stored in the save file, and might not be updating properly.