# Changelog

All notable changes to the BoltProof API, MCP server, and rule library.
Format: [Keep a Changelog](https://keepachangelog.com/). Versioning: SemVer.

## [0.1.0] — unreleased

### Added
- **Accounts & sessions** — `POST /v1/signup {email,password}`, `/v1/auth/login|logout|me`,
  `/v1/auth/keys[/regenerate]`. Keys belong to an account; the plan lives on the
  account. `/account` is auth-gated (no dev-key fallback).
- **Email verification** — signup sends a verification email via Resend from
  `noreply@boltproof.dev`; the API key activates only after the link is opened
  (`POST /v1/auth/verify`, `/v1/auth/resend-verification`). Toggle:
  `BOLTPROOF_REQUIRE_VERIFIED` (default on).
- **Payments (Paddle)** — `/account` → Upgrade creates a Paddle **transaction**
  and opens the Paddle.js overlay (`GET /v1/paddle/config` serves the public
  client token). Live-ready: `PADDLE_ENV=live`.
- **A2A (Agent2Agent) surface** — protocol v1.0. Agent card at
  `/.well-known/agent-card.json`; JSON-RPC endpoint at `POST /a2a` with
  `SendMessage`, `SendStreamingMessage` (SSE), `GetTask`, `ListTasks`,
  `CancelTask`, `GetExtendedAgentCard`. One A2A skill per approved rule plus a
  full-library scan skill.
- **`GET /v1/plans`** — machine-readable plans (checks/month, overage, seats,
  features, price), served from the same `PLANS` dict as the landing page.
- **`POST /v1/signup`** — self-service onboarding: email → free API key.
- **`GET /v1/status`** + `/status` page — status and deprecation data.
- **`/docs`** — full API/MCP/A2A reference. **`/changelog`** — this file.
- **MCP account tools** — `get_account_status`, `list_proof_history`,
  `get_plans`, `get_billing_portal_link`, `mint_api_key`.

### Changed
- Key-issuing endpoints (`/v1/keys`, `/v1/keys/regenerate`) now require a real
  API key; the `BOLTPROOF_DEV_KEY` can no longer mint production keys.
- `/v1/account` returns the configured Paddle billing-portal URL.

### Security
- Documented deprecation runway (≥ 90 days) and `Sunset` header policy.

### Rules
- Trial extension boundary, proration cap, refund cap, proration on actual
  paid, deferred proration, preview=commit, CBA_ADJ date anchoring, epoch-zero
  invoices, subscription start date, trial extension fresh — **awaiting human
  sign-off** before being served by default (`core.approved_rules`).
