Context
export.py and the CLI hardcode promptfoo as the only export target — cli.py uses choices=["promptfoo"], and the module docstring literally says "The first exporter targets promptfoo." Runners that aren't promptfoo currently have no first-class path.
Task
Add a plain-JSON exporter that emits the golden (confirmed) suite as the internal case model — id, input, assertions, expected_output, trust_tier, set_role. Wire it into --format json.
Acceptance criteria
Pointers
src/goldset/export.py
src/goldset/cli.py (the --format choices for the export subcommand)
Notes for contributors
Keep it in the dependency-light core (stdlib json). Follow the existing fail-closed stance in to_promptfoo — a golden export must never silently emit an empty or unconfirmed set.
Context
export.pyand the CLI hardcode promptfoo as the only export target —cli.pyuseschoices=["promptfoo"], and the module docstring literally says "The first exporter targets promptfoo." Runners that aren't promptfoo currently have no first-class path.Task
Add a plain-JSON exporter that emits the golden (confirmed) suite as the internal case model —
id,input,assertions,expected_output,trust_tier,set_role. Wire it into--format json.Acceptance criteria
NothingGoldenErrorwhen nothing is confirmed;--include-candidatesmarks the artifact non-golden.tool_called/final_state) are preserved, not dropped.tests/test_export.py; README "Export targets" section updated.Pointers
src/goldset/export.pysrc/goldset/cli.py(the--formatchoices for theexportsubcommand)Notes for contributors
Keep it in the dependency-light core (stdlib
json). Follow the existing fail-closed stance into_promptfoo— a golden export must never silently emit an empty or unconfirmed set.