Viewing files at commit c10cefe7abe5Commit detailsView latest

Browse files
config/command_semantics.json 377 lines · 9.4 KB · json
1
{
2
  "version": "2026-06-18.1",
3
  "harness_tracks_note": "Machine-readable source of the exact commands each lane runs per subject kind and track. Harnesses load this via oakbench.command_semantics; changing any command requires a version bump (ADR-0005). {message} is substituted at run time.",
4
  "harness_tracks": {
5
    "git": {
6
      "init": [
7
        "init"
8
      ],
9
      "stage": [
10
        "add",
11
        "."
12
      ],
13
      "commit": [
14
        "commit",
15
        "-m",
16
        "{message}"
17
      ],
18
      "branch_create": [
19
        "checkout",
20
        "-b",
21
        "agent-task"
22
      ],
23
      "status": {
24
        "agent-default": [
25
          "status",
26
          "--short"
27
        ],
28
        "core-equivalent": [
29
          "status",
30
          "--porcelain=v1"
31
        ]
32
      },
33
      "diff": {
34
        "agent-default": [
35
          "diff",
36
          "--stat"
37
        ],
38
        "core-equivalent": [
39
          "diff",
40
          "--no-ext-diff"
41
        ]
42
      }
43
    },
44
    "oak": {
45
      "init": [
46
        "init",
47
        "."
48
      ],
49
      "stage": null,
50
      "commit": [
51
        "commit",
52
        "--no-verify"
53
      ],
54
      "branch_create": [
55
        "switch",
56
        "-c",
57
        "agent-task"
58
      ],
59
      "status": {
60
        "agent-default": [
61
          "status"
62
        ],
63
        "core-equivalent": [
64
          "status"
65
        ]
66
      },
67
      "diff": {
68
        "agent-default": [
69
          "diff"
70
        ],
71
        "core-equivalent": [
72
          "diff",
73
          "--print"
74
        ]
75
      }
76
    }
77
  },
78
  "agent_native_json_probes": {
79
    "git": {},
80
    "oak": {
81
      "oak.agent.state.json": {
82
        "minimum_oak_version": "0.98.0",
83
        "args": [
84
          "agent",
85
          "state",
86
          "--json"
87
        ],
88
        "help_args": [
89
          "agent",
90
          "state",
91
          "--help"
92
        ],
93
        "required_fields": [
94
          "schema_version",
95
          "context",
96
          "branch",
97
          "head",
98
          "dirty",
99
          "changes",
100
          "progress_state",
101
          "recommended_action"
102
        ]
103
      },
104
      "oak.agent.state.compact.json": {
105
        "minimum_oak_version": "0.98.0",
106
        "args": [
107
          "agent",
108
          "state",
109
          "--json",
110
          "--compact"
111
        ],
112
        "help_args": [
113
          "agent",
114
          "state",
115
          "--help"
116
        ],
117
        "required_fields": [
118
          "schema_version",
119
          "context",
120
          "dirty",
121
          "finish_eligible",
122
          "progress_state",
123
          "recommended_action",
124
          "recommended_next_commands"
125
        ]
126
      },
127
      "oak.status.json": {
128
        "args": [
129
          "status",
130
          "--json"
131
        ],
132
        "help_args": [
133
          "status",
134
          "--help"
135
        ],
136
        "required_fields": [
137
          "schema_version",
138
          "branch",
139
          "head",
140
          "changes",
141
          "progress_state"
142
        ]
143
      },
144
      "oak.branch.review.json": {
145
        "args": [
146
          "branch",
147
          "review",
148
          "--json",
149
          "{branch}"
150
        ],
151
        "help_args": [
152
          "branch",
153
          "review",
154
          "--help"
155
        ],
156
        "required_fields": [
157
          "schema_version",
158
          "branch",
159
          "against",
160
          "branch_head",
161
          "changed_file_count",
162
          "changed_files",
163
          "merge_lineage_evidence"
164
        ]
165
      },
166
      "oak.branch.diff.json": {
167
        "args": [
168
          "branch",
169
          "diff",
170
          "--json",
171
          "{branch}"
172
        ],
173
        "help_args": [
174
          "branch",
175
          "diff",
176
          "--help"
177
        ],
178
        "required_fields": [
179
          "schema_version",
180
          "kind",
181
          "branch",
182
          "against",
183
          "branch_head",
184
          "changed_file_count",
185
          "changed_files"
186
        ]
187
      }
188
    }
189
  },
190
  "tracks": {
191
    "agent-default": {
192
      "purpose": "Measure what an agent is likely to call today with current documented/default commands.",
193
      "public_claim": "Valid for CLI UX, transcript pressure, and default agent ergonomics. Not a pure VCS-engine comparison."
194
    },
195
    "core-equivalent": {
196
      "purpose": "Measure the closest available equivalent semantic output level across VCSs.",
197
      "public_claim": "Valid only for operations where semantic_contract_match is true. Rows with compatibility notes are diagnostic, not proof."
198
    }
199
  },
200
  "operations": {
201
    "status.short": {
202
      "semantic_contract": "Report changed paths and staged/unstaged state without prose or file content.",
203
      "output_class": "summary",
204
      "git": [
205
        "git",
206
        "status",
207
        "--porcelain=v1"
208
      ],
209
      "oak": [
210
        "oak",
211
        "status",
212
        "--porcelain"
213
      ],
214
      "semantic_contract_match": true,
215
      "compatibility_note": "Oak status --porcelain reports compact stable changed-path rows.",
216
      "correctness_check": "Changed path set and dirty/clean state match fixture manifest."
217
    },
218
    "status.full": {
219
      "semantic_contract": "Report repository state in human-readable form.",
220
      "output_class": "human-full",
221
      "git": [
222
        "git",
223
        "status"
224
      ],
225
      "oak": [
226
        "oak",
227
        "status"
228
      ],
229
      "semantic_contract_match": true,
230
      "correctness_check": "Dirty/clean state and changed path set match fixture manifest."
231
    },
232
    "diff.stat": {
233
      "semantic_contract": "Report changed paths and insertion/deletion summary; no hunks or binary payloads.",
234
      "output_class": "summary",
235
      "git": [
236
        "git",
237
        "diff",
238
        "--stat"
239
      ],
240
      "oak": [
241
        "oak",
242
        "diff",
243
        "--stat"
244
      ],
245
      "semantic_contract_match": true,
246
      "compatibility_note": "oak diff --stat (and piped oak diff default) report per-file +added/-removed counts; binary files are marked \"bin\".",
247
      "correctness_check": "Changed path set and approximate line-change counts match fixture manifest."
248
    },
249
    "diff.full": {
250
      "semantic_contract": "Report text hunks for changed text files and binary-safe summaries for binary files.",
251
      "output_class": "full",
252
      "git": [
253
        "git",
254
        "diff",
255
        "--no-ext-diff"
256
      ],
257
      "oak": [
258
        "oak",
259
        "diff",
260
        "--print"
261
      ],
262
      "semantic_contract_match": true,
263
      "compatibility_note": "oak diff --print emits unified hunks for text and \"Binary files ... differ\" notices for binaries. Rows are invalid if either tool emits raw binary payloads instead of binary summaries.",
264
      "correctness_check": "Text hunks apply cleanly; binary paths are summarized without content dumps."
265
    },
266
    "diff.name_only": {
267
      "semantic_contract": "Report only changed paths.",
268
      "output_class": "summary",
269
      "git": [
270
        "git",
271
        "diff",
272
        "--name-only"
273
      ],
274
      "oak": [
275
        "oak",
276
        "diff",
277
        "--name-only"
278
      ],
279
      "semantic_contract_match": true,
280
      "compatibility_note": "Oak diff --name-only reports changed paths only.",
281
      "correctness_check": "Changed path set equals fixture manifest."
282
    },
283
    "commit.quiet": {
284
      "semantic_contract": "Create a snapshot and emit commit id plus minimal success/failure state.",
285
      "output_class": "summary",
286
      "git": [
287
        [
288
          "git",
289
          "add",
290
          "."
291
        ],
292
        [
293
          "git",
294
          "commit",
295
          "--quiet",
296
          "-m",
297
          "agent task"
298
        ]
299
      ],
300
      "oak": [
301
        "oak",
302
        "commit",
303
        "--json",
304
        "--quiet",
305
        "--no-verify"
306
      ],
307
      "semantic_contract_match": true,
308
      "compatibility_note": "Oak commit --json --quiet emits parseable minimal checkpoint state.",
309
      "correctness_check": "New snapshot exists and working tree is clean."
310
    },
311
    "commit.verbose": {
312
      "semantic_contract": "Create a snapshot and emit human-readable details.",
313
      "output_class": "human-full",
314
      "git": [
315
        [
316
          "git",
317
          "add",
318
          "."
319
        ],
320
        [
321
          "git",
322
          "commit",
323
          "-m",
324
          "agent task"
325
        ]
326
      ],
327
      "oak": [
328
        "oak",
329
        "commit",
330
        "--no-verify"
331
      ],
332
      "semantic_contract_match": true,
333
      "correctness_check": "New snapshot exists and working tree is clean."
334
    },
335
    "branch.create": {
336
      "semantic_contract": "Create and switch to a new task branch from the current revision.",
337
      "output_class": "state-change",
338
      "git": [
339
        "git",
340
        "checkout",
341
        "-b",
342
        "agent-task"
343
      ],
344
      "oak": [
345
        "oak",
346
        "switch",
347
        "-c",
348
        "agent-task"
349
      ],
350
      "semantic_contract_match": true,
351
      "correctness_check": "Current branch is the task branch and points at the original revision."
352
    },
353
    "repo.init": {
354
      "semantic_contract": "Initialize VCS metadata in an existing directory.",
355
      "output_class": "state-change",
356
      "git": [
357
        "git",
358
        "init"
359
      ],
360
      "oak": [
361
        "oak",
362
        "init",
363
        "."
364
      ],
365
      "semantic_contract_match": true,
366
      "correctness_check": "Repository metadata exists and status command succeeds."
367
    },
368
    "workflow.total": {
369
      "semantic_contract": "Complete the deterministic scripted agent-shaped recipe for one task.",
370
      "output_class": "aggregate",
371
      "git": "sum of workflow steps for the selected track",
372
      "oak": "sum of workflow steps for the selected track",
373
      "semantic_contract_match": "depends_on_steps",
374
      "correctness_check": "Workflow oracle passes and final snapshot exists."
375
    }
376
  }
377
}