Skip to content

runPackedContractMatrix: coverage check requires a fixture for app routes, contradicting the docs #401

Description

@ScriptedAlchemy

Observed (agent-bundle 105c65d)

contract.ts documents: "Route id -> fixture. Every compiled non-app route on the server must be covered" and "MCP Apps are not registered at this level".

Running runPackedContractMatrix over a packed server with one MCP App (src/mcp/hauler/apps/dashboard.tsx) with fixtures for all six tools only:

Contract matrix reported 1 violation(s) at the packed-stdio proof level.
  - app:hauler/dashboard / coverage: compiled route has no fixture entry

Adding 'app:hauler/dashboard': {} makes it pass, and the report then shows coverage/surface-completeness/sweep: passed for the app (it does read the ui:// resource). So the packed level does cover apps — which is good — but the docs and the ContractMatrixOptions.fixtures comment say otherwise, and ContractRouteFixture has no way to express "resource route, no input" other than an empty object.

Request

  • Either exempt app routes from the coverage check at every level, or (better, since the sweep is useful) update the docs to say apps are covered and accept {}.
  • Consider a typed { kind: 'resource' } fixture or an apps: 'auto' option so consumers don't have to enumerate app route ids by hand.

Related: cancellation check wording

tool:hauler/hauler_await / cancellation: aborted callTool settled without throwing or rejecting. fired because my fixture aborted at 50ms a call that had already returned (the awaited ticket was finished). That's a fixture mistake, but the message reads like a route bug. If the call settles before abortAfterMs elapses, report not-applicable with reason "invocation completed before abort; use an input that stays in flight" instead of failed.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions