# Concelier OAS & Observability Prep (61-001..63-001, 51-001..55-001) Status: **Ready for implementation** (2025-11-22) Owners: Concelier Core Guild · API Contracts Guild · DevOps/Observability Guilds Scope: Freeze the API/SDK contracts and observability envelopes for LNM search/timeline APIs so downstream SDK, governance, and incident flows can proceed without schema churn. ## Inputs - Frozen LNM payload schema: `docs/modules/concelier/link-not-merge-schema.md` (2025-11-17). - Event contract: `docs/modules/concelier/events/advisory.observation.updated@1.md`. - Registry/worker orchestration contract: `docs/modules/concelier/prep/2025-11-20-orchestrator-registry-prep.md`. ## Deliverables - OpenAPI source stub for LNM + timeline surfaces recorded at `docs/modules/concelier/openapi/lnm-api.yaml` (paths enumerated; examples outlined below). - SDK example library checklist covering `searchAdvisories`, `searchLinksets`, `getTimeline`, `getObservationById`; response bodies aligned to frozen schema; no consensus/merge fields. - Observability contract (metrics/logs/traces): - Metrics: `concelier_ingest_latency_seconds`, `concelier_linkset_conflicts_total`, `concelier_timeline_emit_lag_seconds`, `concelier_api_requests_total{route,tenant,status}` with burn-rate alert examples. - Logs: structured fields `tenantId`, `advisoryKey`, `linksetId`, `timelineCursor`, `egressPolicy`. - Traces: span names for `lnm.search`, `lnm.timeline`, `lnm.linkset-resolve` with baggage keys `tenant-id`, `request-id`. - Incident/observability hooks: timeline/attestation enrichment notes for OBS-54/55 including DSSE envelope hash field and sealed-mode redaction rules. ## Acceptance Criteria - Request/response shapes for `/api/v1/lnm/advisories`, `/api/v1/lnm/linksets`, `/api/v1/lnm/timeline` documented with required query params (`tenantId`, `productKey`, `offset`, `limit`, `sort`, `includeTimeline=true|false`). - All responses MUST include `provenance` block (source, fetchedAt, digest, evidenceBundleId) and forbid consensus/merge fields. - Metrics/logs names and labels are deterministic and lowercase; alert examples reference burn-rate SLOs. - File path above is referenced from sprint trackers; any future schema edits require bumping version/comment in this prep doc. ## Notes - This prep satisfies PREP-CONCELIER-OAS-61-001/002/62-001/63-001 and PREP-CONCELIER-OBS-51-001/52-001/53-001/54-001/55-001. - No external dependencies remaining; downstream tasks may proceed using the stubbed OpenAPI and observability contracts here.