> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hollerith.monarcha.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> What changed, and what is guaranteed

```python theme={null}
import hollerith
hollerith.__version__          # the SDK you installed
handle.job.engine_version      # the engine that ran the job
```

Two version numbers describe a Hollerith run, and they move independently.

## The SDK version

The wheel carries a PEP 440 version derived from the release tag. A clean build at tag
`vX.Y.Z` is `X.Y.Z`; a build with commits after that tag is `X.Y.(Z+1).devN`, so every install
names the commit it came from.

One wheel is published per deployment, served from `/sdk/`. Upgrading is a `pip install` of a
newer URL, and that URL is not interchangeable between deployments.

## The engine version

Every job is stamped with an engine version: `eng_` followed by 16 hex characters. It composes
the model checkpoint, the container image, the preprocessing pipeline and the wire protocol,
so a change to any one of them produces a new value.

```python theme={null}
handle.job.status            # 'queued'
handle.job.engine_version    # 'eng_pending'
```

A queued job can report `eng_pending`. The control plane stamps its configured engine when it
accepts the job, and the worker that ran it re-stamps the real value on completion, so read
the engine version from a terminal job.

* **On a job** — `engineVersion` on the wire, `.job.engine_version` in the SDK.
* **On an `EvaluationResult`** and on a fitted context, keyed to the engine that produced it.

## What is stable, and what is not

* **Error codes are stable.** There are 26, defined once in a shared contract. The build fails
  if the documented table and the contract disagree, so a code is added rather than renamed or
  repurposed.
* **Published limits match the contract.** The limit values in these docs are checked against
  the contract file in the same CI job.
* **Model outputs may change.** The same table and the same call can return a different
  prediction under a different engine version. Record the engine version alongside any result
  you may need to explain later.

Client-side limit checks ship as a snapshot inside the wheel, so a raised server-side limit
reaches your code only on the next wheel.

## Deprecation policy

There is no published deprecation policy, no deprecation warning in the SDK, and no support
window for older wheels. None of that is defined yet.

Until it is, pin the wheel version you tested against and read this page before upgrading.

## Entries

Entries are dated `YYYY-MM-DD`, newest first, and name the SDK or engine version they apply to
when a release is involved.

### 2026-08-07 — Documentation replaced

This documentation set replaces the previous one. Three corrections matter, because code
written against the old pages may be wrong.

* **Text embeddings are not a Hollerith capability.** The previous docs described them as
  coming. Text columns are ordinal-encoded, and there is no embedding path.
* **Evaluation returns one metric per task** — `accuracy` for classification, `RMSE` for
  regression. An earlier example printed an AUC the engine never produces.
* **Scored results are retained for 1 hour**, then deleted. The previous docs did not say so.

No SDK or engine release is recorded here yet. Entries begin from this date.

## Next

* [Errors](/reference/errors) — the 26 codes and their categories
* [Limits and quotas](/reference/limits) — the values CI holds these docs to
* [Python SDK](/reference/python-sdk) — the surface each wheel version publishes
* [Troubleshooting](/help/troubleshooting) — symptoms, causes and fixes
