Every answer names the engine version that produced it, in engine.version and in the Unprofane-Engine header. A version is the lexicon, the questions the model is asked, the thresholds and the pinned model string, hashed together; once published it does not change. A behaviour change is a new dated version and a line on the changelog.
The default
A request with no engine uses the project’s pin, and a project with no pin uses the latest stable version. A preview version can be pinned before it becomes the default.
Pinning
Per request:
{ "text": "…", "engine": "2026-09-29" }
Per project: the dashboard’s project page. Pinning is included on Growth and above.
Moving between versions
- Read the changelog entry.
- On Growth and above, replay a CSV of your own texts against both versions from the project page. The file is processed in memory and discarded, and the answer is a table of the texts whose action changed.
- Change the pin. Every key on the project picks it up within a minute.
A retired version is never the default but stays pinnable, so nothing you ship changes under you.