# Aune Public Contract Governance

Aune's public agent surfaces are treated as contracts. Internal releases can move quickly, but public request schemas, response semantics, MCP tools, A2A metadata, and examples should evolve deliberately.

## Current Public Contracts

- Public Requests API: `public_requests_api_v1`
- Public Bookings API: `public_bookings_api_v1`
- MCP tools: `aune_mcp_v3` using MCP protocol `2025-06-18`
- A2A Agent Card: `1.2.0` using JSON-RPC protocol `1.0`
- Aune Agent Skill: `2.0.0`

## Evolution Rules

- Prefer additive changes: new optional fields, new tools, new enum values that clients can ignore, and new documentation examples.
- Treat removed fields, renamed fields, changed required fields, changed response semantics, and stricter validation as breaking changes.
- Do not change the meaning of `booking_created`, `availability_checked`, `provider_selected`, `booking.status`, option expiry, terms binding, idempotency, or `safe_next_step` without a new contract version.
- Keep old routes and old contract versions available through a deprecation window when a breaking change is unavoidable.
- Update examples, OpenAPI, MCP schemas, A2A Agent Card skills, `llms-full.txt`, and the Aune agent skill in the same change as contract behavior.

## Required Checks Before Publishing

- OpenAPI examples validate against the same booking and request schemas used by production code.
- MCP `tools/list` exposes schemas that match the public booking and request contracts.
- MCP includes postcode-only booking search before personal-data booking confirmation.
- MCP `tools/call` protects booking confirmation/status and request writes with the same token rules as REST.
- Search returns only options backed by a direct-booking-enabled provider offering and concrete slot.
- Confirmation revalidates provider, price, slot, terms, consent, and idempotency and prevents overlapping confirmed provider bookings.
- Confirmation truth is stored durably and status lookup never infers a booking from notification delivery alone.
- REST and MCP create paths reject missing or false `user_consent_confirmed` before persistence.
- MCP draft output does not echo customer email, phone, or full contact PII.
- A2A Agent Card advertises only endpoints that exist and respond.
- `llms.txt`, `llms-full.txt`, and `/ai/*.md` link to the current machine-readable endpoints.
- Verification scripts exercise discovery, REST, MCP, A2A, and redacted status lookup.
- A docs-only agent self-test can discover the contracts from the public site and create a valid local test request without private context.

## Source Of Truth

- Use Aune: https://aune-homepage-chat.vercel.app/ai/use-aune.md
- Examples: https://aune-homepage-chat.vercel.app/ai/examples.md
- Evals: https://aune-homepage-chat.vercel.app/ai/evals.md
- OpenAPI: https://aune-homepage-chat.vercel.app/openapi.json
- Live capabilities: https://aune-homepage-chat.vercel.app/v1/capabilities
- Full AI docs: https://aune-homepage-chat.vercel.app/llms-full.txt
- MCP endpoint: https://aune-homepage-chat.vercel.app/mcp
- A2A Agent Card: https://aune-homepage-chat.vercel.app/.well-known/agent-card.json
