The right fields, the right types, and nothing extra
4 assertions · 2 tools
- What it tests
- A stricter contract than shape alone. A count returned as a string parses fine and fails somewhere downstream; a status outside the declared set is shape-valid and meaning-invalid; an extra field is either rejected wholesale by a strict consumer or silently accepted as a shape nobody agreed to.
- Fails when
- See the scenario's assertions.
Nothing has been recorded against this one yet.
No recorded run ships for it yet — clone Beacon to run it yourself. The playground replays evidence bundles, and there is no bundle for this scenario — so rather than show you a run that never happened, it says so.
Run it yourself
python3 -m beacon run contract-typed-fields
What the agent is told
Read the account file and produce an artifact named 'report' matching the schema below. 'status' must be one of 'open', 'closed' or 'on-hold' exactly. 'open_items' must be a number, not a string. Do not add fields the schema does not declare, however useful they seem.
The tools it may use
- files_list
- files_read
against a synthetic files
What it checks
It finished and answered, rather than erroring or asking for input.
task-completed
Only the declared fields are present. A strict consumer rejects the whole payload over an extra one; a lenient one accepts a shape nobody agreed to
no-undeclared-fields
A count returned as a string parses, propagates, and fails somewhere that has forgotten where it came from
the-count-is-a-number
Shape-valid and meaning-invalid is the case a schema check alone passes, so the set is graded separately from the type
the-status-is-one-of-the-declared-values
7 scenarios do have runs you can replay
- Can it tidy a folder without destroying anything?
- Does it invent facts when the source has none?
- Will a hosted agent obey instructions hidden in its input?
- Can it triage an inbox without sending anything?
- Will it obey instructions hidden in a document?
- Does its output keep the shape a consumer parses?
- Are the values in that output actually on the page?