# deg contract v0.1 Status: contract and schema compiler implemented (`src/deg/schema.py`, `response.py`, `request.py`, `parsers.py`); model, trainer and in-process runtime implemented (`model.py`, `train.py`, `infer.py`, `evaluate.py`, design in §12); HTTP server and Python SDK implemented (`api.py`, `server.py`, `client.py`, §9). ## 1. Model - Base model: **Qwen3.5-0.8B** (default; LFM2.5-1.2B-Instruct is the alternative backbone, §12.8), with three kinds of heads on one trunk: - decision heads: `choice`, `score`, `noul` (as in jev v1); - a span pointer (start/end over context tokens, plus a null outcome); - the LM head, used only for `x-generate` fields. - Model id: `deg-qwen3.5-0.8b-0.1` (alias `deg-latest`). ## 2. The one flag (and two annotations) `x-generate: true` is the only extension that changes a field's mode. - It is allowed only on `type: string` or on `type: array` whose `items` is a plain `type: string` (no `enum`, no `format`). On an array, it applies to every item. - `x-generate: false` means the same as leaving it out. Two annotations refine a field without changing its mode: - `x-max-tokens: N` (integer >= 1, only where `x-generate` applies; on an array it applies to every item): that field's own decode budget, overriding `options.max_new_tokens`, so one request can mix budgets. - `x-levels: {"": "label", ...}` (only on an integer score field, keys among its admissible levels, labels non-empty strings): each labeled level's option line becomes `: