For agents, on top of README.md, which they read first.
Notes for agents
- No logic here. If a change needs a decision, it belongs in the engine or core; this crate only converts.
- Do not name an error field
message. Kotlin'sThrowable.messagecollides with it and the generated code does not compile; the field isreason. - A new exported type is a new mirror, with a
Fromin the direction it travels. The Kotlin names come out UPPER_SNAKE for enum values.