personal memory agent

feat(convey): generate native-client OpenAPI 3.1 contract with staleness + breaking guards master

Add code-adjacent opt-in fragments for link, observer, and push, assembled by a journal-free generator into docs/openapi/convey-clients.json with 14 operations across 13 paths. The explicit three-module fragment list keeps R0 dashboard and internal routes structurally out of the contract. Define the shared {error, reason_code, detail} Error schema with reason_code enum generated from solstone/convey/reasons.py, plus per-operation x-reason-codes as the breaking-governed referenced set distinct from the staleness-governed global enum. Model the Callosum SSE baseline as {tract, event, ts, ...open} and render the non-exhaustive tract/event registry from one CALLOSUM_REGISTRY constant into both the artifact and a generated docs/CONVEY.md block, while fixing the stale SSE route/auth prose. Cover segments protocol-version oneOf(envelope|bare-array) and document callosumStream operation-level versus in-stream SSE error-frame reason-code sets, including auth_key_invalid as pre-stream-only. Wire three checks: staleness via build_openapi_contract.py --check, breaking tripwire via check_openapi_contract.py, and conformance coverage in tests/test_openapi_contract.py. check-openapi runs in install-checks/make ci, and each failure path prints its exact regenerate or re-pin command. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>