@oneharness/sdk 0.11.3 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/contracts.d.ts +17 -4
- package/dist/generated/history-line.d.ts +58 -15
- package/dist/generated/history-records.d.ts +206 -22
- package/dist/generated/history-stream-envelope.d.ts +207 -23
- package/dist/generated/history.d.ts +206 -22
- package/dist/generated/run-stream-envelope.d.ts +17 -4
- package/dist/generated/schemas.json +660 -74
- package/dist/generated/zod.js +182 -31
- package/package.json +2 -2
|
@@ -1837,6 +1837,11 @@
|
|
|
1837
1837
|
"description": "The request exceeded the input size the provider accepts and was refused\nbefore the model was called (Codex reports the machine-readable\n`input_error_code: input_too_large` with `max_chars`/`actual_chars`). The\nother precondition refusal: no tokens were spent, and a candidate with a\nlarger window can still run the task.",
|
|
1838
1838
|
"type": "string",
|
|
1839
1839
|
"const": "input_too_large"
|
|
1840
|
+
},
|
|
1841
|
+
{
|
|
1842
|
+
"description": "The harness reported it would run the conversation under a model other\nthan the one requested, and oneharness refused the turn before it\nstarted (codex's app-server names the thread's model on its\n`thread/start` / `thread/resume` response, before any token is spent).\nThe third precondition refusal: no work was done, no token was spent, and\nthe next identity may honour the model.",
|
|
1843
|
+
"type": "string",
|
|
1844
|
+
"const": "model_mismatch"
|
|
1840
1845
|
}
|
|
1841
1846
|
]
|
|
1842
1847
|
},
|
|
@@ -1904,6 +1909,11 @@
|
|
|
1904
1909
|
"type": "string",
|
|
1905
1910
|
"const": "input-too-large"
|
|
1906
1911
|
},
|
|
1912
|
+
{
|
|
1913
|
+
"description": "The harness reported it would run under a model other than the one\nrequested, so the turn was refused before it started.",
|
|
1914
|
+
"type": "string",
|
|
1915
|
+
"const": "model-mismatch"
|
|
1916
|
+
},
|
|
1907
1917
|
{
|
|
1908
1918
|
"description": "This model is unavailable — only on a model fan-out.",
|
|
1909
1919
|
"type": "string",
|
|
@@ -1921,7 +1931,7 @@
|
|
|
1921
1931
|
"type": "object",
|
|
1922
1932
|
"properties": {
|
|
1923
1933
|
"fell_through": {
|
|
1924
|
-
"description": "The candidates fallen through because they could not run the task at all,\nin priority order, each with why (`not-installed`, `spawn-error`, `auth`,\n`quota`, `session-not-found`, `untrusted-directory`, `input-too-large`,\
|
|
1934
|
+
"description": "The candidates fallen through because they could not run the task at all,\nin priority order, each with why (`not-installed`, `spawn-error`, `auth`,\n`quota`, `session-not-found`, `untrusted-directory`, `input-too-large`,\n`model-mismatch`, and — on a model fan-out — `model-not-found` /\n`rate-limit`; see\n[`crate::domain::fallback::startup_failure_reason`]).",
|
|
1925
1935
|
"type": "array",
|
|
1926
1936
|
"items": {
|
|
1927
1937
|
"$ref": "#/$defs/FallThrough"
|
|
@@ -2062,7 +2072,7 @@
|
|
|
2062
2072
|
"format": "int32"
|
|
2063
2073
|
},
|
|
2064
2074
|
"failure_kind": {
|
|
2065
|
-
"description": "Best-effort failure reason; `null` when unclassified. Distinct from\n`status`, which records oneharness's relationship to the process. Two\nfamilies: coarse reasons for a non-zero run (`auth`, `rate_limit`,\n`model_not_found`, `quota`, `session_not_found`), and `tool_deferred` — a run that exited\n*cleanly* but only deferred a builtin tool call instead of executing it\n(Claude Code bridge/managed deployments), so it did no useful work. The\ndeferred case is the only `failure_kind` that can appear on a `status: ok`\nrun, and it also marks the run as failed for exit-code purposes.\nSerialized as its snake_case token (see [`FailureKind`]).",
|
|
2075
|
+
"description": "Best-effort failure reason; `null` when unclassified. Distinct from\n`status`, which records oneharness's relationship to the process. Two\nfamilies: coarse reasons for a non-zero run (`auth`, `rate_limit`,\n`model_not_found`, `quota`, `session_not_found`, `untrusted_directory`,\n`input_too_large`, `model_mismatch`), and `tool_deferred` — a run that exited\n*cleanly* but only deferred a builtin tool call instead of executing it\n(Claude Code bridge/managed deployments), so it did no useful work. The\ndeferred case is the only `failure_kind` that can appear on a `status: ok`\nrun, and it also marks the run as failed for exit-code purposes.\nSerialized as its snake_case token (see [`FailureKind`]).",
|
|
2066
2076
|
"anyOf": [
|
|
2067
2077
|
{
|
|
2068
2078
|
"$ref": "#/$defs/FailureKind"
|
|
@@ -2094,6 +2104,13 @@
|
|
|
2094
2104
|
"null"
|
|
2095
2105
|
]
|
|
2096
2106
|
},
|
|
2107
|
+
"observed_model": {
|
|
2108
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` / `thread/resume`\nresponse. `null` on every path that reports none, which today is every\npath but codex's app-server. Never inferred and never copied from\n`model`: where both are set they are the requested model and the served\none, and a difference between them is exactly the `model_mismatch`\nrefusal, which this field then names the other half of.",
|
|
2109
|
+
"type": [
|
|
2110
|
+
"string",
|
|
2111
|
+
"null"
|
|
2112
|
+
]
|
|
2113
|
+
},
|
|
2097
2114
|
"output_format": {
|
|
2098
2115
|
"$ref": "#/$defs/OutputFormat"
|
|
2099
2116
|
},
|
|
@@ -2214,6 +2231,7 @@
|
|
|
2214
2231
|
"status",
|
|
2215
2232
|
"prompt",
|
|
2216
2233
|
"model",
|
|
2234
|
+
"observed_model",
|
|
2217
2235
|
"exit_code",
|
|
2218
2236
|
"duration_ms",
|
|
2219
2237
|
"telemetry",
|
|
@@ -2890,6 +2908,11 @@
|
|
|
2890
2908
|
"description": "The request exceeded the input size the provider accepts and was refused\nbefore the model was called (Codex reports the machine-readable\n`input_error_code: input_too_large` with `max_chars`/`actual_chars`). The\nother precondition refusal: no tokens were spent, and a candidate with a\nlarger window can still run the task.",
|
|
2891
2909
|
"type": "string",
|
|
2892
2910
|
"const": "input_too_large"
|
|
2911
|
+
},
|
|
2912
|
+
{
|
|
2913
|
+
"description": "The harness reported it would run the conversation under a model other\nthan the one requested, and oneharness refused the turn before it\nstarted (codex's app-server names the thread's model on its\n`thread/start` / `thread/resume` response, before any token is spent).\nThe third precondition refusal: no work was done, no token was spent, and\nthe next identity may honour the model.",
|
|
2914
|
+
"type": "string",
|
|
2915
|
+
"const": "model_mismatch"
|
|
2893
2916
|
}
|
|
2894
2917
|
]
|
|
2895
2918
|
},
|
|
@@ -2957,6 +2980,11 @@
|
|
|
2957
2980
|
"type": "string",
|
|
2958
2981
|
"const": "input-too-large"
|
|
2959
2982
|
},
|
|
2983
|
+
{
|
|
2984
|
+
"description": "The harness reported it would run under a model other than the one\nrequested, so the turn was refused before it started.",
|
|
2985
|
+
"type": "string",
|
|
2986
|
+
"const": "model-mismatch"
|
|
2987
|
+
},
|
|
2960
2988
|
{
|
|
2961
2989
|
"description": "This model is unavailable — only on a model fan-out.",
|
|
2962
2990
|
"type": "string",
|
|
@@ -2974,7 +3002,7 @@
|
|
|
2974
3002
|
"type": "object",
|
|
2975
3003
|
"properties": {
|
|
2976
3004
|
"fell_through": {
|
|
2977
|
-
"description": "The candidates fallen through because they could not run the task at all,\nin priority order, each with why (`not-installed`, `spawn-error`, `auth`,\n`quota`, `session-not-found`, `untrusted-directory`, `input-too-large`,\
|
|
3005
|
+
"description": "The candidates fallen through because they could not run the task at all,\nin priority order, each with why (`not-installed`, `spawn-error`, `auth`,\n`quota`, `session-not-found`, `untrusted-directory`, `input-too-large`,\n`model-mismatch`, and — on a model fan-out — `model-not-found` /\n`rate-limit`; see\n[`crate::domain::fallback::startup_failure_reason`]).",
|
|
2978
3006
|
"type": "array",
|
|
2979
3007
|
"items": {
|
|
2980
3008
|
"$ref": "#/$defs/FallThrough"
|
|
@@ -3279,7 +3307,7 @@
|
|
|
3279
3307
|
"format": "int32"
|
|
3280
3308
|
},
|
|
3281
3309
|
"failure_kind": {
|
|
3282
|
-
"description": "Best-effort failure reason; `null` when unclassified. Distinct from\n`status`, which records oneharness's relationship to the process. Two\nfamilies: coarse reasons for a non-zero run (`auth`, `rate_limit`,\n`model_not_found`, `quota`, `session_not_found`), and `tool_deferred` — a run that exited\n*cleanly* but only deferred a builtin tool call instead of executing it\n(Claude Code bridge/managed deployments), so it did no useful work. The\ndeferred case is the only `failure_kind` that can appear on a `status: ok`\nrun, and it also marks the run as failed for exit-code purposes.\nSerialized as its snake_case token (see [`FailureKind`]).",
|
|
3310
|
+
"description": "Best-effort failure reason; `null` when unclassified. Distinct from\n`status`, which records oneharness's relationship to the process. Two\nfamilies: coarse reasons for a non-zero run (`auth`, `rate_limit`,\n`model_not_found`, `quota`, `session_not_found`, `untrusted_directory`,\n`input_too_large`, `model_mismatch`), and `tool_deferred` — a run that exited\n*cleanly* but only deferred a builtin tool call instead of executing it\n(Claude Code bridge/managed deployments), so it did no useful work. The\ndeferred case is the only `failure_kind` that can appear on a `status: ok`\nrun, and it also marks the run as failed for exit-code purposes.\nSerialized as its snake_case token (see [`FailureKind`]).",
|
|
3283
3311
|
"anyOf": [
|
|
3284
3312
|
{
|
|
3285
3313
|
"$ref": "#/$defs/FailureKind"
|
|
@@ -3311,6 +3339,13 @@
|
|
|
3311
3339
|
"null"
|
|
3312
3340
|
]
|
|
3313
3341
|
},
|
|
3342
|
+
"observed_model": {
|
|
3343
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` / `thread/resume`\nresponse. `null` on every path that reports none, which today is every\npath but codex's app-server. Never inferred and never copied from\n`model`: where both are set they are the requested model and the served\none, and a difference between them is exactly the `model_mismatch`\nrefusal, which this field then names the other half of.",
|
|
3344
|
+
"type": [
|
|
3345
|
+
"string",
|
|
3346
|
+
"null"
|
|
3347
|
+
]
|
|
3348
|
+
},
|
|
3314
3349
|
"output_format": {
|
|
3315
3350
|
"$ref": "#/$defs/OutputFormat"
|
|
3316
3351
|
},
|
|
@@ -3431,6 +3466,7 @@
|
|
|
3431
3466
|
"status",
|
|
3432
3467
|
"prompt",
|
|
3433
3468
|
"model",
|
|
3469
|
+
"observed_model",
|
|
3434
3470
|
"exit_code",
|
|
3435
3471
|
"duration_ms",
|
|
3436
3472
|
"telemetry",
|
|
@@ -4175,7 +4211,8 @@
|
|
|
4175
4211
|
"1.4",
|
|
4176
4212
|
"1.5",
|
|
4177
4213
|
"1.6",
|
|
4178
|
-
"1.7"
|
|
4214
|
+
"1.7",
|
|
4215
|
+
"1.8"
|
|
4179
4216
|
]
|
|
4180
4217
|
},
|
|
4181
4218
|
"type": {
|
|
@@ -4294,7 +4331,8 @@
|
|
|
4294
4331
|
"1.4",
|
|
4295
4332
|
"1.5",
|
|
4296
4333
|
"1.6",
|
|
4297
|
-
"1.7"
|
|
4334
|
+
"1.7",
|
|
4335
|
+
"1.8"
|
|
4298
4336
|
]
|
|
4299
4337
|
}
|
|
4300
4338
|
},
|
|
@@ -4354,7 +4392,8 @@
|
|
|
4354
4392
|
"schema_version": {
|
|
4355
4393
|
"type": "string",
|
|
4356
4394
|
"enum": [
|
|
4357
|
-
"1.7"
|
|
4395
|
+
"1.7",
|
|
4396
|
+
"1.8"
|
|
4358
4397
|
]
|
|
4359
4398
|
},
|
|
4360
4399
|
"status": {
|
|
@@ -4381,6 +4420,35 @@
|
|
|
4381
4420
|
}
|
|
4382
4421
|
]
|
|
4383
4422
|
},
|
|
4423
|
+
{
|
|
4424
|
+
"oneOf": [
|
|
4425
|
+
{
|
|
4426
|
+
"type": "object",
|
|
4427
|
+
"properties": {
|
|
4428
|
+
"observed_model": {
|
|
4429
|
+
"type": "null"
|
|
4430
|
+
}
|
|
4431
|
+
}
|
|
4432
|
+
},
|
|
4433
|
+
{
|
|
4434
|
+
"type": "object",
|
|
4435
|
+
"properties": {
|
|
4436
|
+
"observed_model": {
|
|
4437
|
+
"type": "string"
|
|
4438
|
+
},
|
|
4439
|
+
"schema_version": {
|
|
4440
|
+
"type": "string",
|
|
4441
|
+
"enum": [
|
|
4442
|
+
"1.8"
|
|
4443
|
+
]
|
|
4444
|
+
}
|
|
4445
|
+
},
|
|
4446
|
+
"required": [
|
|
4447
|
+
"observed_model"
|
|
4448
|
+
]
|
|
4449
|
+
}
|
|
4450
|
+
]
|
|
4451
|
+
},
|
|
4384
4452
|
{
|
|
4385
4453
|
"anyOf": [
|
|
4386
4454
|
{
|
|
@@ -4408,7 +4476,8 @@
|
|
|
4408
4476
|
"1.4",
|
|
4409
4477
|
"1.5",
|
|
4410
4478
|
"1.6",
|
|
4411
|
-
"1.7"
|
|
4479
|
+
"1.7",
|
|
4480
|
+
"1.8"
|
|
4412
4481
|
]
|
|
4413
4482
|
}
|
|
4414
4483
|
}
|
|
@@ -4431,6 +4500,7 @@
|
|
|
4431
4500
|
"tool_deferred",
|
|
4432
4501
|
"untrusted_directory",
|
|
4433
4502
|
"input_too_large",
|
|
4503
|
+
"model_mismatch",
|
|
4434
4504
|
null
|
|
4435
4505
|
]
|
|
4436
4506
|
}
|
|
@@ -4444,7 +4514,8 @@
|
|
|
4444
4514
|
"enum": [
|
|
4445
4515
|
"1.5",
|
|
4446
4516
|
"1.6",
|
|
4447
|
-
"1.7"
|
|
4517
|
+
"1.7",
|
|
4518
|
+
"1.8"
|
|
4448
4519
|
]
|
|
4449
4520
|
}
|
|
4450
4521
|
}
|
|
@@ -4464,6 +4535,7 @@
|
|
|
4464
4535
|
"quota",
|
|
4465
4536
|
"session_not_found",
|
|
4466
4537
|
"tool_deferred",
|
|
4538
|
+
"model_mismatch",
|
|
4467
4539
|
null
|
|
4468
4540
|
]
|
|
4469
4541
|
}
|
|
@@ -4476,7 +4548,41 @@
|
|
|
4476
4548
|
"type": "string",
|
|
4477
4549
|
"enum": [
|
|
4478
4550
|
"1.6",
|
|
4479
|
-
"1.7"
|
|
4551
|
+
"1.7",
|
|
4552
|
+
"1.8"
|
|
4553
|
+
]
|
|
4554
|
+
}
|
|
4555
|
+
}
|
|
4556
|
+
}
|
|
4557
|
+
]
|
|
4558
|
+
},
|
|
4559
|
+
{
|
|
4560
|
+
"anyOf": [
|
|
4561
|
+
{
|
|
4562
|
+
"type": "object",
|
|
4563
|
+
"properties": {
|
|
4564
|
+
"failure_kind": {
|
|
4565
|
+
"enum": [
|
|
4566
|
+
"auth",
|
|
4567
|
+
"rate_limit",
|
|
4568
|
+
"model_not_found",
|
|
4569
|
+
"quota",
|
|
4570
|
+
"session_not_found",
|
|
4571
|
+
"tool_deferred",
|
|
4572
|
+
"untrusted_directory",
|
|
4573
|
+
"input_too_large",
|
|
4574
|
+
null
|
|
4575
|
+
]
|
|
4576
|
+
}
|
|
4577
|
+
}
|
|
4578
|
+
},
|
|
4579
|
+
{
|
|
4580
|
+
"type": "object",
|
|
4581
|
+
"properties": {
|
|
4582
|
+
"schema_version": {
|
|
4583
|
+
"type": "string",
|
|
4584
|
+
"enum": [
|
|
4585
|
+
"1.8"
|
|
4480
4586
|
]
|
|
4481
4587
|
}
|
|
4482
4588
|
}
|
|
@@ -4557,6 +4663,13 @@
|
|
|
4557
4663
|
"name": {
|
|
4558
4664
|
"type": "string"
|
|
4559
4665
|
},
|
|
4666
|
+
"observed_model": {
|
|
4667
|
+
"description": "The model the harness itself reported it would run under (see\n[`HistoryRecord::observed_model`]). Omitted on the wire when absent.",
|
|
4668
|
+
"type": [
|
|
4669
|
+
"string",
|
|
4670
|
+
"null"
|
|
4671
|
+
]
|
|
4672
|
+
},
|
|
4560
4673
|
"observed_tool_ms": false,
|
|
4561
4674
|
"permission_mode": {
|
|
4562
4675
|
"$ref": "#/$defs/PermissionMode"
|
|
@@ -4577,7 +4690,8 @@
|
|
|
4577
4690
|
"1.4",
|
|
4578
4691
|
"1.5",
|
|
4579
4692
|
"1.6",
|
|
4580
|
-
"1.7"
|
|
4693
|
+
"1.7",
|
|
4694
|
+
"1.8"
|
|
4581
4695
|
]
|
|
4582
4696
|
},
|
|
4583
4697
|
"session": {
|
|
@@ -4753,6 +4867,13 @@
|
|
|
4753
4867
|
"name": {
|
|
4754
4868
|
"type": "string"
|
|
4755
4869
|
},
|
|
4870
|
+
"observed_model": {
|
|
4871
|
+
"description": "The model the harness itself reported it would run under (see\n[`HistoryRecord::observed_model`]). Omitted on the wire when absent.",
|
|
4872
|
+
"type": [
|
|
4873
|
+
"string",
|
|
4874
|
+
"null"
|
|
4875
|
+
]
|
|
4876
|
+
},
|
|
4756
4877
|
"observed_tool_ms": false,
|
|
4757
4878
|
"permission_mode": {
|
|
4758
4879
|
"$ref": "#/$defs/PermissionMode"
|
|
@@ -4773,7 +4894,8 @@
|
|
|
4773
4894
|
"1.4",
|
|
4774
4895
|
"1.5",
|
|
4775
4896
|
"1.6",
|
|
4776
|
-
"1.7"
|
|
4897
|
+
"1.7",
|
|
4898
|
+
"1.8"
|
|
4777
4899
|
]
|
|
4778
4900
|
},
|
|
4779
4901
|
"session": {
|
|
@@ -4946,6 +5068,13 @@
|
|
|
4946
5068
|
"name": {
|
|
4947
5069
|
"type": "string"
|
|
4948
5070
|
},
|
|
5071
|
+
"observed_model": {
|
|
5072
|
+
"description": "The model the harness itself reported it would run under (see\n[`HistoryRecord::observed_model`]). Omitted on the wire when absent.",
|
|
5073
|
+
"type": [
|
|
5074
|
+
"string",
|
|
5075
|
+
"null"
|
|
5076
|
+
]
|
|
5077
|
+
},
|
|
4949
5078
|
"observed_tool_ms": {
|
|
4950
5079
|
"type": "integer",
|
|
4951
5080
|
"minimum": 0
|
|
@@ -4967,7 +5096,8 @@
|
|
|
4967
5096
|
"1.4",
|
|
4968
5097
|
"1.5",
|
|
4969
5098
|
"1.6",
|
|
4970
|
-
"1.7"
|
|
5099
|
+
"1.7",
|
|
5100
|
+
"1.8"
|
|
4971
5101
|
]
|
|
4972
5102
|
},
|
|
4973
5103
|
"session": {
|
|
@@ -5122,6 +5252,13 @@
|
|
|
5122
5252
|
"name": {
|
|
5123
5253
|
"type": "string"
|
|
5124
5254
|
},
|
|
5255
|
+
"observed_model": {
|
|
5256
|
+
"description": "The model the harness itself reported it would run under (see\n[`HistoryRecord::observed_model`]). Omitted on the wire when absent.",
|
|
5257
|
+
"type": [
|
|
5258
|
+
"string",
|
|
5259
|
+
"null"
|
|
5260
|
+
]
|
|
5261
|
+
},
|
|
5125
5262
|
"observed_tool_ms": false,
|
|
5126
5263
|
"permission_mode": {
|
|
5127
5264
|
"$ref": "#/$defs/PermissionMode"
|
|
@@ -5142,7 +5279,8 @@
|
|
|
5142
5279
|
"1.4",
|
|
5143
5280
|
"1.5",
|
|
5144
5281
|
"1.6",
|
|
5145
|
-
"1.7"
|
|
5282
|
+
"1.7",
|
|
5283
|
+
"1.8"
|
|
5146
5284
|
]
|
|
5147
5285
|
},
|
|
5148
5286
|
"session": {
|
|
@@ -5299,6 +5437,13 @@
|
|
|
5299
5437
|
"name": {
|
|
5300
5438
|
"type": "string"
|
|
5301
5439
|
},
|
|
5440
|
+
"observed_model": {
|
|
5441
|
+
"description": "The model the harness itself reported it would run under (see\n[`HistoryRecord::observed_model`]). Omitted on the wire when absent.",
|
|
5442
|
+
"type": [
|
|
5443
|
+
"string",
|
|
5444
|
+
"null"
|
|
5445
|
+
]
|
|
5446
|
+
},
|
|
5302
5447
|
"observed_tool_ms": false,
|
|
5303
5448
|
"permission_mode": {
|
|
5304
5449
|
"$ref": "#/$defs/PermissionMode"
|
|
@@ -5316,7 +5461,8 @@
|
|
|
5316
5461
|
"1.4",
|
|
5317
5462
|
"1.5",
|
|
5318
5463
|
"1.6",
|
|
5319
|
-
"1.7"
|
|
5464
|
+
"1.7",
|
|
5465
|
+
"1.8"
|
|
5320
5466
|
]
|
|
5321
5467
|
},
|
|
5322
5468
|
"session": {
|
|
@@ -5487,6 +5633,13 @@
|
|
|
5487
5633
|
"name": {
|
|
5488
5634
|
"type": "string"
|
|
5489
5635
|
},
|
|
5636
|
+
"observed_model": {
|
|
5637
|
+
"description": "The model the harness itself reported it would run under (see\n[`HistoryRecord::observed_model`]). Omitted on the wire when absent.",
|
|
5638
|
+
"type": [
|
|
5639
|
+
"string",
|
|
5640
|
+
"null"
|
|
5641
|
+
]
|
|
5642
|
+
},
|
|
5490
5643
|
"observed_tool_ms": false,
|
|
5491
5644
|
"permission_mode": {
|
|
5492
5645
|
"$ref": "#/$defs/PermissionMode"
|
|
@@ -5507,7 +5660,8 @@
|
|
|
5507
5660
|
"1.4",
|
|
5508
5661
|
"1.5",
|
|
5509
5662
|
"1.6",
|
|
5510
|
-
"1.7"
|
|
5663
|
+
"1.7",
|
|
5664
|
+
"1.8"
|
|
5511
5665
|
]
|
|
5512
5666
|
},
|
|
5513
5667
|
"session": {
|
|
@@ -5738,6 +5892,11 @@
|
|
|
5738
5892
|
"description": "The request exceeded the input size the provider accepts and was refused\nbefore the model was called (Codex reports the machine-readable\n`input_error_code: input_too_large` with `max_chars`/`actual_chars`). The\nother precondition refusal: no tokens were spent, and a candidate with a\nlarger window can still run the task.",
|
|
5739
5893
|
"type": "string",
|
|
5740
5894
|
"const": "input_too_large"
|
|
5895
|
+
},
|
|
5896
|
+
{
|
|
5897
|
+
"description": "The harness reported it would run the conversation under a model other\nthan the one requested, and oneharness refused the turn before it\nstarted (codex's app-server names the thread's model on its\n`thread/start` / `thread/resume` response, before any token is spent).\nThe third precondition refusal: no work was done, no token was spent, and\nthe next identity may honour the model.",
|
|
5898
|
+
"type": "string",
|
|
5899
|
+
"const": "model_mismatch"
|
|
5741
5900
|
}
|
|
5742
5901
|
]
|
|
5743
5902
|
},
|
|
@@ -5963,7 +6122,8 @@
|
|
|
5963
6122
|
"1.4",
|
|
5964
6123
|
"1.5",
|
|
5965
6124
|
"1.6",
|
|
5966
|
-
"1.7"
|
|
6125
|
+
"1.7",
|
|
6126
|
+
"1.8"
|
|
5967
6127
|
]
|
|
5968
6128
|
}
|
|
5969
6129
|
},
|
|
@@ -6023,7 +6183,8 @@
|
|
|
6023
6183
|
"schema_version": {
|
|
6024
6184
|
"type": "string",
|
|
6025
6185
|
"enum": [
|
|
6026
|
-
"1.7"
|
|
6186
|
+
"1.7",
|
|
6187
|
+
"1.8"
|
|
6027
6188
|
]
|
|
6028
6189
|
},
|
|
6029
6190
|
"status": {
|
|
@@ -6050,6 +6211,35 @@
|
|
|
6050
6211
|
}
|
|
6051
6212
|
]
|
|
6052
6213
|
},
|
|
6214
|
+
{
|
|
6215
|
+
"oneOf": [
|
|
6216
|
+
{
|
|
6217
|
+
"type": "object",
|
|
6218
|
+
"properties": {
|
|
6219
|
+
"observed_model": {
|
|
6220
|
+
"type": "null"
|
|
6221
|
+
}
|
|
6222
|
+
}
|
|
6223
|
+
},
|
|
6224
|
+
{
|
|
6225
|
+
"type": "object",
|
|
6226
|
+
"properties": {
|
|
6227
|
+
"observed_model": {
|
|
6228
|
+
"type": "string"
|
|
6229
|
+
},
|
|
6230
|
+
"schema_version": {
|
|
6231
|
+
"type": "string",
|
|
6232
|
+
"enum": [
|
|
6233
|
+
"1.8"
|
|
6234
|
+
]
|
|
6235
|
+
}
|
|
6236
|
+
},
|
|
6237
|
+
"required": [
|
|
6238
|
+
"observed_model"
|
|
6239
|
+
]
|
|
6240
|
+
}
|
|
6241
|
+
]
|
|
6242
|
+
},
|
|
6053
6243
|
{
|
|
6054
6244
|
"anyOf": [
|
|
6055
6245
|
{
|
|
@@ -6077,7 +6267,8 @@
|
|
|
6077
6267
|
"1.4",
|
|
6078
6268
|
"1.5",
|
|
6079
6269
|
"1.6",
|
|
6080
|
-
"1.7"
|
|
6270
|
+
"1.7",
|
|
6271
|
+
"1.8"
|
|
6081
6272
|
]
|
|
6082
6273
|
}
|
|
6083
6274
|
}
|
|
@@ -6100,6 +6291,7 @@
|
|
|
6100
6291
|
"tool_deferred",
|
|
6101
6292
|
"untrusted_directory",
|
|
6102
6293
|
"input_too_large",
|
|
6294
|
+
"model_mismatch",
|
|
6103
6295
|
null
|
|
6104
6296
|
]
|
|
6105
6297
|
}
|
|
@@ -6113,7 +6305,8 @@
|
|
|
6113
6305
|
"enum": [
|
|
6114
6306
|
"1.5",
|
|
6115
6307
|
"1.6",
|
|
6116
|
-
"1.7"
|
|
6308
|
+
"1.7",
|
|
6309
|
+
"1.8"
|
|
6117
6310
|
]
|
|
6118
6311
|
}
|
|
6119
6312
|
}
|
|
@@ -6133,6 +6326,7 @@
|
|
|
6133
6326
|
"quota",
|
|
6134
6327
|
"session_not_found",
|
|
6135
6328
|
"tool_deferred",
|
|
6329
|
+
"model_mismatch",
|
|
6136
6330
|
null
|
|
6137
6331
|
]
|
|
6138
6332
|
}
|
|
@@ -6145,7 +6339,41 @@
|
|
|
6145
6339
|
"type": "string",
|
|
6146
6340
|
"enum": [
|
|
6147
6341
|
"1.6",
|
|
6148
|
-
"1.7"
|
|
6342
|
+
"1.7",
|
|
6343
|
+
"1.8"
|
|
6344
|
+
]
|
|
6345
|
+
}
|
|
6346
|
+
}
|
|
6347
|
+
}
|
|
6348
|
+
]
|
|
6349
|
+
},
|
|
6350
|
+
{
|
|
6351
|
+
"anyOf": [
|
|
6352
|
+
{
|
|
6353
|
+
"type": "object",
|
|
6354
|
+
"properties": {
|
|
6355
|
+
"failure_kind": {
|
|
6356
|
+
"enum": [
|
|
6357
|
+
"auth",
|
|
6358
|
+
"rate_limit",
|
|
6359
|
+
"model_not_found",
|
|
6360
|
+
"quota",
|
|
6361
|
+
"session_not_found",
|
|
6362
|
+
"tool_deferred",
|
|
6363
|
+
"untrusted_directory",
|
|
6364
|
+
"input_too_large",
|
|
6365
|
+
null
|
|
6366
|
+
]
|
|
6367
|
+
}
|
|
6368
|
+
}
|
|
6369
|
+
},
|
|
6370
|
+
{
|
|
6371
|
+
"type": "object",
|
|
6372
|
+
"properties": {
|
|
6373
|
+
"schema_version": {
|
|
6374
|
+
"type": "string",
|
|
6375
|
+
"enum": [
|
|
6376
|
+
"1.8"
|
|
6149
6377
|
]
|
|
6150
6378
|
}
|
|
6151
6379
|
}
|
|
@@ -6392,7 +6620,7 @@
|
|
|
6392
6620
|
"$ref": "#/$defs/HistoryLabels"
|
|
6393
6621
|
},
|
|
6394
6622
|
"model": {
|
|
6395
|
-
"description": "The
|
|
6623
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
6396
6624
|
"type": [
|
|
6397
6625
|
"string",
|
|
6398
6626
|
"null"
|
|
@@ -6406,6 +6634,13 @@
|
|
|
6406
6634
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
6407
6635
|
"type": "string"
|
|
6408
6636
|
},
|
|
6637
|
+
"observed_model": {
|
|
6638
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
6639
|
+
"type": [
|
|
6640
|
+
"string",
|
|
6641
|
+
"null"
|
|
6642
|
+
]
|
|
6643
|
+
},
|
|
6409
6644
|
"observed_tool_ms": false,
|
|
6410
6645
|
"permission_mode": {
|
|
6411
6646
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -6427,7 +6662,8 @@
|
|
|
6427
6662
|
"1.4",
|
|
6428
6663
|
"1.5",
|
|
6429
6664
|
"1.6",
|
|
6430
|
-
"1.7"
|
|
6665
|
+
"1.7",
|
|
6666
|
+
"1.8"
|
|
6431
6667
|
]
|
|
6432
6668
|
},
|
|
6433
6669
|
"session": {
|
|
@@ -6773,7 +7009,7 @@
|
|
|
6773
7009
|
"$ref": "#/$defs/HistoryLabels"
|
|
6774
7010
|
},
|
|
6775
7011
|
"model": {
|
|
6776
|
-
"description": "The
|
|
7012
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
6777
7013
|
"type": [
|
|
6778
7014
|
"string",
|
|
6779
7015
|
"null"
|
|
@@ -6787,6 +7023,13 @@
|
|
|
6787
7023
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
6788
7024
|
"type": "string"
|
|
6789
7025
|
},
|
|
7026
|
+
"observed_model": {
|
|
7027
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
7028
|
+
"type": [
|
|
7029
|
+
"string",
|
|
7030
|
+
"null"
|
|
7031
|
+
]
|
|
7032
|
+
},
|
|
6790
7033
|
"observed_tool_ms": false,
|
|
6791
7034
|
"permission_mode": {
|
|
6792
7035
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -7020,7 +7263,7 @@
|
|
|
7020
7263
|
"$ref": "#/$defs/HistoryLabels"
|
|
7021
7264
|
},
|
|
7022
7265
|
"model": {
|
|
7023
|
-
"description": "The
|
|
7266
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
7024
7267
|
"type": [
|
|
7025
7268
|
"string",
|
|
7026
7269
|
"null"
|
|
@@ -7031,6 +7274,13 @@
|
|
|
7031
7274
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
7032
7275
|
"type": "string"
|
|
7033
7276
|
},
|
|
7277
|
+
"observed_model": {
|
|
7278
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
7279
|
+
"type": [
|
|
7280
|
+
"string",
|
|
7281
|
+
"null"
|
|
7282
|
+
]
|
|
7283
|
+
},
|
|
7034
7284
|
"observed_tool_ms": false,
|
|
7035
7285
|
"permission_mode": {
|
|
7036
7286
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -7052,7 +7302,8 @@
|
|
|
7052
7302
|
"1.4",
|
|
7053
7303
|
"1.5",
|
|
7054
7304
|
"1.6",
|
|
7055
|
-
"1.7"
|
|
7305
|
+
"1.7",
|
|
7306
|
+
"1.8"
|
|
7056
7307
|
]
|
|
7057
7308
|
},
|
|
7058
7309
|
"session": {
|
|
@@ -7206,7 +7457,7 @@
|
|
|
7206
7457
|
"$ref": "#/$defs/HistoryLabels"
|
|
7207
7458
|
},
|
|
7208
7459
|
"model": {
|
|
7209
|
-
"description": "The
|
|
7460
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
7210
7461
|
"type": [
|
|
7211
7462
|
"string",
|
|
7212
7463
|
"null"
|
|
@@ -7217,6 +7468,13 @@
|
|
|
7217
7468
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
7218
7469
|
"type": "string"
|
|
7219
7470
|
},
|
|
7471
|
+
"observed_model": {
|
|
7472
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
7473
|
+
"type": [
|
|
7474
|
+
"string",
|
|
7475
|
+
"null"
|
|
7476
|
+
]
|
|
7477
|
+
},
|
|
7220
7478
|
"observed_tool_ms": {
|
|
7221
7479
|
"type": "integer",
|
|
7222
7480
|
"minimum": 0
|
|
@@ -7241,7 +7499,8 @@
|
|
|
7241
7499
|
"1.4",
|
|
7242
7500
|
"1.5",
|
|
7243
7501
|
"1.6",
|
|
7244
|
-
"1.7"
|
|
7502
|
+
"1.7",
|
|
7503
|
+
"1.8"
|
|
7245
7504
|
]
|
|
7246
7505
|
},
|
|
7247
7506
|
"session": {
|
|
@@ -7396,7 +7655,7 @@
|
|
|
7396
7655
|
"$ref": "#/$defs/HistoryLabels"
|
|
7397
7656
|
},
|
|
7398
7657
|
"model": {
|
|
7399
|
-
"description": "The
|
|
7658
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
7400
7659
|
"type": [
|
|
7401
7660
|
"string",
|
|
7402
7661
|
"null"
|
|
@@ -7407,6 +7666,13 @@
|
|
|
7407
7666
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
7408
7667
|
"type": "string"
|
|
7409
7668
|
},
|
|
7669
|
+
"observed_model": {
|
|
7670
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
7671
|
+
"type": [
|
|
7672
|
+
"string",
|
|
7673
|
+
"null"
|
|
7674
|
+
]
|
|
7675
|
+
},
|
|
7410
7676
|
"observed_tool_ms": false,
|
|
7411
7677
|
"permission_mode": {
|
|
7412
7678
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -7428,7 +7694,8 @@
|
|
|
7428
7694
|
"1.4",
|
|
7429
7695
|
"1.5",
|
|
7430
7696
|
"1.6",
|
|
7431
|
-
"1.7"
|
|
7697
|
+
"1.7",
|
|
7698
|
+
"1.8"
|
|
7432
7699
|
]
|
|
7433
7700
|
},
|
|
7434
7701
|
"session": {
|
|
@@ -7585,7 +7852,7 @@
|
|
|
7585
7852
|
"$ref": "#/$defs/HistoryLabels"
|
|
7586
7853
|
},
|
|
7587
7854
|
"model": {
|
|
7588
|
-
"description": "The
|
|
7855
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
7589
7856
|
"type": [
|
|
7590
7857
|
"string",
|
|
7591
7858
|
"null"
|
|
@@ -7596,6 +7863,13 @@
|
|
|
7596
7863
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
7597
7864
|
"type": "string"
|
|
7598
7865
|
},
|
|
7866
|
+
"observed_model": {
|
|
7867
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
7868
|
+
"type": [
|
|
7869
|
+
"string",
|
|
7870
|
+
"null"
|
|
7871
|
+
]
|
|
7872
|
+
},
|
|
7599
7873
|
"observed_tool_ms": false,
|
|
7600
7874
|
"permission_mode": {
|
|
7601
7875
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -7616,7 +7890,8 @@
|
|
|
7616
7890
|
"1.4",
|
|
7617
7891
|
"1.5",
|
|
7618
7892
|
"1.6",
|
|
7619
|
-
"1.7"
|
|
7893
|
+
"1.7",
|
|
7894
|
+
"1.8"
|
|
7620
7895
|
]
|
|
7621
7896
|
},
|
|
7622
7897
|
"session": {
|
|
@@ -7797,7 +8072,7 @@
|
|
|
7797
8072
|
"$ref": "#/$defs/HistoryLabels"
|
|
7798
8073
|
},
|
|
7799
8074
|
"model": {
|
|
7800
|
-
"description": "The
|
|
8075
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
7801
8076
|
"type": [
|
|
7802
8077
|
"string",
|
|
7803
8078
|
"null"
|
|
@@ -7808,6 +8083,13 @@
|
|
|
7808
8083
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
7809
8084
|
"type": "string"
|
|
7810
8085
|
},
|
|
8086
|
+
"observed_model": {
|
|
8087
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
8088
|
+
"type": [
|
|
8089
|
+
"string",
|
|
8090
|
+
"null"
|
|
8091
|
+
]
|
|
8092
|
+
},
|
|
7811
8093
|
"observed_tool_ms": false,
|
|
7812
8094
|
"permission_mode": {
|
|
7813
8095
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -8042,7 +8324,7 @@
|
|
|
8042
8324
|
"$ref": "#/$defs/HistoryLabels"
|
|
8043
8325
|
},
|
|
8044
8326
|
"model": {
|
|
8045
|
-
"description": "The
|
|
8327
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
8046
8328
|
"type": [
|
|
8047
8329
|
"string",
|
|
8048
8330
|
"null"
|
|
@@ -8053,6 +8335,13 @@
|
|
|
8053
8335
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
8054
8336
|
"type": "string"
|
|
8055
8337
|
},
|
|
8338
|
+
"observed_model": {
|
|
8339
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
8340
|
+
"type": [
|
|
8341
|
+
"string",
|
|
8342
|
+
"null"
|
|
8343
|
+
]
|
|
8344
|
+
},
|
|
8056
8345
|
"observed_tool_ms": false,
|
|
8057
8346
|
"permission_mode": {
|
|
8058
8347
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -8258,7 +8547,7 @@
|
|
|
8258
8547
|
"$ref": "#/$defs/HistoryLabels"
|
|
8259
8548
|
},
|
|
8260
8549
|
"model": {
|
|
8261
|
-
"description": "The
|
|
8550
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
8262
8551
|
"type": [
|
|
8263
8552
|
"string",
|
|
8264
8553
|
"null"
|
|
@@ -8276,6 +8565,13 @@
|
|
|
8276
8565
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
8277
8566
|
"type": "string"
|
|
8278
8567
|
},
|
|
8568
|
+
"observed_model": {
|
|
8569
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
8570
|
+
"type": [
|
|
8571
|
+
"string",
|
|
8572
|
+
"null"
|
|
8573
|
+
]
|
|
8574
|
+
},
|
|
8279
8575
|
"observed_tool_ms": {
|
|
8280
8576
|
"description": "Union of tool intervals observed at the stdout pipe. Unlike `tool_ms`,\nthis is not provider-measured and has no model-latency counterpart.",
|
|
8281
8577
|
"type": [
|
|
@@ -8544,6 +8840,11 @@
|
|
|
8544
8840
|
"description": "The request exceeded the input size the provider accepts and was refused\nbefore the model was called (Codex reports the machine-readable\n`input_error_code: input_too_large` with `max_chars`/`actual_chars`). The\nother precondition refusal: no tokens were spent, and a candidate with a\nlarger window can still run the task.",
|
|
8545
8841
|
"type": "string",
|
|
8546
8842
|
"const": "input_too_large"
|
|
8843
|
+
},
|
|
8844
|
+
{
|
|
8845
|
+
"description": "The harness reported it would run the conversation under a model other\nthan the one requested, and oneharness refused the turn before it\nstarted (codex's app-server names the thread's model on its\n`thread/start` / `thread/resume` response, before any token is spent).\nThe third precondition refusal: no work was done, no token was spent, and\nthe next identity may honour the model.",
|
|
8846
|
+
"type": "string",
|
|
8847
|
+
"const": "model_mismatch"
|
|
8547
8848
|
}
|
|
8548
8849
|
]
|
|
8549
8850
|
},
|
|
@@ -8918,6 +9219,11 @@
|
|
|
8918
9219
|
"description": "The request exceeded the input size the provider accepts and was refused\nbefore the model was called (Codex reports the machine-readable\n`input_error_code: input_too_large` with `max_chars`/`actual_chars`). The\nother precondition refusal: no tokens were spent, and a candidate with a\nlarger window can still run the task.",
|
|
8919
9220
|
"type": "string",
|
|
8920
9221
|
"const": "input_too_large"
|
|
9222
|
+
},
|
|
9223
|
+
{
|
|
9224
|
+
"description": "The harness reported it would run the conversation under a model other\nthan the one requested, and oneharness refused the turn before it\nstarted (codex's app-server names the thread's model on its\n`thread/start` / `thread/resume` response, before any token is spent).\nThe third precondition refusal: no work was done, no token was spent, and\nthe next identity may honour the model.",
|
|
9225
|
+
"type": "string",
|
|
9226
|
+
"const": "model_mismatch"
|
|
8921
9227
|
}
|
|
8922
9228
|
]
|
|
8923
9229
|
},
|
|
@@ -8955,7 +9261,8 @@
|
|
|
8955
9261
|
"1.4",
|
|
8956
9262
|
"1.5",
|
|
8957
9263
|
"1.6",
|
|
8958
|
-
"1.7"
|
|
9264
|
+
"1.7",
|
|
9265
|
+
"1.8"
|
|
8959
9266
|
]
|
|
8960
9267
|
},
|
|
8961
9268
|
"variant": {
|
|
@@ -9080,7 +9387,8 @@
|
|
|
9080
9387
|
"1.4",
|
|
9081
9388
|
"1.5",
|
|
9082
9389
|
"1.6",
|
|
9083
|
-
"1.7"
|
|
9390
|
+
"1.7",
|
|
9391
|
+
"1.8"
|
|
9084
9392
|
]
|
|
9085
9393
|
}
|
|
9086
9394
|
},
|
|
@@ -9140,7 +9448,8 @@
|
|
|
9140
9448
|
"schema_version": {
|
|
9141
9449
|
"type": "string",
|
|
9142
9450
|
"enum": [
|
|
9143
|
-
"1.7"
|
|
9451
|
+
"1.7",
|
|
9452
|
+
"1.8"
|
|
9144
9453
|
]
|
|
9145
9454
|
},
|
|
9146
9455
|
"status": {
|
|
@@ -9167,6 +9476,35 @@
|
|
|
9167
9476
|
}
|
|
9168
9477
|
]
|
|
9169
9478
|
},
|
|
9479
|
+
{
|
|
9480
|
+
"oneOf": [
|
|
9481
|
+
{
|
|
9482
|
+
"type": "object",
|
|
9483
|
+
"properties": {
|
|
9484
|
+
"observed_model": {
|
|
9485
|
+
"type": "null"
|
|
9486
|
+
}
|
|
9487
|
+
}
|
|
9488
|
+
},
|
|
9489
|
+
{
|
|
9490
|
+
"type": "object",
|
|
9491
|
+
"properties": {
|
|
9492
|
+
"observed_model": {
|
|
9493
|
+
"type": "string"
|
|
9494
|
+
},
|
|
9495
|
+
"schema_version": {
|
|
9496
|
+
"type": "string",
|
|
9497
|
+
"enum": [
|
|
9498
|
+
"1.8"
|
|
9499
|
+
]
|
|
9500
|
+
}
|
|
9501
|
+
},
|
|
9502
|
+
"required": [
|
|
9503
|
+
"observed_model"
|
|
9504
|
+
]
|
|
9505
|
+
}
|
|
9506
|
+
]
|
|
9507
|
+
},
|
|
9170
9508
|
{
|
|
9171
9509
|
"anyOf": [
|
|
9172
9510
|
{
|
|
@@ -9194,7 +9532,8 @@
|
|
|
9194
9532
|
"1.4",
|
|
9195
9533
|
"1.5",
|
|
9196
9534
|
"1.6",
|
|
9197
|
-
"1.7"
|
|
9535
|
+
"1.7",
|
|
9536
|
+
"1.8"
|
|
9198
9537
|
]
|
|
9199
9538
|
}
|
|
9200
9539
|
}
|
|
@@ -9217,6 +9556,7 @@
|
|
|
9217
9556
|
"tool_deferred",
|
|
9218
9557
|
"untrusted_directory",
|
|
9219
9558
|
"input_too_large",
|
|
9559
|
+
"model_mismatch",
|
|
9220
9560
|
null
|
|
9221
9561
|
]
|
|
9222
9562
|
}
|
|
@@ -9230,7 +9570,8 @@
|
|
|
9230
9570
|
"enum": [
|
|
9231
9571
|
"1.5",
|
|
9232
9572
|
"1.6",
|
|
9233
|
-
"1.7"
|
|
9573
|
+
"1.7",
|
|
9574
|
+
"1.8"
|
|
9234
9575
|
]
|
|
9235
9576
|
}
|
|
9236
9577
|
}
|
|
@@ -9250,6 +9591,7 @@
|
|
|
9250
9591
|
"quota",
|
|
9251
9592
|
"session_not_found",
|
|
9252
9593
|
"tool_deferred",
|
|
9594
|
+
"model_mismatch",
|
|
9253
9595
|
null
|
|
9254
9596
|
]
|
|
9255
9597
|
}
|
|
@@ -9262,7 +9604,41 @@
|
|
|
9262
9604
|
"type": "string",
|
|
9263
9605
|
"enum": [
|
|
9264
9606
|
"1.6",
|
|
9265
|
-
"1.7"
|
|
9607
|
+
"1.7",
|
|
9608
|
+
"1.8"
|
|
9609
|
+
]
|
|
9610
|
+
}
|
|
9611
|
+
}
|
|
9612
|
+
}
|
|
9613
|
+
]
|
|
9614
|
+
},
|
|
9615
|
+
{
|
|
9616
|
+
"anyOf": [
|
|
9617
|
+
{
|
|
9618
|
+
"type": "object",
|
|
9619
|
+
"properties": {
|
|
9620
|
+
"failure_kind": {
|
|
9621
|
+
"enum": [
|
|
9622
|
+
"auth",
|
|
9623
|
+
"rate_limit",
|
|
9624
|
+
"model_not_found",
|
|
9625
|
+
"quota",
|
|
9626
|
+
"session_not_found",
|
|
9627
|
+
"tool_deferred",
|
|
9628
|
+
"untrusted_directory",
|
|
9629
|
+
"input_too_large",
|
|
9630
|
+
null
|
|
9631
|
+
]
|
|
9632
|
+
}
|
|
9633
|
+
}
|
|
9634
|
+
},
|
|
9635
|
+
{
|
|
9636
|
+
"type": "object",
|
|
9637
|
+
"properties": {
|
|
9638
|
+
"schema_version": {
|
|
9639
|
+
"type": "string",
|
|
9640
|
+
"enum": [
|
|
9641
|
+
"1.8"
|
|
9266
9642
|
]
|
|
9267
9643
|
}
|
|
9268
9644
|
}
|
|
@@ -9509,7 +9885,7 @@
|
|
|
9509
9885
|
"$ref": "#/$defs/HistoryLabels"
|
|
9510
9886
|
},
|
|
9511
9887
|
"model": {
|
|
9512
|
-
"description": "The
|
|
9888
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
9513
9889
|
"type": [
|
|
9514
9890
|
"string",
|
|
9515
9891
|
"null"
|
|
@@ -9523,6 +9899,13 @@
|
|
|
9523
9899
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
9524
9900
|
"type": "string"
|
|
9525
9901
|
},
|
|
9902
|
+
"observed_model": {
|
|
9903
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
9904
|
+
"type": [
|
|
9905
|
+
"string",
|
|
9906
|
+
"null"
|
|
9907
|
+
]
|
|
9908
|
+
},
|
|
9526
9909
|
"observed_tool_ms": false,
|
|
9527
9910
|
"permission_mode": {
|
|
9528
9911
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -9544,7 +9927,8 @@
|
|
|
9544
9927
|
"1.4",
|
|
9545
9928
|
"1.5",
|
|
9546
9929
|
"1.6",
|
|
9547
|
-
"1.7"
|
|
9930
|
+
"1.7",
|
|
9931
|
+
"1.8"
|
|
9548
9932
|
]
|
|
9549
9933
|
},
|
|
9550
9934
|
"session": {
|
|
@@ -9890,7 +10274,7 @@
|
|
|
9890
10274
|
"$ref": "#/$defs/HistoryLabels"
|
|
9891
10275
|
},
|
|
9892
10276
|
"model": {
|
|
9893
|
-
"description": "The
|
|
10277
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
9894
10278
|
"type": [
|
|
9895
10279
|
"string",
|
|
9896
10280
|
"null"
|
|
@@ -9904,6 +10288,13 @@
|
|
|
9904
10288
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
9905
10289
|
"type": "string"
|
|
9906
10290
|
},
|
|
10291
|
+
"observed_model": {
|
|
10292
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
10293
|
+
"type": [
|
|
10294
|
+
"string",
|
|
10295
|
+
"null"
|
|
10296
|
+
]
|
|
10297
|
+
},
|
|
9907
10298
|
"observed_tool_ms": false,
|
|
9908
10299
|
"permission_mode": {
|
|
9909
10300
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -10137,7 +10528,7 @@
|
|
|
10137
10528
|
"$ref": "#/$defs/HistoryLabels"
|
|
10138
10529
|
},
|
|
10139
10530
|
"model": {
|
|
10140
|
-
"description": "The
|
|
10531
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
10141
10532
|
"type": [
|
|
10142
10533
|
"string",
|
|
10143
10534
|
"null"
|
|
@@ -10148,6 +10539,13 @@
|
|
|
10148
10539
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
10149
10540
|
"type": "string"
|
|
10150
10541
|
},
|
|
10542
|
+
"observed_model": {
|
|
10543
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
10544
|
+
"type": [
|
|
10545
|
+
"string",
|
|
10546
|
+
"null"
|
|
10547
|
+
]
|
|
10548
|
+
},
|
|
10151
10549
|
"observed_tool_ms": false,
|
|
10152
10550
|
"permission_mode": {
|
|
10153
10551
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -10169,7 +10567,8 @@
|
|
|
10169
10567
|
"1.4",
|
|
10170
10568
|
"1.5",
|
|
10171
10569
|
"1.6",
|
|
10172
|
-
"1.7"
|
|
10570
|
+
"1.7",
|
|
10571
|
+
"1.8"
|
|
10173
10572
|
]
|
|
10174
10573
|
},
|
|
10175
10574
|
"session": {
|
|
@@ -10323,7 +10722,7 @@
|
|
|
10323
10722
|
"$ref": "#/$defs/HistoryLabels"
|
|
10324
10723
|
},
|
|
10325
10724
|
"model": {
|
|
10326
|
-
"description": "The
|
|
10725
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
10327
10726
|
"type": [
|
|
10328
10727
|
"string",
|
|
10329
10728
|
"null"
|
|
@@ -10334,6 +10733,13 @@
|
|
|
10334
10733
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
10335
10734
|
"type": "string"
|
|
10336
10735
|
},
|
|
10736
|
+
"observed_model": {
|
|
10737
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
10738
|
+
"type": [
|
|
10739
|
+
"string",
|
|
10740
|
+
"null"
|
|
10741
|
+
]
|
|
10742
|
+
},
|
|
10337
10743
|
"observed_tool_ms": {
|
|
10338
10744
|
"type": "integer",
|
|
10339
10745
|
"minimum": 0
|
|
@@ -10358,7 +10764,8 @@
|
|
|
10358
10764
|
"1.4",
|
|
10359
10765
|
"1.5",
|
|
10360
10766
|
"1.6",
|
|
10361
|
-
"1.7"
|
|
10767
|
+
"1.7",
|
|
10768
|
+
"1.8"
|
|
10362
10769
|
]
|
|
10363
10770
|
},
|
|
10364
10771
|
"session": {
|
|
@@ -10513,7 +10920,7 @@
|
|
|
10513
10920
|
"$ref": "#/$defs/HistoryLabels"
|
|
10514
10921
|
},
|
|
10515
10922
|
"model": {
|
|
10516
|
-
"description": "The
|
|
10923
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
10517
10924
|
"type": [
|
|
10518
10925
|
"string",
|
|
10519
10926
|
"null"
|
|
@@ -10524,6 +10931,13 @@
|
|
|
10524
10931
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
10525
10932
|
"type": "string"
|
|
10526
10933
|
},
|
|
10934
|
+
"observed_model": {
|
|
10935
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
10936
|
+
"type": [
|
|
10937
|
+
"string",
|
|
10938
|
+
"null"
|
|
10939
|
+
]
|
|
10940
|
+
},
|
|
10527
10941
|
"observed_tool_ms": false,
|
|
10528
10942
|
"permission_mode": {
|
|
10529
10943
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -10545,7 +10959,8 @@
|
|
|
10545
10959
|
"1.4",
|
|
10546
10960
|
"1.5",
|
|
10547
10961
|
"1.6",
|
|
10548
|
-
"1.7"
|
|
10962
|
+
"1.7",
|
|
10963
|
+
"1.8"
|
|
10549
10964
|
]
|
|
10550
10965
|
},
|
|
10551
10966
|
"session": {
|
|
@@ -10702,7 +11117,7 @@
|
|
|
10702
11117
|
"$ref": "#/$defs/HistoryLabels"
|
|
10703
11118
|
},
|
|
10704
11119
|
"model": {
|
|
10705
|
-
"description": "The
|
|
11120
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
10706
11121
|
"type": [
|
|
10707
11122
|
"string",
|
|
10708
11123
|
"null"
|
|
@@ -10713,6 +11128,13 @@
|
|
|
10713
11128
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
10714
11129
|
"type": "string"
|
|
10715
11130
|
},
|
|
11131
|
+
"observed_model": {
|
|
11132
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
11133
|
+
"type": [
|
|
11134
|
+
"string",
|
|
11135
|
+
"null"
|
|
11136
|
+
]
|
|
11137
|
+
},
|
|
10716
11138
|
"observed_tool_ms": false,
|
|
10717
11139
|
"permission_mode": {
|
|
10718
11140
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -10733,7 +11155,8 @@
|
|
|
10733
11155
|
"1.4",
|
|
10734
11156
|
"1.5",
|
|
10735
11157
|
"1.6",
|
|
10736
|
-
"1.7"
|
|
11158
|
+
"1.7",
|
|
11159
|
+
"1.8"
|
|
10737
11160
|
]
|
|
10738
11161
|
},
|
|
10739
11162
|
"session": {
|
|
@@ -10914,7 +11337,7 @@
|
|
|
10914
11337
|
"$ref": "#/$defs/HistoryLabels"
|
|
10915
11338
|
},
|
|
10916
11339
|
"model": {
|
|
10917
|
-
"description": "The
|
|
11340
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
10918
11341
|
"type": [
|
|
10919
11342
|
"string",
|
|
10920
11343
|
"null"
|
|
@@ -10925,6 +11348,13 @@
|
|
|
10925
11348
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
10926
11349
|
"type": "string"
|
|
10927
11350
|
},
|
|
11351
|
+
"observed_model": {
|
|
11352
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
11353
|
+
"type": [
|
|
11354
|
+
"string",
|
|
11355
|
+
"null"
|
|
11356
|
+
]
|
|
11357
|
+
},
|
|
10928
11358
|
"observed_tool_ms": false,
|
|
10929
11359
|
"permission_mode": {
|
|
10930
11360
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -11159,7 +11589,7 @@
|
|
|
11159
11589
|
"$ref": "#/$defs/HistoryLabels"
|
|
11160
11590
|
},
|
|
11161
11591
|
"model": {
|
|
11162
|
-
"description": "The
|
|
11592
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
11163
11593
|
"type": [
|
|
11164
11594
|
"string",
|
|
11165
11595
|
"null"
|
|
@@ -11170,6 +11600,13 @@
|
|
|
11170
11600
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
11171
11601
|
"type": "string"
|
|
11172
11602
|
},
|
|
11603
|
+
"observed_model": {
|
|
11604
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
11605
|
+
"type": [
|
|
11606
|
+
"string",
|
|
11607
|
+
"null"
|
|
11608
|
+
]
|
|
11609
|
+
},
|
|
11173
11610
|
"observed_tool_ms": false,
|
|
11174
11611
|
"permission_mode": {
|
|
11175
11612
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -11375,7 +11812,7 @@
|
|
|
11375
11812
|
"$ref": "#/$defs/HistoryLabels"
|
|
11376
11813
|
},
|
|
11377
11814
|
"model": {
|
|
11378
|
-
"description": "The
|
|
11815
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
11379
11816
|
"type": [
|
|
11380
11817
|
"string",
|
|
11381
11818
|
"null"
|
|
@@ -11393,6 +11830,13 @@
|
|
|
11393
11830
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
11394
11831
|
"type": "string"
|
|
11395
11832
|
},
|
|
11833
|
+
"observed_model": {
|
|
11834
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
11835
|
+
"type": [
|
|
11836
|
+
"string",
|
|
11837
|
+
"null"
|
|
11838
|
+
]
|
|
11839
|
+
},
|
|
11396
11840
|
"observed_tool_ms": {
|
|
11397
11841
|
"description": "Union of tool intervals observed at the stdout pipe. Unlike `tool_ms`,\nthis is not provider-measured and has no model-latency counterpart.",
|
|
11398
11842
|
"type": [
|
|
@@ -11842,6 +12286,11 @@
|
|
|
11842
12286
|
"description": "The request exceeded the input size the provider accepts and was refused\nbefore the model was called (Codex reports the machine-readable\n`input_error_code: input_too_large` with `max_chars`/`actual_chars`). The\nother precondition refusal: no tokens were spent, and a candidate with a\nlarger window can still run the task.",
|
|
11843
12287
|
"type": "string",
|
|
11844
12288
|
"const": "input_too_large"
|
|
12289
|
+
},
|
|
12290
|
+
{
|
|
12291
|
+
"description": "The harness reported it would run the conversation under a model other\nthan the one requested, and oneharness refused the turn before it\nstarted (codex's app-server names the thread's model on its\n`thread/start` / `thread/resume` response, before any token is spent).\nThe third precondition refusal: no work was done, no token was spent, and\nthe next identity may honour the model.",
|
|
12292
|
+
"type": "string",
|
|
12293
|
+
"const": "model_mismatch"
|
|
11845
12294
|
}
|
|
11846
12295
|
]
|
|
11847
12296
|
},
|
|
@@ -11892,7 +12341,8 @@
|
|
|
11892
12341
|
"1.4",
|
|
11893
12342
|
"1.5",
|
|
11894
12343
|
"1.6",
|
|
11895
|
-
"1.7"
|
|
12344
|
+
"1.7",
|
|
12345
|
+
"1.8"
|
|
11896
12346
|
]
|
|
11897
12347
|
}
|
|
11898
12348
|
},
|
|
@@ -11952,7 +12402,8 @@
|
|
|
11952
12402
|
"schema_version": {
|
|
11953
12403
|
"type": "string",
|
|
11954
12404
|
"enum": [
|
|
11955
|
-
"1.7"
|
|
12405
|
+
"1.7",
|
|
12406
|
+
"1.8"
|
|
11956
12407
|
]
|
|
11957
12408
|
},
|
|
11958
12409
|
"status": {
|
|
@@ -11979,6 +12430,35 @@
|
|
|
11979
12430
|
}
|
|
11980
12431
|
]
|
|
11981
12432
|
},
|
|
12433
|
+
{
|
|
12434
|
+
"oneOf": [
|
|
12435
|
+
{
|
|
12436
|
+
"type": "object",
|
|
12437
|
+
"properties": {
|
|
12438
|
+
"observed_model": {
|
|
12439
|
+
"type": "null"
|
|
12440
|
+
}
|
|
12441
|
+
}
|
|
12442
|
+
},
|
|
12443
|
+
{
|
|
12444
|
+
"type": "object",
|
|
12445
|
+
"properties": {
|
|
12446
|
+
"observed_model": {
|
|
12447
|
+
"type": "string"
|
|
12448
|
+
},
|
|
12449
|
+
"schema_version": {
|
|
12450
|
+
"type": "string",
|
|
12451
|
+
"enum": [
|
|
12452
|
+
"1.8"
|
|
12453
|
+
]
|
|
12454
|
+
}
|
|
12455
|
+
},
|
|
12456
|
+
"required": [
|
|
12457
|
+
"observed_model"
|
|
12458
|
+
]
|
|
12459
|
+
}
|
|
12460
|
+
]
|
|
12461
|
+
},
|
|
11982
12462
|
{
|
|
11983
12463
|
"anyOf": [
|
|
11984
12464
|
{
|
|
@@ -12006,7 +12486,8 @@
|
|
|
12006
12486
|
"1.4",
|
|
12007
12487
|
"1.5",
|
|
12008
12488
|
"1.6",
|
|
12009
|
-
"1.7"
|
|
12489
|
+
"1.7",
|
|
12490
|
+
"1.8"
|
|
12010
12491
|
]
|
|
12011
12492
|
}
|
|
12012
12493
|
}
|
|
@@ -12029,6 +12510,7 @@
|
|
|
12029
12510
|
"tool_deferred",
|
|
12030
12511
|
"untrusted_directory",
|
|
12031
12512
|
"input_too_large",
|
|
12513
|
+
"model_mismatch",
|
|
12032
12514
|
null
|
|
12033
12515
|
]
|
|
12034
12516
|
}
|
|
@@ -12042,7 +12524,8 @@
|
|
|
12042
12524
|
"enum": [
|
|
12043
12525
|
"1.5",
|
|
12044
12526
|
"1.6",
|
|
12045
|
-
"1.7"
|
|
12527
|
+
"1.7",
|
|
12528
|
+
"1.8"
|
|
12046
12529
|
]
|
|
12047
12530
|
}
|
|
12048
12531
|
}
|
|
@@ -12062,6 +12545,7 @@
|
|
|
12062
12545
|
"quota",
|
|
12063
12546
|
"session_not_found",
|
|
12064
12547
|
"tool_deferred",
|
|
12548
|
+
"model_mismatch",
|
|
12065
12549
|
null
|
|
12066
12550
|
]
|
|
12067
12551
|
}
|
|
@@ -12074,7 +12558,41 @@
|
|
|
12074
12558
|
"type": "string",
|
|
12075
12559
|
"enum": [
|
|
12076
12560
|
"1.6",
|
|
12077
|
-
"1.7"
|
|
12561
|
+
"1.7",
|
|
12562
|
+
"1.8"
|
|
12563
|
+
]
|
|
12564
|
+
}
|
|
12565
|
+
}
|
|
12566
|
+
}
|
|
12567
|
+
]
|
|
12568
|
+
},
|
|
12569
|
+
{
|
|
12570
|
+
"anyOf": [
|
|
12571
|
+
{
|
|
12572
|
+
"type": "object",
|
|
12573
|
+
"properties": {
|
|
12574
|
+
"failure_kind": {
|
|
12575
|
+
"enum": [
|
|
12576
|
+
"auth",
|
|
12577
|
+
"rate_limit",
|
|
12578
|
+
"model_not_found",
|
|
12579
|
+
"quota",
|
|
12580
|
+
"session_not_found",
|
|
12581
|
+
"tool_deferred",
|
|
12582
|
+
"untrusted_directory",
|
|
12583
|
+
"input_too_large",
|
|
12584
|
+
null
|
|
12585
|
+
]
|
|
12586
|
+
}
|
|
12587
|
+
}
|
|
12588
|
+
},
|
|
12589
|
+
{
|
|
12590
|
+
"type": "object",
|
|
12591
|
+
"properties": {
|
|
12592
|
+
"schema_version": {
|
|
12593
|
+
"type": "string",
|
|
12594
|
+
"enum": [
|
|
12595
|
+
"1.8"
|
|
12078
12596
|
]
|
|
12079
12597
|
}
|
|
12080
12598
|
}
|
|
@@ -12321,7 +12839,7 @@
|
|
|
12321
12839
|
"$ref": "#/$defs/HistoryLabels"
|
|
12322
12840
|
},
|
|
12323
12841
|
"model": {
|
|
12324
|
-
"description": "The
|
|
12842
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
12325
12843
|
"type": [
|
|
12326
12844
|
"string",
|
|
12327
12845
|
"null"
|
|
@@ -12335,6 +12853,13 @@
|
|
|
12335
12853
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
12336
12854
|
"type": "string"
|
|
12337
12855
|
},
|
|
12856
|
+
"observed_model": {
|
|
12857
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
12858
|
+
"type": [
|
|
12859
|
+
"string",
|
|
12860
|
+
"null"
|
|
12861
|
+
]
|
|
12862
|
+
},
|
|
12338
12863
|
"observed_tool_ms": false,
|
|
12339
12864
|
"permission_mode": {
|
|
12340
12865
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -12356,7 +12881,8 @@
|
|
|
12356
12881
|
"1.4",
|
|
12357
12882
|
"1.5",
|
|
12358
12883
|
"1.6",
|
|
12359
|
-
"1.7"
|
|
12884
|
+
"1.7",
|
|
12885
|
+
"1.8"
|
|
12360
12886
|
]
|
|
12361
12887
|
},
|
|
12362
12888
|
"session": {
|
|
@@ -12702,7 +13228,7 @@
|
|
|
12702
13228
|
"$ref": "#/$defs/HistoryLabels"
|
|
12703
13229
|
},
|
|
12704
13230
|
"model": {
|
|
12705
|
-
"description": "The
|
|
13231
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
12706
13232
|
"type": [
|
|
12707
13233
|
"string",
|
|
12708
13234
|
"null"
|
|
@@ -12716,6 +13242,13 @@
|
|
|
12716
13242
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
12717
13243
|
"type": "string"
|
|
12718
13244
|
},
|
|
13245
|
+
"observed_model": {
|
|
13246
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
13247
|
+
"type": [
|
|
13248
|
+
"string",
|
|
13249
|
+
"null"
|
|
13250
|
+
]
|
|
13251
|
+
},
|
|
12719
13252
|
"observed_tool_ms": false,
|
|
12720
13253
|
"permission_mode": {
|
|
12721
13254
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -12949,7 +13482,7 @@
|
|
|
12949
13482
|
"$ref": "#/$defs/HistoryLabels"
|
|
12950
13483
|
},
|
|
12951
13484
|
"model": {
|
|
12952
|
-
"description": "The
|
|
13485
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
12953
13486
|
"type": [
|
|
12954
13487
|
"string",
|
|
12955
13488
|
"null"
|
|
@@ -12960,6 +13493,13 @@
|
|
|
12960
13493
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
12961
13494
|
"type": "string"
|
|
12962
13495
|
},
|
|
13496
|
+
"observed_model": {
|
|
13497
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
13498
|
+
"type": [
|
|
13499
|
+
"string",
|
|
13500
|
+
"null"
|
|
13501
|
+
]
|
|
13502
|
+
},
|
|
12963
13503
|
"observed_tool_ms": false,
|
|
12964
13504
|
"permission_mode": {
|
|
12965
13505
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -12981,7 +13521,8 @@
|
|
|
12981
13521
|
"1.4",
|
|
12982
13522
|
"1.5",
|
|
12983
13523
|
"1.6",
|
|
12984
|
-
"1.7"
|
|
13524
|
+
"1.7",
|
|
13525
|
+
"1.8"
|
|
12985
13526
|
]
|
|
12986
13527
|
},
|
|
12987
13528
|
"session": {
|
|
@@ -13135,7 +13676,7 @@
|
|
|
13135
13676
|
"$ref": "#/$defs/HistoryLabels"
|
|
13136
13677
|
},
|
|
13137
13678
|
"model": {
|
|
13138
|
-
"description": "The
|
|
13679
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
13139
13680
|
"type": [
|
|
13140
13681
|
"string",
|
|
13141
13682
|
"null"
|
|
@@ -13146,6 +13687,13 @@
|
|
|
13146
13687
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
13147
13688
|
"type": "string"
|
|
13148
13689
|
},
|
|
13690
|
+
"observed_model": {
|
|
13691
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
13692
|
+
"type": [
|
|
13693
|
+
"string",
|
|
13694
|
+
"null"
|
|
13695
|
+
]
|
|
13696
|
+
},
|
|
13149
13697
|
"observed_tool_ms": {
|
|
13150
13698
|
"type": "integer",
|
|
13151
13699
|
"minimum": 0
|
|
@@ -13170,7 +13718,8 @@
|
|
|
13170
13718
|
"1.4",
|
|
13171
13719
|
"1.5",
|
|
13172
13720
|
"1.6",
|
|
13173
|
-
"1.7"
|
|
13721
|
+
"1.7",
|
|
13722
|
+
"1.8"
|
|
13174
13723
|
]
|
|
13175
13724
|
},
|
|
13176
13725
|
"session": {
|
|
@@ -13325,7 +13874,7 @@
|
|
|
13325
13874
|
"$ref": "#/$defs/HistoryLabels"
|
|
13326
13875
|
},
|
|
13327
13876
|
"model": {
|
|
13328
|
-
"description": "The
|
|
13877
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
13329
13878
|
"type": [
|
|
13330
13879
|
"string",
|
|
13331
13880
|
"null"
|
|
@@ -13336,6 +13885,13 @@
|
|
|
13336
13885
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
13337
13886
|
"type": "string"
|
|
13338
13887
|
},
|
|
13888
|
+
"observed_model": {
|
|
13889
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
13890
|
+
"type": [
|
|
13891
|
+
"string",
|
|
13892
|
+
"null"
|
|
13893
|
+
]
|
|
13894
|
+
},
|
|
13339
13895
|
"observed_tool_ms": false,
|
|
13340
13896
|
"permission_mode": {
|
|
13341
13897
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -13357,7 +13913,8 @@
|
|
|
13357
13913
|
"1.4",
|
|
13358
13914
|
"1.5",
|
|
13359
13915
|
"1.6",
|
|
13360
|
-
"1.7"
|
|
13916
|
+
"1.7",
|
|
13917
|
+
"1.8"
|
|
13361
13918
|
]
|
|
13362
13919
|
},
|
|
13363
13920
|
"session": {
|
|
@@ -13514,7 +14071,7 @@
|
|
|
13514
14071
|
"$ref": "#/$defs/HistoryLabels"
|
|
13515
14072
|
},
|
|
13516
14073
|
"model": {
|
|
13517
|
-
"description": "The
|
|
14074
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
13518
14075
|
"type": [
|
|
13519
14076
|
"string",
|
|
13520
14077
|
"null"
|
|
@@ -13525,6 +14082,13 @@
|
|
|
13525
14082
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
13526
14083
|
"type": "string"
|
|
13527
14084
|
},
|
|
14085
|
+
"observed_model": {
|
|
14086
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
14087
|
+
"type": [
|
|
14088
|
+
"string",
|
|
14089
|
+
"null"
|
|
14090
|
+
]
|
|
14091
|
+
},
|
|
13528
14092
|
"observed_tool_ms": false,
|
|
13529
14093
|
"permission_mode": {
|
|
13530
14094
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -13545,7 +14109,8 @@
|
|
|
13545
14109
|
"1.4",
|
|
13546
14110
|
"1.5",
|
|
13547
14111
|
"1.6",
|
|
13548
|
-
"1.7"
|
|
14112
|
+
"1.7",
|
|
14113
|
+
"1.8"
|
|
13549
14114
|
]
|
|
13550
14115
|
},
|
|
13551
14116
|
"session": {
|
|
@@ -13726,7 +14291,7 @@
|
|
|
13726
14291
|
"$ref": "#/$defs/HistoryLabels"
|
|
13727
14292
|
},
|
|
13728
14293
|
"model": {
|
|
13729
|
-
"description": "The
|
|
14294
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
13730
14295
|
"type": [
|
|
13731
14296
|
"string",
|
|
13732
14297
|
"null"
|
|
@@ -13737,6 +14302,13 @@
|
|
|
13737
14302
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
13738
14303
|
"type": "string"
|
|
13739
14304
|
},
|
|
14305
|
+
"observed_model": {
|
|
14306
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
14307
|
+
"type": [
|
|
14308
|
+
"string",
|
|
14309
|
+
"null"
|
|
14310
|
+
]
|
|
14311
|
+
},
|
|
13740
14312
|
"observed_tool_ms": false,
|
|
13741
14313
|
"permission_mode": {
|
|
13742
14314
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -13971,7 +14543,7 @@
|
|
|
13971
14543
|
"$ref": "#/$defs/HistoryLabels"
|
|
13972
14544
|
},
|
|
13973
14545
|
"model": {
|
|
13974
|
-
"description": "The
|
|
14546
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
13975
14547
|
"type": [
|
|
13976
14548
|
"string",
|
|
13977
14549
|
"null"
|
|
@@ -13982,6 +14554,13 @@
|
|
|
13982
14554
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
13983
14555
|
"type": "string"
|
|
13984
14556
|
},
|
|
14557
|
+
"observed_model": {
|
|
14558
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
14559
|
+
"type": [
|
|
14560
|
+
"string",
|
|
14561
|
+
"null"
|
|
14562
|
+
]
|
|
14563
|
+
},
|
|
13985
14564
|
"observed_tool_ms": false,
|
|
13986
14565
|
"permission_mode": {
|
|
13987
14566
|
"description": "The normalized approval mode requested for the run.",
|
|
@@ -14187,7 +14766,7 @@
|
|
|
14187
14766
|
"$ref": "#/$defs/HistoryLabels"
|
|
14188
14767
|
},
|
|
14189
14768
|
"model": {
|
|
14190
|
-
"description": "The
|
|
14769
|
+
"description": "The model this run **requested** — the value oneharness put on the\nharness's model flag or protocol frame — if any. Copied from\n[`RunResult::model`], so it keeps meaning the requested model even where\n`observed_model` below is present.",
|
|
14191
14770
|
"type": [
|
|
14192
14771
|
"string",
|
|
14193
14772
|
"null"
|
|
@@ -14205,6 +14784,13 @@
|
|
|
14205
14784
|
"description": "The human-meaningful session name (see [`session_name`]); repeated on\nevery record so a reader can resolve a session by name from any line.",
|
|
14206
14785
|
"type": "string"
|
|
14207
14786
|
},
|
|
14787
|
+
"observed_model": {
|
|
14788
|
+
"description": "The model the harness **itself** reported the conversation would run\nunder, read off its own protocol before any token was spent — for codex\nover `app-server`, `result.model` of the `thread/start` /\n`thread/resume` response. Copied from [`RunResult::observed_model`]:\nnever inferred and never copied from `model`, and omitted on the wire on\nevery path that reports none.\n\nOn a completed app-server turn the two agree, because a turn whose\nreported model differed from the requested one was refused before it\nran (`model_mismatch`) — so a completed record's `model` is what codex\nran, and the record can no longer say one model while another was\nbilled. They differ only on such a refused record, and where no model\nwas requested at all. Gated to [`FIRST_MODEL_OBSERVATION_SCHEMA_VERSION`].",
|
|
14789
|
+
"type": [
|
|
14790
|
+
"string",
|
|
14791
|
+
"null"
|
|
14792
|
+
]
|
|
14793
|
+
},
|
|
14208
14794
|
"observed_tool_ms": {
|
|
14209
14795
|
"description": "Union of tool intervals observed at the stdout pipe. Unlike `tool_ms`,\nthis is not provider-measured and has no model-latency counterpart.",
|
|
14210
14796
|
"type": [
|