Status: accepted, 2026-09-23 (OPIK-8485)
Every token the server puts into a host’s context has to pay for itself. This is the main rule, and other decisions follow from it.
fields=[…] instead of the record.Context is the host’s scarcest resource. A tool that answers with more than was needed costs the user money and crowds out their own work.
tests/conformance/test_tool_inventory.py: the surface budget and its
history comment, and the initialize instructions budget, which loads even
when a host defers the tool list.read_list/size.py): its format in
tests/read_list/test_link_shape.py, its presence on reads in
tests/read_list/test_read_tool.py and on lists in
tests/read_list/test_list_tool.py.tests/conformance/test_tool_annotations.py: checks each description and
the instructions against the host’s cut (DESCRIPTION_LIMIT), and pins the
ones over it as strict expected failures.write loses its last three operations
and the name of a fourth,
and read, read_skill and the instructions lose their tails. Pinned as
strict expected failures until they are rewritten (OPIK-8485 follow-up).
Titles and hints added to all tools, 734 bytes on tools/list.SURFACE_BUDGET_BYTES and
INSTRUCTIONS_BUDGET_BYTES in tests/conformance/test_tool_inventory.py,
DESCRIPTION_LIMIT in tests/conformance/test_tool_annotations.py. The
surface headroom has fallen to about 505 bytes since 2026-09-11 (OPIK-8496).N tok on their first
line (OPIK-8496).