{
 "asof": "2026-09-16",
 "_schema": "See validate_milestones.py for the enforced rules. Plotted rows need a dated first-party source; a feature with no published date belongs in 'undated' and is listed, not plotted.",
 "families": [
  {
   "id": "mcp",
   "label": "MCP client",
   "definition": "The harness can connect to and use MCP servers as a client. Distinct from exposing itself; a row for one never justifies the other."
  },
  {
   "id": "mcpsrv",
   "label": "Exposes itself over MCP",
   "definition": "Other tools can drive this harness as an MCP server (the harness is the server, not the client)."
  },
  {
   "id": "subagents",
   "label": "Subagents (in-session)",
   "definition": "Co-work inside one session: the harness spawns and manages helper agents within its own loop. Not orchestration."
  },
  {
   "id": "orchestrate",
   "label": "Multi-agent orchestration",
   "definition": "Co-work across agents: teams, swarms, fleets or workboards where several agents are separately addressable first-class objects with visible handoffs and independent runs."
  },
  {
   "id": "computer",
   "label": "Browser & screen control",
   "definition": "A first-party surface that drives a browser (extension, automation, driver) or a screen (computer use). The row notes must say which, and its maturity, because the two are not the same claim."
  },
  {
   "id": "messaging",
   "label": "Chat-platform presence",
   "definition": "First-party presence in a chat platform, such that the harness can be driven from there (Slack, Discord, Telegram, Teams, and similar)."
  },
  {
   "id": "mediagen",
   "label": "Media generation",
   "definition": "First-party generation of images, audio, video or music as a tool of the harness itself, not a model capability reachable only by hand."
  }
 ],
 "rows": [
  {
   "harness": "hermes",
   "feature": "computer",
   "milestone": "stable",
   "date": "2026-03-12",
   "source_url": "https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.12",
   "source_kind": "release_feed",
   "confidence": "medium",
   "evidence_date": "2026-09-16",
   "claim": "Hermes' earliest published release already ships a browser tool whose backend is a local headless Chromium instance (no hosted browser service), alongside console/error capture, annotated screenshots and auto-recording.",
   "verify_token": "Local browser backend \u2014 zero-cost headless Chromium",
   "notes": "Floor, not a first-ever: the earliest published release documents the browser backend, so earlier internal history is possible (the wording implies a hosted backend existed before). Milestone classified stable by release stage. Browser control, not screen control - only the former is claimed here."
  },
  {
   "harness": "hermes",
   "feature": "computer",
   "milestone": "expansion",
   "date": "2026-03-17",
   "source_url": "https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.17",
   "source_kind": "release_feed",
   "confidence": "high",
   "evidence_date": "2026-09-16",
   "claim": "Browser control grows beyond the bundled headless backend: /browser connect attaches the browser tools to a live Chrome instance over the DevTools Protocol so the agent can debug and interact with pages the user already has open.",
   "verify_token": "Attach browser tools to a live Chrome instance through Chrome DevTools Protocol",
   "notes": "Scope growth on the 2026-03-12 browser row, hence expansion."
  },
  {
   "harness": "hermes",
   "feature": "mcp",
   "milestone": "stable",
   "date": "2026-03-12",
   "source_url": "https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.12",
   "source_kind": "release_feed",
   "confidence": "high",
   "evidence_date": "2026-09-16",
   "claim": "The same first release documents a native MCP client with stdio and HTTP transports.",
   "verify_token": "Native MCP support with stdio and HTTP transports"
  },
  {
   "harness": "hermes",
   "feature": "mcpsrv",
   "milestone": "stable",
   "date": "2026-03-30",
   "source_url": "https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.30",
   "source_kind": "release_feed",
   "confidence": "high",
   "evidence_date": "2026-09-16",
   "claim": "The multi-instance release adds MCP server mode: hermes mcp serve exposes conversations, sessions and attachments to any MCP-compatible client over stdio or Streamable HTTP - Hermes is the server, not the client.",
   "verify_token": "hermes mcp serve exposes conversations, sessions, and attachments to MCP clients",
   "notes": "Serving direction only; the 3.12/3.23 client-side MCP rows are a different claim and are not cited here."
  },
  {
   "harness": "hermes",
   "feature": "mediagen",
   "milestone": "stable",
   "date": "2026-03-24",
   "source_url": "https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.23",
   "source_kind": "release_feed",
   "confidence": "medium",
   "evidence_date": "2026-09-16",
   "claim": "Hermes' earliest image-generation tooling arrives as a bundled Meme-generation skill built on a Pillow image generator.",
   "verify_token": "Meme-generation \u2014 Image generator with Pillow",
   "notes": "Pillow-based compositing, not a diffusion model - a reviewer may argue a meme generator is not 'media generation'. The earliest model-backed image generation in the feed is the 2026-04-16 tool gateway and the 2026-04-23 xAI image provider, both of which describe image generation as already existing, so they cannot be a first appearance."
  },
  {
   "harness": "openclaw1",
   "feature": "mediagen",
   "milestone": "stable",
   "date": "2026-04-06",
   "source_url": "https://github.com/openclaw/openclaw/releases/tag/v2026.4.5",
   "source_kind": "repo_tag",
   "confidence": "high",
   "evidence_date": "2026-09-16",
   "claim": "The v2026.4.5 release notes add built-in video and music generation tools.",
   "verify_token": "add the built-in music_generate tool with bundled Google",
   "notes": "Two separate tools shipped in this release (video_generate and music_generate); this date is the first v1 release that ships media generation at all."
  },
  {
   "harness": "pi",
   "feature": "mediagen",
   "milestone": "stable",
   "date": "2026-05-16",
   "source_url": "https://github.com/earendil-works/pi/releases/tag/v0.74.1",
   "source_kind": "release_feed",
   "confidence": "high",
   "evidence_date": "2026-09-16",
   "claim": "Pi ships built-in image generation: image-generation APIs, generated image-model metadata and OpenRouter image generation support inherited from pi-ai.",
   "verify_token": "Added image generation APIs, generated image model metadata, and built-in OpenRouter image generation support",
   "notes": "An example extension (antigravity-image-gen.ts, 2026-01-22) predates this, so the row claims the first built-in support rather than the first image generation of any kind."
  },
  {
   "harness": "hermes",
   "feature": "messaging",
   "milestone": "stable",
   "date": "2026-03-12",
   "source_url": "https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.12",
   "source_kind": "release_feed",
   "confidence": "high",
   "evidence_date": "2026-09-16",
   "claim": "Hermes' first public release ships a multi-platform messaging gateway (Telegram, Discord, Slack, WhatsApp, Signal, Email, Home Assistant).",
   "verify_token": "Multi-Platform Messaging Gateway",
   "notes": "Earliest published release, so this is a floor, not a claim that nothing came before it."
  },
  {
   "harness": "hermes",
   "feature": "messaging",
   "milestone": "expansion",
   "date": "2026-04-13",
   "source_url": "https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.13",
   "source_kind": "release_feed",
   "confidence": "high",
   "evidence_date": "2026-09-16",
   "claim": "Hermes' messaging gateway grows to 16 platforms out of the box, with BlueBubbles (iMessage) and WeChat joining Telegram, Discord, Slack, WhatsApp, Signal and the rest.",
   "verify_token": "Hermes now runs on 16 messaging platforms out of the box",
   "notes": "Expansion of the 2026-03-12 messaging row (which recorded the launch set)."
  },
  {
   "harness": "opencode",
   "feature": "messaging",
   "milestone": "stable",
   "date": "2025-10-14",
   "source_url": "https://github.com/anomalyco/opencode/releases/tag/v0.15.3",
   "source_kind": "release_feed",
   "confidence": "medium",
   "evidence_date": "2026-09-16",
   "claim": "OpenCode adds a first-party Slack integration package built on the Bolt framework, providing Slack bot functionality.",
   "verify_token": "Added new Slack integration package with Bolt framework for Slack bot functionality",
   "notes": "The note documents a first-party Slack bot package but does not spell out which agent actions are reachable from Slack, so medium. Later opencode releases do not mention Slack again in the feed."
  },
  {
   "harness": "claude",
   "feature": "orchestrate",
   "milestone": "stable",
   "date": "2026-02-05",
   "source_url": "https://github.com/anthropics/claude-code/releases/tag/v2.1.32",
   "source_kind": "release_feed",
   "confidence": "medium",
   "evidence_date": "2026-09-16",
   "claim": "Claude Code adds a research-preview agent-teams feature for multi-agent collaboration, gated behind CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1.",
   "verify_token": "research preview agent teams feature for multi-agent collaboration",
   "notes": "The release itself is a stable release, so the row is classified stable by release stage; the feature is a flag-gated research preview, which is why confidence is medium. A reviewer may prefer the preview label."
  },
  {
   "harness": "gemini",
   "feature": "orchestrate",
   "milestone": "stable",
   "date": "2026-01-14",
   "source_url": "https://github.com/google-gemini/gemini-cli/releases/tag/v0.24.0",
   "source_kind": "release_feed",
   "confidence": "medium",
   "evidence_date": "2026-09-16",
   "claim": "Gemini CLI's agent registry gains remote agents and multi-agent TOML definitions, so several agents become separately addressable first-class entries.",
   "verify_token": "add support for remote agents and multi-agent TOML files",
   "notes": "Judgement call: this is agent definitions plus a registry rather than a team UI, so medium. Preview/nightly channels carried the same entry from 2025-12-31; v0.24.0 is the first stable release."
  },
  {
   "harness": "hermes",
   "feature": "orchestrate",
   "milestone": "stable",
   "date": "2026-04-23",
   "source_url": "https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.23",
   "source_kind": "release_feed",
   "confidence": "medium",
   "evidence_date": "2026-09-16",
   "claim": "Subagents gain an explicit orchestrator role that can spawn its own workers, with a configurable spawn depth.",
   "verify_token": "role that can spawn their own workers",
   "notes": "Classified orchestration rather than subagents because the role can recursively spawn workers; a reviewer may reasonably disagree, which is why the row is medium."
  },
  {
   "harness": "hermes",
   "feature": "orchestrate",
   "milestone": "expansion",
   "date": "2026-08-31",
   "source_url": "https://github.com/NousResearch/hermes-agent/releases/tag/v2026.8.31",
   "source_kind": "release_feed",
   "confidence": "high",
   "evidence_date": "2026-09-16",
   "claim": "Multi-agent control expands from a spawn depth setting into an addressable multi-bot room you talk to in one place, plus live steering of running subagents (list, correct mid-flight, stop and keep the partial result).",
   "verify_token": "now it looks like a chat app full of coworkers",
   "notes": "Scope growth on top of the 2026-04-23 orchestrator role, so this is classified as expansion rather than a second first-appearance."
  },
  {
   "harness": "gemini",
   "feature": "subagents",
   "milestone": "stable",
   "date": "2025-08-12",
   "source_url": "https://github.com/google-gemini/gemini-cli/releases/tag/v0.1.19",
   "source_kind": "release_feed",
   "confidence": "high",
   "evidence_date": "2026-09-16",
   "claim": "Gemini CLI introduces its foundational subagent architecture.",
   "verify_token": "Introduce Foundational Subagent Architecture by abhipatel12",
   "notes": "The line is a commit title inside the release's generated changelog. The same entry is carried by nightly releases from 2025-08-08; v0.1.19 is the first stable version release to carry it, and the date used is that release's."
  },
  {
   "harness": "hermes",
   "feature": "subagents",
   "milestone": "stable",
   "date": "2026-03-12",
   "source_url": "https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.12",
   "source_kind": "release_feed",
   "confidence": "high",
   "evidence_date": "2026-09-16",
   "claim": "The first release already shares an iteration budget across parent and subagent delegation.",
   "verify_token": "Shared iteration budget across parent + subagent delegation"
  },
  {
   "harness": "pi",
   "feature": "subagents",
   "milestone": "stable",
   "date": "2025-12-19",
   "source_url": "https://github.com/earendil-works/pi/releases/tag/v0.24.0",
   "source_kind": "release_feed",
   "confidence": "medium",
   "evidence_date": "2026-09-16",
   "claim": "Pi ships a subagent example: a custom tool that spawns and orchestrates sub-agents with isolated context windows - scout, planner, reviewer and worker agents plus workflow commands.",
   "verify_token": "Added comprehensive custom tool example for spawning and orchestrating sub-agents",
   "notes": "Shipped as an example extension on pi's custom-tool API rather than a built-in primitive, and the source calls it an orchestration example - a reviewer may classify it under orchestration instead of in-session subagents, hence medium."
  }
 ],
 "undated": [
  {
   "harness": "claude",
   "feature": "computer",
   "claim": "Claude Code documents connecting it to Chrome to drive a browser (test web apps, read console logs, automate form filling). The page carries no published date, so no first-appearance date is claimed here.",
   "source_url": "https://code.claude.com/docs/en/chrome",
   "source_kind": "docs_page",
   "confidence": "medium",
   "evidence_date": "2026-09-16",
   "verify_token": "Connect Claude Code to your Chrome browser to test web apps",
   "notes": "A dated changelog exists, but its served window only reaches back to May 2026 - any date taken from it would be 'earliest in window', not a first appearance, so this stays undated on purpose."
  },
  {
   "harness": "claude",
   "feature": "mcpsrv",
   "claim": "Claude Code's own docs document running it as an MCP server (`claude mcp serve`) with a pastable MCP client config.",
   "source_url": "https://code.claude.com/docs/en/mcp",
   "source_kind": "docs_page",
   "confidence": "medium",
   "evidence_date": "2026-09-16",
   "verify_token": "mcp serve",
   "notes": "Documented surface with no published date on the page or in the changelog entry we could find"
  },
  {
   "harness": "openclaw2",
   "feature": "mcpsrv",
   "claim": "OpenClaw documents serving itself over MCP via its CLI.",
   "source_url": "https://docs.openclaw.ai/cli/mcp/serve",
   "source_kind": "docs_page",
   "confidence": "medium",
   "evidence_date": "2026-09-16",
   "verify_token": "mcp",
   "notes": "Docs page is undated; the 1.x-vs-2.0 split cannot be resolved from it"
  }
 ]
}