All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Planning milestones vs Hex releases
This changelog tracks published Hex releases using Semantic Versioning headings like ## 0.10.0.
Separately, maintainers track development tranches as planning milestones in .planning/MILESTONES.md.
For v0.1–v0.9 milestone history, see docs/HISTORY.md.
1.0.0 (2026-05-26)
Bug Fixes
- hex: stop packaging missing code of conduct file (a6ab21e)
0.10.0 (2026-05-26)
Features
- 01-01: define AlertProcessor skeleton interface (b7e3fa5)
- 01-01: extract trace_id in metrics plug (a29f5d6)
- 01-01: extract trace_id in Oban metrics (48ac7bb)
- 01-01: implement Incident schema (040849f)
- 01-01: implement Scoria Telemetry Adapter (0d54e6a)
- 01-01: implement TimelineEntry schema (f4bd219)
- 01-01: implement ToolAudit schema (9edfd91)
- 01-01: implement webhook plug (a497ffd)
- 01-02: create mix parapet.gen.scoria generator task and templates (256d1cb)
- 01-02: implement custom prometheus formatter with exemplars (918d268)
- 01-02: implement Evidence context boundary (685ea9a)
- 01-02: implement ExemplarStore to hold recent trace IDs (0f4f32d)
- 01-02: implement telemetry handlers for capturing trace IDs (b55c855)
- 01-02: implement webhook processor with firing alert correlation (4401fb3)
- 01-02: wire scoria generator into parapet installer (d5129b3)
- 01-03: add trace_id to incident schema and migration (a2330a9)
- 01-03: implement incident auto-resolution via webhook (4401fb3)
- 01-03: implement spine generator (6e15a02)
- 01-03: render dynamic trace links in operator ui (6a603e2)
- 02-01: add archive indexes upgrade generator (2c6cbcc)
- 02-01: add archive-friendly spine indexes (acda0ef)
- 02-01: create SystemEvent schema and migrations (3d1f5ae)
- 02-01: define the workbench derivation contract and transaction seam (05a80ea)
- 02-01: implement built-in GC Pruner (ae333ef)
- 02-01: implement Parapet.Runbook DSL and Incident schema mapping (4294f88)
- 02-01: implement Provider behaviour and Resolvable protocol (aabe465)
- 02-01: implement queue/detail queries and first-class audited commands (22177f6)
- 02-01: implement Rulestead integration telemetry adapter (3b2c932)
- 02-01: lock the audited operator command contract (fabd034)
- 02-01: make generator task rely on updated SLO registry (3fd42de)
- 02-01: update SLO registry aggregation to merge legacy and providers (a1f8e45)
- 02-02: add Rulestead Metric Definitions (a0ccfa8)
- 02-02: correlate SystemEvents to new Incidents (8b1dcc3)
- 02-02: implement and test parapet.gen.ui generator (305296b)
- 02-02: implement evidence archiver (a63201f)
- 02-02: implement interactive runbooks in Operator UI (e8fa1e5)
- 02-02: implement Scoria metrics pipeline (1ad9f68)
- 02-02: implement ScoriaEval SLO Struct (940534b)
- 02-02: wire Scoria metrics in integration setup (a198be5)
- 02-03: correlate rulestead flag changes in operator UI (e75f718)
- 02-03: implement archive oban worker (eeb047e)
- 02-03: implement one-click mitigation dispatch via Operator UI (03892d5)
- 02-03: implement parapet archive mix task (8e68459)
- 02-04: finalize UI templates and test alignment with operator API (83dc210)
- 03-01: add bounded incident queue paging (315fa87)
- 03-01: align incident index generators with queue paging (2b1009f)
- 03-01: implement Oban Worker and Timeline Audit for notifications (7a38015)
- 03-01: implement Threadline audit telemetry handler (8167e9d)
- 03-01: integrate broadcast into alert processor (f79b662)
- 03-01: project bounded queue row payloads (f41fb44)
- 03-02: add calm queue affordances to generated ui (a8247a5)
- 03-02: implement Slack notifier (9b218af)
- 03-02: stream bounded queue pages in generated liveview (e2dd31f)
- 03-02: update Evidence API to support audit_mode conditional and telemetry dispatch (2550ffc)
- 03-03: add operator ui performance proof lane (9d95ddb)
- 03-03: implement MS Teams notifier adapter (d8e7b9d)
- 03-03: implement Parapet.Deploy.mark/1 (fe21956)
- 03-03: instrument bounded queue page telemetry (b17b306)
- 03-03: update install generator for deploy hook (08041ed)
- 03-04: implement parapet doctor mix task (49419ee)
- 03-notifications-01: add req dependency and Notifier behaviour (01b2976)
- 04-01: add audited escalation operator commands (2edd1c4)
- 04-01: honor durable escalation suppression in worker (7744b34)
- 04-01: implement ActionItem Evidence API (6865123)
- 04-01: implement ActionItem schema (9e8314f)
- 04-01: update generator with ActionItem table (b7c0b1c)
- 04-02: derive escalation workbench summary (a1f464f)
- 04-02: expose escalation-aware incident detail payload (421a6ea)
- 04-02: implement handling for scoria workflow staleness and expiration telemetry (8f632dc)
- 04-02: implement status checks and resumed telemetry handling (2dd8a75)
- 04-03: integrate ActionItems into LiveView (f879b8b)
- 04-03: render escalation-aware operator components (a334115)
- 04-03: wire bounded escalation controls in generated liveview (c8355c3)
- 06-01: enrich incidents with durable triage evidence (b19767c)
- 06-02: derive operator triage from durable evidence (d3c8438)
- 06-03: narrow exact follow-up seam for triage work (6d9b3e4)
- 07-01: add fixed-catalog runbook generator (5bd491d)
- 07-01: enrich runbook DSL with Phase 7 capability fields (d173e02)
- 07-02: add preview and confirm operator recovery APIs with stale-preview rejection (ee89932)
- 07-02: evolve capability registry into named Phase 7 recovery contract (7040624)
- 07-03: derive preview-ready recovery state and bounded runbook attachment (4f236c5)
- 07-03: update generated operator UI and docs for preview-first recovery (680b02b)
- 1-1: implement escalation policy behaviour contract (6c22a1f)
- 1-1: implement Parapet.Metrics.Probe telemetry handler (e4c8f71)
- 1-1: implement Parapet.Probe behavior and macro (f8e35fa)
- 1-2: implement escalation worker (acd2f0e)
- 1-2: implement Parapet.Probe.NativeScheduler (4cc0290)
- 1-2: implement Parapet.Probe.ObanScheduler and complete plan 1-2 (9725aa9)
- 1-3: configure probe setup and documentation (fbc5a10)
- 1-3: integrate incident lifecycle with escalation engine (4c3f11a)
- 15-02: populate mix.exs metadata, docs extras block, bump version to 0.10.0 (70157d5)
- 16-01: implement Parapet.SLO.StarterPack.WebSaaS (GREEN) (c07dfdf)
- 16-02: implement Parapet.SLO.StarterPack.DeliverySaaS (GREEN) (52b4784)
- 17-01: add warning: key to step/2 macro and document step/2 (f543c6e)
- 17-01: render step-level warning block in runbook_card (e787a42)
- 17-01: thread warning: through WorkbenchContract projection (8da3667)
- 17-02: deepen dead_letter and stalled_executor templates (4936ff8)
- 17-02: deepen provider_outage and callback_delay templates (ec9f8f5)
- 17-03: author partial_backlog_drain template and wire all three into generator (af2d3f9)
- 17-03: author retry_storm and suppression_drift guidance-only templates (7339774)
- 18-01: define Parapet.Integration behaviour and declare on all eight adapters (734d820)
- 18-01: fix Parapet.attach/1 @doc and add Rulestead uniform-line test (1ef08d4)
- 18-03: author slo-authoring-guide.md (SLO-03, SLO-04) (9e73841)
- 18-05: register seven new docs in mix.exs extras list (D-01) (b5364cf)
- 19-01: add stability-freeze header to docs/telemetry.md (6b1350c)
- 19-01: create docs/stability.md policy and register in extras (10e0a09)
- 19-01: harden verify.public_api gate with tier detection and delete shadow alias (85a0843)
- 19-04: Experimental callouts — MCP, Automation, Probe, Evidence, Capabilities (4550aef)
- 19-04: Experimental callouts — Metrics and Integrations (b1e923a)
- 19-04: Experimental callouts — Notifier, Plug, Operator, Spine, SLO; gate exit 0 (381a049)
- 2-01: create Parapet.Metrics.Sigra module (fd738c3)
- 2-01: support runbook auto_execute and inject actor identity (cc8615b)
- 2-01: update Parapet.Integrations.Sigra to emit telemetry metrics (4818e97)
- 2-02: create Parapet.Metrics.Accrue module (3ccd653)
- 2-02: update Parapet.Integrations.Accrue for checkout and webhooks (282c4f1)
- 2-03: add critical journeys component to Operator UI (0d8481b)
- 2-03: add operator UI auth-mount checks to doctor (1a467d7)
- 20-01: create CONTRIBUTING.md (GOV-01) (a0da219)
- 20-01: create SECURITY.md (GOV-02) (df22664)
- 20-02: add semver commitment + version matrix to README (GOV-04) (2155ae1)
- 20-05: add governance doc globs to Hex files: whitelist (GOV-05) (26a258a)
- 20-05: restructure groups_for_extras into four groups (DOCS-06) (a137733)
- 20-05: switch hexdocs landing to getting-started and add 4 integration guides to extras (DOCS-06) (a8d89fd)
- 21-01: add demo app config/test.exs (force-add past root gitignore) (db3299e)
- 21-01: create application, repo, web entry, endpoint, telemetry, instrumenter (f575117)
- 21-01: create mix.exs, formatter, gitignore, and config files (c7b4df9)
- 21-01: create spine migration with runbook_data and trace_id columns (5e92fc6)
- 21-02: add /parapet router, Tailwind assets, README; verify compile + migrate (7636c0e)
- 21-02: generate Operator LiveView files; add layouts and error view (9b83e4d)
- 21-03: add smoke test + conn_case + fix action_item migration (2344da8)
- 21-03: seed demo app with Evidence Stable API (3a85f20)
- 21-04: add demo + release_gate CI jobs and getting-started link (d3dbaeb)
- 22-01: split release-quality ci lane (0f363c6)
- 22-02: automate hex publishing from release please (f12fce5)
- 3-01: expose capabilities via operator context (567ddbb)
- 3-01: implement adapter activation seam (d366a4f)
- 3-01: implement capability registry (9cc492f)
- 3-02: implement Rulestead integration adapter (c9e4cd8)
- 3-03: implement Chimeway adapter (a199a25)
- 3-03: implement Mailglass adapter (f71e4d8)
- 3-04: implement accrue and rindle adapters (d259df5)
- 3-04: implement threadline adapter for audit mapping (f2239f7)
- 3-1: implement PrometheusClient proxy with Req (b3d0cd1)
- 3-2: implement MCP server tool execution (66e43a7)
- 3-3: implement Parapet.Plug.MCP handling SSE and JSON-RPC (056732c)
- 4-04-03: add action_items_query to Operator module (f8ea621)
- 4-04-03: add ActionItem UI component (5dff11c)
- 4-04: add mix parapet.doctor command (33dfaee)
- 4-04: finalize artifacts and dx phase (b6b5608)
- 4-2: generate automated retrospectives on incident resolve (162379c)
- 4-artifacts-and-dx-04-01: implement parapet.gen.prometheus (603b776)
- 4-artifacts-and-dx-04-02: implement parapet.gen.grafana (87fb205)
- async-delivery: add provider reliability stack and generated artifacts (66aa0f8)
- commit validated v0.9 implementation (Performance, Scale & DX) (b76279e)
- implement telemetry translation and metric definition for AI deployment correlation (03-01) (b68b30d)
- integrate Postgres annotations for AI config changes into Grafana dashboard template (03-02) (dc1a988)
- v0.3-04-01: add acknowledge incident button to operator UI (04367b2)
- v0.3-04-01: implement acknowledge_incident command (2e66d3c)
- v0.3-phase4: implement acknowledgment, retrospectives, and polish (c2ea384)
Bug Fixes
- 01-01: add moduledoc to spine schemas to satisfy Verify.PublicApi (eed90f7)
- 01-02: use snake_case for prometheus metric names in exemplar store (8cb170f)
- 02-in-app-operator-ui: inject repo alias and use genuine Parapet.Operator calls in UI generator (3aa6a76)
- 03-02: bound generated history queue path (bf77677)
- 03-02: surface generated queue refresh state (4e29dcd)
- 04-03: exclude Resolvable protocol implementations from public API docs check (5693f3e)
- 13-01: rewire generated queue resolve seam (871c1e9)
- 15: revise plans based on checker feedback (b678374)
- 16: revise plans per checker feedback (resolve research contradiction, behavioral compile-out test, metric grep criteria) (1131d16)
- 18-03: replace non-ASCII typographic chars with ASCII in slo-authoring-guide (b6ecbc6)
- 19: IN-01 invoke deprecated SLO.define/2 consistently via apply/3 in tests (d04428b)
- 19: IN-02 update moduledoc to match the actual .Resolvable exclusion (3fefc1a)
- 19: IN-03 emit manifest as canonical JSON only, fail loudly without Jason (cbec746)
- 19: IN-04 assert event_name/1 round-trips every event_families/0 entry (c0d08f8)
- 19: WR-01 correct misleading telemetry contract comment to state it is a manual fixture (b47938e)
- 19: WR-02 make measurement key contract assert exact fixture, not tautology (2fe0a6d)
- 19: WR-03 treat @moduledoc false modules as intentional, not missing docs (50397de)
- 19: WR-04 anchor tier detection to the callout line to prevent misclassification (f6407cd)
- 19: WR-05 harden STAB-06 deprecation test against compiler-format drift (0408670)
- 19: WR-06 detach leaked adapter telemetry handlers in on_exit (3e9ee7d)
- 21-05: close CR-01 — map resolved incidents through WorkbenchContract.queue_row/1 (551ef05)
- ci: build docs in dev environment (fff37c5)
- release: align v1.0 gate with committed tooling config (d5ab252)
- resolve scoria integration compilation warnings (d4cb8b3)
- test: satisfy dialyzer for distributed canary helper (c737d3f)
- tests: remove Code.ensure_loaded? guards from integrations to fix test suite compilation order (b1bf5a8)
0.10.0
Added
Parapet.Integrationbehaviour (@callback setup/0) declared on all eight ecosystem integration adapters (Sigra, Accrue, Threadline, Chimeway, Mailglass, Rindle, Scoria, Rulestead). A missing or mis-namedsetup/0on any adapter is now a compile-time warning instead of a runtimeUndefinedFunctionError.
Fixed
Parapet.attach(adapters: [:rulestead])no longer raisesUndefinedFunctionError. The Rulestead adapter now exposessetup/0(delegating toattach/0), so all built-in integrations activate via the sameParapet.attach/1line.