Typed changes

How Havoptic splits AI coding tool releases into typed change items (feature, fix, breaking, deprecation, security…) with verbatim evidence and confidence, and what changes_available: false means for legacy releases.

Each release detected since 2026-10-19 is split into change items by an extraction step that must quote the vendor notes. Releases from before that date keep their notes and summary but have no typed items.

A change item

{
  "id": "[email protected]#c3",
  "release_id": "claude-code-2.1.302",
  "kind": "breaking",
  "title": "Hooks receive tool input as JSON on stdin",
  "description": "Hook scripts that parsed arguments must read stdin instead.",
  "areas": ["hooks"],
  "evidence": "Hooks now receive tool input as JSON on stdin instead of as arguments.",
  "confidence": 0.93
}
FieldMeaning
id{tool}@{version}#c{n}, stable for a release.
kindOne of the kinds below.
title, descriptionNeutral wording written by Havoptic (not marketing copy).
evidenceAn exact quote from the raw release notes. Items whose quote cannot be found in the notes are dropped. Cite this, not the title.
confidence0 to 1. Items below 0.6 are dropped; breaking and security items need 0.75. Webhook change.* events fire at 0.85 and above.
areasFree-form product areas (e.g. mcp, hooks, auth), when stated.

Kinds

KindUse it for
breakingYou must change something to keep working after upgrading.
securityA vulnerability fix or security-relevant behavior change.
featureNew capability.
modelModel added, removed or changed (defaults, versions).
deprecationStill works, scheduled to go away.
removalGone in this release.
pricingPricing, quota or plan changes.
policyTerms, data handling or usage-policy changes.
improvementBetter behavior of something existing.
performanceFaster or lighter.
fixBug fix.

Filter with kind=breaking,security on /v1/changes, or the shortcuts breaking=true / security=true. An unknown kind returns 400 invalid_parameter.

Fields on an enriched release

Legacy releases and changes_available

Typed extraction is forward-only since 2026-10-19 (intelligence_since in GET /v1/status). Releases first detected before then are *legacy*:

Range endpoints (/v1/tools/{id}/upgrade, /v1/digest, MCP get_upgrade_notes and whats_changed_since) include legacy releases in their counts but only return typed items from enriched ones. They report meta.enriched_release_count and meta.legacy_release_count, and markdown output ends with a note when legacy gaps exist. For a legacy release, read its notes with GET /v1/releases/{id}?expand=notes.

Developer docs · API reference · OpenAPI · Havoptic