Skip to content

Make capabilities real: declaration and runtime fail-fast #26

Description

@aniketwattamwar

Problem

capabilities is a dead field. The runtime validates it is an object and then ignores it. Nothing is ever declared and nothing ever reads it.

Concrete cost: a manifest with tool_usage graders run against an agent that cannot report tool calls fails with "No tool_calls present" on every step. That is indistinguishable from an agent that legitimately used no tools — one is a broken integration, the other a real test failure, and we report them identically.

Proposal

Presence of a key means supported; the value is an options object.

Capability Runtime behaviour when absent
tool_calls Fail fast if the manifest has tool_usage graders
evaluation_context Fail fast if a grader targets that field
usage Report audit usage as unavailable, not zero
reset Warn that scenario isolation is not guaranteed
multi_turn Warn on multi-step scenarios

Unknown keys MUST be ignored — that is what makes minor versions additive. Vendor extensions use x-<vendor>.<name>.

Acceptance criteria

  • SDK declares capabilities from registered hooks
  • Runtime fails before running when a manifest needs a missing capability
  • Error message names the capability and the offending grader

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

protocolWire format / spec changesruntimeecp-runtime and the CLI

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions