Error message
In the message, %s marks a value that the engine fills in when it raises the error.
The story
The engine refused to start because one of its types speaks gibberish. Each type in types.feml comes with a piece text, a short expression that decides which values belong to the type. When the engine wakes up, it hands every piece text to tungsten to be read. This time, tungsten looked at one of them and said, I cannot parse that. So the type exists on paper but has no working judge. Think of a recipe written in a language the cook does not read: you cannot cook from it, and guessing would be dangerous. The engine therefore stops. The message tells you the type and the exact text that failed. The grammar is small, and that helps. A piece is either a bare leaf name, or a combinator with arguments, using and, or, not, or implies, nested as deeply as you like. Look for a missing parenthesis, a misspelled leaf, or a stray character. And here is a tip worth keeping: you can test a piece in the shell before you ever commit it. Run w, the piece in quotes, then check, then a sample value. Once it parses cleanly there, put it in the declaration, and the engine will start.
Text from the Rush engine's error catalogue.
