Skip to content

Commit 2f95d31

Browse files
authored
docs(adr): tighten wire-format casing invariant (#1653)
1 parent 3446da7 commit 2f95d31

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

docs/adr/0017-output-artifact-and-workspace-resolver-contract.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,24 @@ Two decisions follow: the canonical result bundle, and how a workspace is acquir
3333

3434
## Decision — output/artifact contract (best-of-each, split, no DB)
3535

36+
### Wire-format casing invariant
37+
38+
All AgentV-owned process-boundary and persisted artifact fields use `snake_case`.
39+
This includes YAML authoring, JSON/JSONL run bundles, `.internal/index.jsonl`,
40+
`summary.json`, `result.json`, `grading.json`, `metrics.json`, transcript
41+
sidecars, CLI JSON output, Dashboard/API response bodies, gate stdin/stdout, and
42+
adapter/export bundle fields.
43+
44+
Internal TypeScript APIs may use `camelCase`, but writers must translate to
45+
`snake_case` at the boundary and readers must translate back at the boundary.
46+
New AgentV-owned public fields must not be introduced in `camelCase`, and must
47+
not ship dual `camelCase`/`snake_case` aliases unless an already-shipped external
48+
compatibility surface requires a documented migration.
49+
50+
Opaque provider-native payloads are exempt only when they are preserved as native
51+
evidence, such as `transcript-raw.jsonl`, provider metadata, or external
52+
protocol payloads. AgentV wrappers around those payloads still use `snake_case`.
53+
3654
1. **Split bundle is the single source of truth** (`.agentv/results/<run_id>/`); NO
3755
maintained consolidated single-file export (generate on demand if ever needed).
3856
3 of 4 references split; only promptfoo consolidates (for its DB/hosted model).
@@ -250,3 +268,5 @@ exploitbench (security-exploit benchmark; AgentV research `entities/exploitbench
250268
- Opik export (`av-bv4.6`) and the Dashboard (`av-2s7`) consume the new bundle → re-gate on
251269
this contract.
252270
- Codemod handles bundle-field renames and drops the tangled repo-acquisition fields.
271+
- `camelCase` in an AgentV-owned artifact or response is a contract bug, not a
272+
stylistic alternative.

0 commit comments

Comments
 (0)