An expenses assistant reads a tool that returns a supplier record. A platform team renamed the result field holding the supplier's tax identifier, and since that release reviewers have logged answers stating that no tax identifier is held for suppliers that plainly have one. The tool handler logs the raw payload it returns. A logged payload and the tool's declared result contract are reproduced below. Which diagnosis fits, and what is the correct first correction?
declared result contract: { "supplier": "string", "tax_id": "string" }
logged payload: { "supplier": "Bramley Ltd", "tax_ref": "GB4471902" }- AThe model misread a correct payload, so the system prompt should instruct it to check every field of a supplier record before stating that a value is absent from the record.
- BThe payload no longer matches the declared result contract, so the handler should validate the payload against that contract and fail the call loudly instead of returning an unrecognised shape. Correct
- CThe record was too large for the working context, so the handler should trim the payload to the fields the assistant reasons over before the result is appended to the conversation.
- DThe upstream release was faulty, so the assistant repository should pin the previous version of the supplier service and leave the tool result contract exactly as it stands today.
Why A is wrong: Tempting because instructions can improve careful reading, but the declared field genuinely is not in the payload, so no amount of instruction can recover a value the model was never sent.
Why B is correct: Correct: a schema mismatch at the integration boundary is the recorded cause, and validating the result turns a silent renamed field into an explicit failure the team can see and fix.
Why C is wrong: Tempting because pruning oversized tool output is a genuine technique, but the logged payload is two fields long and pruning would discard the renamed value rather than surface the mismatch.
Why D is wrong: Tempting because pinning does stop the bleeding for one consumer, but it leaves the handler unable to detect the next shape change and defers rather than removes the silent failure.