MyeongHoJeong commited on
Commit
cc4f5ae
·
verified ·
1 Parent(s): 74f7cd1

docs: add operational examples and link llama.cpp SH runner

Browse files
Files changed (1) hide show
  1. README.md +148 -1
README.md CHANGED
@@ -15,17 +15,22 @@ tags:
15
  - decode-free
16
  ---
17
 
 
18
  # Standard One 8B SH
19
 
 
20
  > **Updated weights (v4, 2026-10-13).** v4 is trained further on decision data, mostly our own synthetic items. Decision Index 0.3 public index 57.40 (self-scored with the official kit; v3 48.34).
21
  > Earlier releases stay available under the tags `v3`, `v2` (merged weights) and `v1` (LoRA adapter).
22
 
 
23
  **Version:** v4
24
 
 
25
  **Standard One 8B SH** is Standard One 8B with a **joint schema head** (SH). It reads the scenario once and
26
  scores every option of every question in a single forward pass, then returns probabilities through the same
27
  `POST /v1/systemone` contract as Standard One. It does not generate text.
28
 
 
29
  | | |
30
  |---|---|
31
  | Backbone | Standard One 8B v2.2 (`mistral3`, Ministral 3 8B text + Pixtral vision tower), fine-tuned for the head and merged; weights in this repository |
@@ -37,19 +42,24 @@ scores every option of every question in a single forward pass, then returns pro
37
  | Smaller model | [StandardOne-3B-SH](https://huggingface.co/StandardThinking/StandardOne-3B-SH) |
38
  | License | Apache-2.0 |
39
 
 
40
  ## Why a schema head
41
 
 
42
  Standard One reads one answer letter per option, so a question is limited by the label alphabet and every
43
  question in a request needs its own pass over the scenario. The schema head instead attends over the hidden states
44
  of the whole request (the final layer and one intermediate layer), places every question and option in one joint
45
  graph, and returns a calibrated distribution for each question at once. In practice:
46
 
 
47
  - **Many options.** Intent and routing questions with 100–255 options keep nearly the accuracy of small option sets.
48
  - **Many questions per scenario.** All questions of a request share one pass over the scenario.
49
  - **Long scenarios.** Decisions buried in long documents are found far more reliably than with Standard One v2.2.
50
 
 
51
  ## Results
52
 
 
53
  | Benchmark | SH v3 | **SH v4 (this release)** |
54
  |---|---:|---:|
55
  | Decision Index 0.3, public index | 48.34 | **57.40** |
@@ -59,43 +69,59 @@ graph, and returns a calibrated distribution for each question at once. In pract
59
  | Decision hidden in a long document (our set, 150 items) | 87.33 | 88.00 |
60
  | JevBench public: easy / original / hard (48 / 72 / 111 items) | 100.00 / 95.83 / 74.77 | 100.00 / 94.44 / 75.68 |
61
 
 
62
  Decision Index rows (DI) are chance-corrected skill scores (0 = random guessing, 100 = perfect) from our own runs of the public
63
  0.3 suite with the official kit, all 140,178 scoreable requests; every benchmark of both runs is in [standardone-8b-sh-v3](https://huggingface.co/datasets/StandardThinking/StandardOne-SH-decision-index/tree/main/runs/standardone-8b-sh-v3)
64
  and [standardone-8b-sh-v4](https://huggingface.co/datasets/StandardThinking/StandardOne-SH-decision-index/tree/main/runs/standardone-8b-sh-v4). For some DI benchmarks the public train split or the benchmark's public
65
  generator was part of training (HoVer among them); evaluated items never were. The other rows are accuracy in percent,
66
  measured with the Standard One engine on identical items.
67
 
 
68
  ## Benchmark charts
69
 
 
70
  Decision Index 0.3 public index, board data of 2026-10-12; Standard One self-scored with the official kit (see the footnote of each chart).
71
  The same charts with notes: [Standard One SH on the Decision Index](https://standardthinking.ai/resources/guides/standard-one-sh-decision-index/).
72
 
 
73
  ![Public index against model size](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/01-index-vs-size.png)
74
 
 
75
  ![Retrieval & Classification](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/02-retrieval-classification.png)
76
 
 
77
  ![Tools & Automation](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/03-tools-automation.png)
78
 
 
79
  ![Product search relevance (Amazon ESCI)](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/04-product-search.png)
80
 
 
81
  ![Multi-hop claim verification (HoVer)](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/05-claim-verification.png)
82
 
 
83
  ![Smart-home request handling (Home appliance simulator)](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/06-home-appliance.png)
84
 
 
85
  ![Contract understanding (ContractNLI)](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/07-contract-nli.png)
86
 
 
87
  ![Reading chords from a score (POP909-CL)](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/08-chords.png)
88
 
 
89
  ![Same decisions in 21 languages](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/09-multilingual.png)
90
 
 
91
  ## Changes in v4
92
 
 
93
  - **Further training on synthetic decision data.** v4 continues from v3 on decision items built for this round, mostly our own
94
  synthetic items (code-checked, LLM-written in varied styles), with replay of earlier data. See "Results" for the
95
  Decision Index 0.3 and the long-context checks.
96
 
 
97
  ## Changes in v3
98
 
 
99
  - **Hard decision tasks.** v3 is fine-tuned on about 2,200 new decision items written in the families where v2 was
100
  weakest: long policies with exceptions and overrides, multi-criteria trade-offs, judging a response against a
101
  rubric, and date and number reasoning. The items were authored by large language models, every gold answer was
@@ -111,22 +137,29 @@ The same charts with notes: [Standard One SH on the Decision Index](https://stan
111
  points (41.17 vs 46.00) and the JevBench original tier two items (95.83 vs 98.61). Intent labels, WinoGrande and
112
  policy judgement are within half a point of v2. Keep `v2` if those held-out suites matter most to you.
113
 
 
114
  ## Prompt format
115
 
 
116
  The included `chat_template.jinja` has an empty default system message, and the reference server renders requests
117
  without one (`SH_SYSTEM_PROMPT=none`, the default in `code/render.py`). Do not add the Ministral default system
118
  prompt: the head was trained without it, and adding it changes the hidden states it reads.
119
 
 
120
  ## Quick start
121
 
 
122
  ```bash
123
- pip install -r code/requirements.txt # torch, transformers, safetensors
124
  hf download StandardThinking/StandardOne-8B-SH --local-dir StandardOne-8B-SH
 
 
125
 
126
  python StandardOne-8B-SH/code/serve_head.py \
127
  --snapshot StandardOne-8B-SH --head StandardOne-8B-SH/head --port 30171
128
  ```
129
 
 
130
  ```bash
131
  curl -s localhost:30171/v1/systemone -H 'content-type: application/json' -d '{
132
  "state": {"message": "Please close my card, I lost it yesterday."},
@@ -139,19 +172,23 @@ curl -s localhost:30171/v1/systemone -H 'content-type: application/json' -d '{
139
  }'
140
  ```
141
 
 
142
  The server batches concurrent requests (`--max-batch-requests`, `--max-batch-tokens`) and binds `127.0.0.1` by
143
  default. It runs on one GPU with the backbone in bfloat16 and the head in float32. On Blackwell GPUs (B200/B300)
144
  install a CUDA 13 build of PyTorch first (`pip install torch --index-url https://download.pytorch.org/whl/cu130`); the
145
  CUDA 12.8 build lacks kernels for those GPUs.
146
 
 
147
  ## Fast serving with the Standard One engine
148
 
 
149
  The reference server above is plain PyTorch. For production throughput and latency, serve this repository with the
150
  **Standard One engine**, our SGLang fork with a prefill-only decision mode and the schema-head readout
151
  ([standard-one-sglang](https://github.com/standardthinkingai/standard-one-sglang),
152
  [standard-one-adapter](https://github.com/standardthinkingai/standard-one-adapter), Apache-2.0). It is the engine we run
153
  in production. Build the image once (it replaces only the Python package of a stock SGLang image):
154
 
 
155
  ```bash
156
  mkdir ctx && cd ctx
157
  git clone https://github.com/standardthinkingai/standard-one-sglang sglang-jev
@@ -161,8 +198,10 @@ docker build -f sglang-jev/examples/runtime/jev/rocm/Dockerfile.decision \
161
  --build-arg BASE_IMAGE=lmsysorg/sglang:nightly-dev-cu13-20260929-79cafec0 -t standard-one-engine:cu13 .
162
  ```
163
 
 
164
  Then serve the downloaded repository as it is (weights at the top level, head in `head/`):
165
 
 
166
  ```bash
167
  docker run -d --gpus all --network host --ipc host --shm-size 32g \
168
  -v $PWD/StandardOne-8B-SH:/models/m:ro standard-one-engine:cu13 python3 -m sglang.launch_server \
@@ -173,9 +212,11 @@ docker run -d --gpus all --network host --ipc host --shm-size 32g \
173
  --disable-radix-cache --disable-decode-cuda-graph --disable-prefill-cuda-graph --decision-deadline-seconds 110
174
  ```
175
 
 
176
  It answers `POST /v1/systemone` on port 30000. Unlike the reference server, the engine requires the `model` field
177
  (the served model name), as in the System One API:
178
 
 
179
  ```bash
180
  curl -s localhost:30000/v1/systemone -H 'content-type: application/json' -d '{
181
  "model": "standardthinking/standard-one-8b-sh",
@@ -184,13 +225,114 @@ curl -s localhost:30000/v1/systemone -H 'content-type: application/json' -d '{
184
  }'
185
  ```
186
 
 
187
  Checked on one NVIDIA B300 against the reference server on 1,431 evaluation questions: 99.58 % the same answer, all
188
  231 JevBench public answers identical. On AMD MI350X/MI355X build with
189
  `BASE_IMAGE=lmsysorg/sglang-rocm:v0.5.20-rocm720-mi35x-20260929` and run with
190
  `--device /dev/kfd --device /dev/dri --group-add video -e SGLANG_USE_AITER=0` instead of `--gpus all`.
191
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
  ## Files
193
 
 
194
  | Path | Contents |
195
  |---|---|
196
  | `model-0000{1..4}-of-00004.safetensors`, `config.json`, tokenizer files | merged backbone, bfloat16 (`Mistral3ForConditionalGeneration`) |
@@ -199,8 +341,10 @@ Checked on one NVIDIA B300 against the reference server on 1,431 evaluation ques
199
  | `code/` | reference `/v1/systemone` server: request rendering, head, scoring |
200
  | `SHA256SUMS`, `release-manifest.json` | checksums; source and merge details |
201
 
 
202
  ## Limitations
203
 
 
204
  - Requests longer than 32,768 tokens are refused, not truncated. This is a serving limit: the backbone handles longer
205
  inputs, but the head was not trained on them.
206
  - On our hard held-out decision suite (600 items; long policies, multi-step lookups, date and number reasoning)
@@ -209,7 +353,10 @@ Checked on one NVIDIA B300 against the reference server on 1,431 evaluation ques
209
  - The reference server is a PyTorch server; for throughput use the Standard One engine (see above).
210
  - Probabilities are calibrated on our held-out data; refit thresholds on your own distribution before relying on them.
211
 
 
212
  ## License
213
 
 
214
  Apache-2.0. Built on [Standard One 8B](https://huggingface.co/StandardThinking/StandardOne-8B) (Apache-2.0), which is
215
  built on [Ministral 3 8B](https://huggingface.co/mistralai/Ministral-3-8B-Instruct-2512-BF16) (Apache-2.0).
 
 
15
  - decode-free
16
  ---
17
 
18
+
19
  # Standard One 8B SH
20
 
21
+
22
  > **Updated weights (v4, 2026-10-13).** v4 is trained further on decision data, mostly our own synthetic items. Decision Index 0.3 public index 57.40 (self-scored with the official kit; v3 48.34).
23
  > Earlier releases stay available under the tags `v3`, `v2` (merged weights) and `v1` (LoRA adapter).
24
 
25
+
26
  **Version:** v4
27
 
28
+
29
  **Standard One 8B SH** is Standard One 8B with a **joint schema head** (SH). It reads the scenario once and
30
  scores every option of every question in a single forward pass, then returns probabilities through the same
31
  `POST /v1/systemone` contract as Standard One. It does not generate text.
32
 
33
+
34
  | | |
35
  |---|---|
36
  | Backbone | Standard One 8B v2.2 (`mistral3`, Ministral 3 8B text + Pixtral vision tower), fine-tuned for the head and merged; weights in this repository |
 
42
  | Smaller model | [StandardOne-3B-SH](https://huggingface.co/StandardThinking/StandardOne-3B-SH) |
43
  | License | Apache-2.0 |
44
 
45
+
46
  ## Why a schema head
47
 
48
+
49
  Standard One reads one answer letter per option, so a question is limited by the label alphabet and every
50
  question in a request needs its own pass over the scenario. The schema head instead attends over the hidden states
51
  of the whole request (the final layer and one intermediate layer), places every question and option in one joint
52
  graph, and returns a calibrated distribution for each question at once. In practice:
53
 
54
+
55
  - **Many options.** Intent and routing questions with 100–255 options keep nearly the accuracy of small option sets.
56
  - **Many questions per scenario.** All questions of a request share one pass over the scenario.
57
  - **Long scenarios.** Decisions buried in long documents are found far more reliably than with Standard One v2.2.
58
 
59
+
60
  ## Results
61
 
62
+
63
  | Benchmark | SH v3 | **SH v4 (this release)** |
64
  |---|---:|---:|
65
  | Decision Index 0.3, public index | 48.34 | **57.40** |
 
69
  | Decision hidden in a long document (our set, 150 items) | 87.33 | 88.00 |
70
  | JevBench public: easy / original / hard (48 / 72 / 111 items) | 100.00 / 95.83 / 74.77 | 100.00 / 94.44 / 75.68 |
71
 
72
+
73
  Decision Index rows (DI) are chance-corrected skill scores (0 = random guessing, 100 = perfect) from our own runs of the public
74
  0.3 suite with the official kit, all 140,178 scoreable requests; every benchmark of both runs is in [standardone-8b-sh-v3](https://huggingface.co/datasets/StandardThinking/StandardOne-SH-decision-index/tree/main/runs/standardone-8b-sh-v3)
75
  and [standardone-8b-sh-v4](https://huggingface.co/datasets/StandardThinking/StandardOne-SH-decision-index/tree/main/runs/standardone-8b-sh-v4). For some DI benchmarks the public train split or the benchmark's public
76
  generator was part of training (HoVer among them); evaluated items never were. The other rows are accuracy in percent,
77
  measured with the Standard One engine on identical items.
78
 
79
+
80
  ## Benchmark charts
81
 
82
+
83
  Decision Index 0.3 public index, board data of 2026-10-12; Standard One self-scored with the official kit (see the footnote of each chart).
84
  The same charts with notes: [Standard One SH on the Decision Index](https://standardthinking.ai/resources/guides/standard-one-sh-decision-index/).
85
 
86
+
87
  ![Public index against model size](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/01-index-vs-size.png)
88
 
89
+
90
  ![Retrieval & Classification](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/02-retrieval-classification.png)
91
 
92
+
93
  ![Tools & Automation](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/03-tools-automation.png)
94
 
95
+
96
  ![Product search relevance (Amazon ESCI)](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/04-product-search.png)
97
 
98
+
99
  ![Multi-hop claim verification (HoVer)](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/05-claim-verification.png)
100
 
101
+
102
  ![Smart-home request handling (Home appliance simulator)](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/06-home-appliance.png)
103
 
104
+
105
  ![Contract understanding (ContractNLI)](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/07-contract-nli.png)
106
 
107
+
108
  ![Reading chords from a score (POP909-CL)](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/08-chords.png)
109
 
110
+
111
  ![Same decisions in 21 languages](https://huggingface.co/StandardThinking/StandardOne-8B-SH/resolve/main/assets/charts/09-multilingual.png)
112
 
113
+
114
  ## Changes in v4
115
 
116
+
117
  - **Further training on synthetic decision data.** v4 continues from v3 on decision items built for this round, mostly our own
118
  synthetic items (code-checked, LLM-written in varied styles), with replay of earlier data. See "Results" for the
119
  Decision Index 0.3 and the long-context checks.
120
 
121
+
122
  ## Changes in v3
123
 
124
+
125
  - **Hard decision tasks.** v3 is fine-tuned on about 2,200 new decision items written in the families where v2 was
126
  weakest: long policies with exceptions and overrides, multi-criteria trade-offs, judging a response against a
127
  rubric, and date and number reasoning. The items were authored by large language models, every gold answer was
 
137
  points (41.17 vs 46.00) and the JevBench original tier two items (95.83 vs 98.61). Intent labels, WinoGrande and
138
  policy judgement are within half a point of v2. Keep `v2` if those held-out suites matter most to you.
139
 
140
+
141
  ## Prompt format
142
 
143
+
144
  The included `chat_template.jinja` has an empty default system message, and the reference server renders requests
145
  without one (`SH_SYSTEM_PROMPT=none`, the default in `code/render.py`). Do not add the Ministral default system
146
  prompt: the head was trained without it, and adding it changes the hidden states it reads.
147
 
148
+
149
  ## Quick start
150
 
151
+
152
  ```bash
153
+ python -m pip install --upgrade huggingface_hub
154
  hf download StandardThinking/StandardOne-8B-SH --local-dir StandardOne-8B-SH
155
+ python -m pip install -r StandardOne-8B-SH/code/requirements.txt
156
+
157
 
158
  python StandardOne-8B-SH/code/serve_head.py \
159
  --snapshot StandardOne-8B-SH --head StandardOne-8B-SH/head --port 30171
160
  ```
161
 
162
+
163
  ```bash
164
  curl -s localhost:30171/v1/systemone -H 'content-type: application/json' -d '{
165
  "state": {"message": "Please close my card, I lost it yesterday."},
 
172
  }'
173
  ```
174
 
175
+
176
  The server batches concurrent requests (`--max-batch-requests`, `--max-batch-tokens`) and binds `127.0.0.1` by
177
  default. It runs on one GPU with the backbone in bfloat16 and the head in float32. On Blackwell GPUs (B200/B300)
178
  install a CUDA 13 build of PyTorch first (`pip install torch --index-url https://download.pytorch.org/whl/cu130`); the
179
  CUDA 12.8 build lacks kernels for those GPUs.
180
 
181
+
182
  ## Fast serving with the Standard One engine
183
 
184
+
185
  The reference server above is plain PyTorch. For production throughput and latency, serve this repository with the
186
  **Standard One engine**, our SGLang fork with a prefill-only decision mode and the schema-head readout
187
  ([standard-one-sglang](https://github.com/standardthinkingai/standard-one-sglang),
188
  [standard-one-adapter](https://github.com/standardthinkingai/standard-one-adapter), Apache-2.0). It is the engine we run
189
  in production. Build the image once (it replaces only the Python package of a stock SGLang image):
190
 
191
+
192
  ```bash
193
  mkdir ctx && cd ctx
194
  git clone https://github.com/standardthinkingai/standard-one-sglang sglang-jev
 
198
  --build-arg BASE_IMAGE=lmsysorg/sglang:nightly-dev-cu13-20260929-79cafec0 -t standard-one-engine:cu13 .
199
  ```
200
 
201
+
202
  Then serve the downloaded repository as it is (weights at the top level, head in `head/`):
203
 
204
+
205
  ```bash
206
  docker run -d --gpus all --network host --ipc host --shm-size 32g \
207
  -v $PWD/StandardOne-8B-SH:/models/m:ro standard-one-engine:cu13 python3 -m sglang.launch_server \
 
212
  --disable-radix-cache --disable-decode-cuda-graph --disable-prefill-cuda-graph --decision-deadline-seconds 110
213
  ```
214
 
215
+
216
  It answers `POST /v1/systemone` on port 30000. Unlike the reference server, the engine requires the `model` field
217
  (the served model name), as in the System One API:
218
 
219
+
220
  ```bash
221
  curl -s localhost:30000/v1/systemone -H 'content-type: application/json' -d '{
222
  "model": "standardthinking/standard-one-8b-sh",
 
225
  }'
226
  ```
227
 
228
+
229
  Checked on one NVIDIA B300 against the reference server on 1,431 evaluation questions: 99.58 % the same answer, all
230
  231 JevBench public answers identical. On AMD MI350X/MI355X build with
231
  `BASE_IMAGE=lmsysorg/sglang-rocm:v0.5.20-rocm720-mi35x-20260929` and run with
232
  `--device /dev/kfd --device /dev/dri --group-add video -e SGLANG_USE_AITER=0` instead of `--gpus all`.
233
 
234
+
235
+
236
+ ## Run locally with llama.cpp
237
+
238
+ For CPU or Apple-silicon use, follow the download, build and server instructions in [StandardOne-8B-SH-GGUF](https://huggingface.co/StandardThinking/StandardOne-8B-SH-GGUF#quick-start-with-llamacpp). The SH head reads hidden states from the backbone, so it requires the supplied state extractor and Python runner; stock `llama-server -hf` alone does not execute the schema head. Once the runner is listening on port 30171, use the requests below unchanged.
239
+
240
+ ## Practical examples
241
+
242
+ Use the running server at `http://127.0.0.1:30171/v1/systemone`. SH scores all questions jointly without generating text. These examples are illustrative workloads, not measured accuracy results; inspect the actual response on your chosen model and quantization.
243
+
244
+ ### Customer support: route, handoff and priority
245
+
246
+ Run this in a second terminal after starting the server:
247
+
248
+ ```bash
249
+ curl --fail-with-body http://127.0.0.1:30171/v1/systemone \
250
+ -H "Content-Type: application/json" --data-binary @- <<'JSON'
251
+ {
252
+ "state": "My account was charged twice. I have contacted support three times and want a person to help with the refund today.",
253
+ "questions": {
254
+ "team": {
255
+ "type": "choice",
256
+ "instructions": "Which team should handle this message?",
257
+ "criteria": {
258
+ "billing": "Charges, refunds and invoices",
259
+ "technical": "Application errors and login problems",
260
+ "other": "Requests outside billing and technical support"
261
+ }
262
+ },
263
+ "handoff": {"type": "noul", "instructions": "Does the customer explicitly request a human agent?"},
264
+ "priority": {
265
+ "type": "score",
266
+ "instructions": "How urgently should support review this request?",
267
+ "criteria": ["Can wait", "Review today", "Service is blocked right now"]
268
+ }
269
+ }
270
+ }
271
+ JSON
272
+ ```
273
+
274
+ The intended routing label here is `billing`, with a human handoff. This describes the task, not a promised model output. `choice` selects from supplied categories; `noul` scores a yes/no question; `score` uses an ordered scale and returns an expected zero-based level that can be fractional.
275
+
276
+ ### Ticket routing, incident severity, agent completion and document routing
277
+
278
+ This Python client uses only the standard library and prints the complete server response. The requests work with the BF16 reference server and the SH GGUF runner on port 30171.
279
+
280
+ ```python
281
+ import json
282
+ from urllib.request import Request, urlopen
283
+
284
+ def decide(state, questions):
285
+ request = Request(
286
+ "http://127.0.0.1:30171/v1/systemone",
287
+ data=json.dumps({"state": state, "questions": questions}).encode("utf-8"),
288
+ headers={"Content-Type": "application/json"},
289
+ method="POST",
290
+ )
291
+ with urlopen(request, timeout=300) as response:
292
+ return json.load(response)
293
+
294
+ # Route a ticket to one queue from your own taxonomy.
295
+ print(json.dumps(decide(
296
+ "I cannot sign in after resetting my password. The reset link has expired.",
297
+ {"queue": {"type": "choice", "instructions": "Which queue owns the ticket?",
298
+ "criteria": {"account_access": "Login and password problems",
299
+ "billing": "Payments and invoices",
300
+ "bug_report": "Other application defects",
301
+ "other": "None of these queues"}}}
302
+ ), indent=2))
303
+
304
+ # Score an ordered incident severity scale.
305
+ print(json.dumps(decide(
306
+ "Production checkout is unavailable for all customers. The incident is ongoing.",
307
+ {"severity": {"type": "score", "instructions": "Assess the incident severity.",
308
+ "criteria": ["Informational; no service impact",
309
+ "Minor impact with a workaround",
310
+ "Major degradation affecting some customers",
311
+ "Critical outage affecting all customers"]}}
312
+ ), indent=2))
313
+
314
+ # Check an observed result against the original goal.
315
+ print(json.dumps(decide(
316
+ "Goal: send the weekly report to the team. Observed state: draft saved; the message has not been sent.",
317
+ {"finished": {"type": "noul", "instructions": "Has the agent completed the goal?"}}
318
+ ), indent=2))
319
+
320
+ # Classify a document before selecting an extraction workflow.
321
+ print(json.dumps(decide(
322
+ "INVOICE 2048. Amount due: USD 240. Payment due within 30 days.",
323
+ {"document_type": {"type": "choice", "instructions": "Classify the document.",
324
+ "criteria": {"invoice": "A request for payment",
325
+ "receipt": "Confirmation of completed payment",
326
+ "meeting_notes": "Notes from a meeting",
327
+ "other": "None of these document types"}}}
328
+ ), indent=2))
329
+ ```
330
+
331
+ Each `choice` question selects one category. For independent tags, submit one `noul` question per tag in the same request. Choose probability thresholds on representative validation data before automating routing or handoff. These examples use text input, the validated path for this release.
332
+
333
  ## Files
334
 
335
+
336
  | Path | Contents |
337
  |---|---|
338
  | `model-0000{1..4}-of-00004.safetensors`, `config.json`, tokenizer files | merged backbone, bfloat16 (`Mistral3ForConditionalGeneration`) |
 
341
  | `code/` | reference `/v1/systemone` server: request rendering, head, scoring |
342
  | `SHA256SUMS`, `release-manifest.json` | checksums; source and merge details |
343
 
344
+
345
  ## Limitations
346
 
347
+
348
  - Requests longer than 32,768 tokens are refused, not truncated. This is a serving limit: the backbone handles longer
349
  inputs, but the head was not trained on them.
350
  - On our hard held-out decision suite (600 items; long policies, multi-step lookups, date and number reasoning)
 
353
  - The reference server is a PyTorch server; for throughput use the Standard One engine (see above).
354
  - Probabilities are calibrated on our held-out data; refit thresholds on your own distribution before relying on them.
355
 
356
+
357
  ## License
358
 
359
+
360
  Apache-2.0. Built on [Standard One 8B](https://huggingface.co/StandardThinking/StandardOne-8B) (Apache-2.0), which is
361
  built on [Ministral 3 8B](https://huggingface.co/mistralai/Ministral-3-8B-Instruct-2512-BF16) (Apache-2.0).
362
+