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
Published Hex releases use [0.x.y] version headings in this file. Internal repository
milestone labels (such as v2.x) track delivery tranches — they are not a second
install axis and do not map to Hex versions.
0.1.2 (2026-06-19)
Features
- 13-01: add IA component primitives (eebebcb)
- 13-02: implement grouped dashboard nav (9e0703d)
- 13-03: add honest coming-soon route (af24726)
- 13-04: implement Status Home attention strip (9401b65)
- 13-05: add object-aware page headers (9229aba)
- 13-06: add dashboard command palette (6c3772b)
- 13-07: thread incident and review ingress links (3e66229)
- 13-08: thread quality loop object links (d35b92b)
- 13: add make seed/reseed + surface demo routes in dev banner (c3a21e4)
- 14-01: add Dataset Builder route and navigation (8d84f0f)
- 14-01: implement Dataset Builder index (eb4abfd)
- 14-02: convert promote component to shared surfaces (68cf829)
- 14-02: reconstruct promotion drawer from URL params (57792b0)
- 14-03: route review promotion to dataset builder (9687adf)
- 14-04: convert incident evidence to notebook adapter (959a3b3)
- 14-04: convert incidents shell to shared components (acb9904)
- 14-05: convert eval workbench edit form (6d106eb)
- 14-05: convert eval workbench result surfaces (957c382)
- 14-06: convert prompt registry to shared components (5cebb4b)
- 14-06: convert release workbench to shared components (2f655d1)
- 15-01: add shared evidence primitives (1f15b7f)
- 15-02: convert home and runs to shared surfaces (9c09764)
- 15-03: convert workflow trace inspector surfaces (8761e85)
- 15-04: convert approvals and connectors shared surfaces (288960a)
- 15-05: convert evidence adapters to shared primitives (8dc3105)
- 16-01: mobile topbar, off-canvas nav drawer markup, and MobileNav JS hook (433bfb5)
- 16-01: mobile-first shell CSS and drawer motion primitive (4ccb16b)
- 16-02: table/1 overflow viewport, opt-in mobile_summary slot, and aria-sort (7b1f5f0)
- 16-03: add named responsive grid split classes to 04-components.css (7c90246)
- 16-03: replace all 7 unsupported responsive utility callsites (dfdf557)
- 16-04: mobile summaries and domain empty-state copy for Connectors + Dataset Builder (5005595)
- 16-04: mobile summaries and domain empty-state copy for Runs + Review Queue (ff3f960)
- 16-05: focus-ring overflow-clip-margin, selected-row aria-current, and status tests (31d65be)
- 16-06: Phase 16 Playwright parity spec for MOTION-01..04 (f032ea9)
- 16-06: single-SSOT AA contrast floor guard (D-31) (238b210)
- 17-02: add contact_sheet_index.md + document generator in MAINTAINERS harness section (361e0f4)
- 17-02: add priv/dev/contact_sheet.mjs before/after contact-sheet generator (c5cc4af)
- 18-01: brand-book pressure-test Sections 1-7 with embedded contrast table (cae5b0a)
- 18-01: zero-dep WCAG 2.1 contrast checker for brand-book pairings (2b74473)
- 18-02: append Decisions Locked section with propagation verdict (030673d)
- 18-02: append Sections 8-14 to pressure-test.md (0de71a8)
- 19-01: geometry + SVG document libraries (36b0f4c)
- 19-01: wordmark + lockup modules + smoke test (f2cd057)
- 19-02b: round-2 gallery with rejection diagnosis + recommendation (8a861d7)
- 19-02b: round-2 lockup-variant toolchain on locked TV-1 mark (ca13a47)
- 19-02b: six round-2 lockup candidates (LK-A..LK-F) (e62ac68)
- 19-02: build standalone options-gallery.html for gate #2 (9baa89a)
- 19-02: generate candidate SVGs into candidates/ (bc70930)
- 19-02: hand-tuned logo presets with design-intent blocks (1dbd26c)
- 19-03: finalize ranked recommendation block in options-gallery.html (d0b28ee)
- 19-03: LOGO-01..07 + gallery-completeness verifier (verify-logos.mjs) (8f9f182)
- 20-01: converge LK-B/TV-1 into 8 root variant SVGs (ad487d7)
- 20-01: ROOT-* verifier gate + prune galleries & losing candidates (425a9e1)
- 20-02: final-strip.mjs generates standalone final-variants.html confirm strip (3af3b79)
- 21-01: add brandbook/README.md + tools/check-consistency.mjs (cfa998f)
- 21-01: author brandbook/tokens.css — :root-scoped, --scoria- prefixed, two-tier (d161748)
- 21-01: author brandbook/tokens.json — Threadline-shaped, hex-identical to tokens.css (02ecc30)
- 21-02: author palette/typography/components/terminal example SVGs (5a9ef0d)
- 21-02: author readme-header/landing-hero/docs-page example SVGs (7231498)
- 21-03: build standalone dark-first brand book (index.html) (44380e6)
- 21-03: wire brand-book.md into check-consistency (4th hex source) (55632ec)
- 22-01: dashboard TV-1 mark + favicon wiring (compile-time inline) (26244d9)
- 22-01: Hex.pm description + GitHub repo description verbatim brand copy (BRAND-08) (c13899b)
- 22-01: README brand header — picture dark/light lockup, tagline, verbatim opener (79a2c36)
- 22-02: GATE.md — dated Phase 22 final quality gate report (all 8 checks PASS) (2bdbb32)
- 22-02: quality-gate.mjs — 8-check aggregating Phase 22 final gate (1ffe559)
- 23-01: CACHE-01 — env-scoped cache keys + version-file sourcing (51c12fe)
- 23-01: CACHE-02 — build-once job + artifact restore + 3 contract assertions (5f606f1)
- 24-01: add knowledge lane contract test (D-03 coverage ratchet) (a4dd664)
- 24-01: scope knowledge lane to --only knowledge, add accessor and after_suite guard (dcbb535)
- 25-01: refactor ci_policy_contract_test.exs to parallel-shape + derived fan-in completeness; fold WR-03 (5cb9613)
- 25-01: restructure ci-verify.yml into parallel sibling jobs + verify-summary fan-in (84103dc)
- 25-01: split verification_lanes_test.exs ci lane ordering into intra-vs-cross parallel-shape asserts (f418f64)
- 26-01: shard full ExUnit suite into 4-way GHA matrix job (SHARD-01) (2106758)
- 27-01: add durable contract guards — ephemeral-port ban, no-TEMP-step, no-retry-on-test-workflows (4b884c8)
- 28-01: implement Mix.Tasks.Scoria.Ci merge-gate task + ci alias (f9826b3)
- 28-03: make ratchet warning capture compile-only + parity guard (bf15f10)
- 29-01: thread PORT 4799 through dev harness (DXCLI-01) (b4e8b3d)
- 30-01: add native startup URL line to Makefile dev: recipe (0f058b9)
- 30-01: update Docker dev banner with live route list, Traefik link, native notice (050709f)
- 31-01: add Dockerfile.dev boundary invariant comment + docs layer-invalidation table (9bb2eaa)
- 32-01: add safe 1Password secret examples (4a3a558)
- 34-02: extend post-publish port scanner (5ebaae2)
- ui: dark/light/system theme picker + pre-paint FOUC fix (269d82a)
- v2.17 brand system, dashboard IA, theme picker + dev DX (#9) (1d2c9e2)
Bug Fixes
- 13: default dev dashboard to demo tenant + seed full IA demo data (1f05019)
- 13: revise orientation spine plan copy (b576066)
- 13: revise orientation spine plans based on checker feedback (51698fe)
- 14-02: normalize promotion key links (ca48f4a)
- 14: align support gallery smoke with status home IA (0bf47c7)
- 14: cite missing plan decisions (2f704d4)
- 14: review queue back-link honors scoria_base mount path (04f3ac5)
- 14: revise plans based on checker feedback (33f82a1)
- 15-review: gate table density controls (0fc2ff7)
- 15-review: gate table sort controls (b23f530)
- 16-01: modern HEEx comment syntax (<%!-- --%>) in mobile shell (f01d8b0)
- 16: address code review — style mobile summary cards (CR-01) + dataset crash guard (WR-06) (b67087d)
- 16: regenerate committed dashboard asset bundle from phase-16 source (0ca184c)
- 17-02: IN-02 remove unused fileURLToPath import (ba62be1)
- 17-02: IN-03 update stale .gitignore rationale comment (71ca01a)
- 17-02: WR-01 HTML-escape interpolated values; IN-01 drop dead isBaseline param (e5576f2)
- 17-02: WR-02 URL-encode img src path segments (3899a44)
- 17-02: WR-03 use stat-based directory checks instead of existsSync (ae2dbbe)
- 27-01: FLAKE-01+02 — fix Postgres host port to 5432 in all 5 CI blocks, delete TEMP e2e step (5277e90)
- 27-01: harden ephemeral-port guard against quoted binds; align topology comments (fb73f8e)
- 28-03: give scoria.install_check tests 180s timeout for CI shard load (06cdc34)
- 28-03: ratchet lane needs Postgres; update CI policy contract (8501578)
- 28-03: repair parallelized CI topology for its first real run (d07093b)
- 28: revise plans based on checker feedback (a83f5be)
- 33: mark research questions resolved (0695a29)
- 33: revise plans based on checker feedback (d8dcc24)
- 34-02: fix post-publish postgres port bind (8675672)
- 34: close code review doc guard gaps (8d981f5)
- 34: pin ci e2e flake guard coverage (91ff82d)
- 34: revise plans based on checker feedback (fab3308)
- 35-01: encode previous-live registry lineage (fbb5e2d)
- 35-02: align release branch e2e gate (4099118)
- 35-02: clear release docs warning gate (532cc4c)
- 35-02: include Docker DX policy surfaces for release CI (1b74283)
- brandbook: §3 logo display bugs — mono use-viewport mapping, subtitle colorway panel, mark on both grounds (0efefb5)
- dev: use the standard DB pool in dev (off the test Sandbox) (3249c6e)
- ui: drawer/modal scrim no longer intercepts panel clicks (b77970b)
[Unreleased]
Added
- Self-contained, dark-first (with light theme) operator dashboard design system. The
/scoriadashboard now ships its own brand-token CSS, client bundle (LiveSocket + hooks), and self-hosted fonts (IBM Plex Sans, JetBrains Mono) — it renders fully styled and interactive with no dependency on the host app's Tailwind/asset pipeline. - Task-oriented navigation shell: persona-grouped sidebar (Operate / Improve), breadcrumb topbar, light/dark theme toggle, and a GOV.UK-style "what do you want to do?" task band on the Live Ops landing page.
- Runs index at
/scoria/workflows; the previously-unreachable Eval Workbench is now routed at/scoria/eval_specs. - Routed Operate pages extracted from the Live Ops god-page, each a focused, linkable
surface with its own nav item: Approvals (
/scoria/approvals— inbox + decision modal), Connectors (/scoria/connectors— runtime + connector fleet posture and drawers), and Incidents (/scoria/incidents— tenant SRE triage with trace-first evidence). ?tenant=view parameter on Live Ops andpriv/repo/dev_seed.exs(gallery) to populate every dashboard screen with realistic data.mix scoria.assets.buildto (re)generate the shipped dashboard asset bundle.- First-run empty states on the Prompt Registry (
/scoria/prompts) and Eval Workbench (/scoria/eval_specs) tables, consistent with the Runs and Incidents pages.
Changed
mix scoria.installno longer probes or edits the host app's Tailwind config. Because the dashboard ships self-contained assets, install is now router mount + Ecto migrations + runtime config only — there is no Tailwind install surface and no host asset work.Live Ops (
/scoria) slimmed to a task band + live trace stream plus a compact Approvals/Connectors/Incidents "at a glance" strip that links to the new routed pages; approvals, fleet posture, and the tenant incident rollup moved off the landing page.Shared
ScoriaWeb.OperatorSurfaceread model now backs Live Ops and the routed Operate pages, replacing the duplicated fleet/SRE projection reads.Status→color styling fully consolidated into
ScoriaWeb.UI(tone/1+<.badge tone=><.flash_group>); the per-componentbadge_class/status_color/trace_badge_class/ flash_kind_classhelpers are removed and a drift-guard test prevents their return.
Bump
req_llmpeer dependency to~> 1.13(locked at 1.13.0)
0.1.1 (2026-05-30)
Added
- Shared SupportJourney handlers for overlay and gallery journey smokes
- Support copilot gallery optional lane journeys: semantic FAQ, knowledge, connector
- Gallery producer-path orchestrator smoke on
/scoria docs/MAINTAINERS.mdfor CI topology and release operationsdocs/connector_adoption.mdin Hex package and docs extras- Named remote connector adoption lane (
mix test.connector) with SupportJourney billing fixture proof
Changed
- Support copilot gallery docs: clone-repo requirement and path vs tarball consumer distinction
- README: session keys for LiveView operator UI, deduplicated install steps, maintainer section at bottom
- Operator verification guide trimmed for adopters; maintainer content moved to
MAINTAINERS.md
0.1.0 (2026-05-28)
Features
- 02-01: implement JSON-RPC 2.0 protocol handler (abd2dd2)
- 02-01: implement MCP Plug Router (61a3a5f)
- 02-02: define Scoria.MCP.Tool behaviour (ef00d95)
- 02-02: implement Scoria.MCP.Validator (172318d)
- 02-03: implement isolated executor with telemetry (b768cb7)
- 02-03: wire the router pipeline with execution and validation (ea99aab)
- 03-01: add ScoriaWeb.Router macro and dependencies (6397c56)
- 03-02: implement CSS Grid Trace Tree component (27e3b18)
- 03-02: wire PubSub and trace rendering in LiveView (cbfe3ef)
- 03-03: implement Approval schema (16687c9)
- 03-03: implement HITL Approval Modals and Ecto Coordination (7fd7e45)
- 03-03: implement token stream coalescing (219ca51)
- 03-liveview-operator-ux-01: implement OrchestratorLive and configure tests (0d7aae7)
- 04-01: implement evaluation flywheel schemas and context (8143cc4)
- 04-02: implement ExUnit Evaluation Macro (EvalCase) (5b6c1d8)
- 04-02: implement scoria.eval mix task (fee33a3)
- 04-03: implement dataset promotion and evalspec rubrics (c213d0e)
- 04-03: implement Promotion Context Logic (06a6c69)
- 07-01: add optional sre sink seams (c4b8f23)
- 07-01: bootstrap sre public context (080647d)
- 07-02: enforce runtime and mcp budget preflight (6ba1d5f)
- 07-02: implement budget engine reservations (ae7fd63)
- 07-03: add integration-scoped breaker guards (7f9447e)
- 07-03: add sre telemetry helpers (4c22b85)
- 07-04: implement incident dedupe and severity routing (ff6bc45)
- 07-04: implement transactional audit outbox capture (b77bdc0)
- 07-05: add trace-first incident evidence notebook (7f43d68)
- 07-05: refresh trace badges from lazy SRE evidence (5918e26)
- 07-06: add durable sre budget and breaker persistence (f82b39a)
- 07-07: add durable incident and audit storage nouns (644e98d)
- 07-08: add optional first-party sink adapters (6f75ffc)
- 07-08: add supervised durable relay worker (fa3eab0)
- 09-01: lock approval audit attribution (7583cd7)
- 09-01: restore workflow-owned approval ui path (9d1b758)
- 09-02: produce durable incident delivery rows (3e6ecf1)
- 09-03: expose durable incident delivery outcomes (0a765c4)
- 10-01: emit canonical runtime telemetry from execution seams (e82e934)
- 10-01: expose canonical telemetry identity contract (6f2832c)
- 10-02: align parapet telemetry translation (125f947)
- 10-02: emit post-commit incident lifecycle telemetry (cfdba13)
- 19-01: add durable connector job and vault posture (7cfa755)
- 19-01: add normalized connector boundary schemas (c4d0fcd)
- 23-01: implement tokenizer utility (269ad3b)
- 23-02: implement prompt template schema and migration (2a1161b)
- 23-03: implement prompt registry context API with immutable updates (35da112)
- 23-04: add live route for prompt templates (dc62634)
- 23-04: implement prompt template LiveView interface with token estimation (9157155)
- 24-01: generate ai_eval_datasets migration (8d7dc7f)
- 24-01: implement Dataset schema and validation (e8b45ac)
- 24-01: implement DatasetItem schema (4bd6520)
- 24-02: implement dataset CRUD and state management in Eval context (0c2f93f)
- 24-03: implement dataset promotion component (98032d8)
- 24-03: inject promote button into trace explorer (892ccd1)
- 24-03: integrate promote modal in workflow show liveview (ac9cb7b)
- 25-01: converge eval persistence onto canonical datasets (06eb037)
- 26-01: implement release gate middleware for draft prompts (66ed7e7)
- 26-02: implement prompt release workflow and approval handling (0e548c6)
- 26-03: scaffold prompt release UI and fix DB testing concurrency (b6261a7)
- 27-01: add scoria_mcp router macro for host integration (ffdea33)
- 27-01: add session registry to application supervisor (4f8d918)
- 27-01: implement MCP SSE controller and message ingestion (da1134a)
- 29-01: create Scoria.Runtime.Instance schema and migration (5373da6)
- 29-01: implement context functions for runtime registration (a0f73f6)
- 29-02: setup Phoenix Presence for runtime observability (8c2ba9a)
- 29-02: track MCP connections via Phoenix Presence (77780e1)
- 29-03: implement runtime posture rail and detail drawer (a446406)
- 29-04: add memory notebook component for compaction audit (f9b0bc1)
- 29-04: integrate memory notebook into workflow show with reciprocal link (d28e6c4)
- 30-01: configure baseline and dynamic oban queues (8bbcf94)
- 30-02: implement BatchEnqueue chunking (46972cf)
- 31-01: implement Circuit Breaker Sweep Manager (eba002b)
- 31-01: implement ETS Circuit Breaker State API (fea7208)
- 31-02: implement CircuitBreaker request step (ebb42bd)
- 31-02: implement Resiliency response and error steps (e63b2f9)
- 31-02: implement Steps wrapper for Req pipelines (33e796b)
- 31-03: inject req_options into application workers (7131567)
- 32-01: Add default configuration for model fallback chains (b97f7f2)
- 32-01: Implement Scoria.Orchestrator with recursive fallback and telemetry (bf95885)
- 32: integrate multi-model fallback orchestration and stabilize tests (384536c)
- 33-01: add eval campaign persistence foundation (71f3e2e)
- 33-02: implement eval campaign fan-out coordinator (a9eb4a9)
- 33-03: execute eval campaign targets through orchestrator (9e68f36)
- 38-01: add replay disposition resolver contract (819c0e3)
- 38-01: add replay run intent and approval authority fields (e2e8e29)
- 38-01: persist replay evidence on checkpoints events and audit rows (591ee5a)
- 38-02: gate replay execution at connector and mcp seams (2f8d805)
- 38-02: rework replay-scoped approval transitions (e242c05)
- 38-03: expose replay-safe approval projection reads (32f12f3)
- 38-03: project replay posture through runtime dto reads (a6e1aa4)
- 39-01: build replay comparison runtime DTOs (406e3e5)
- 39-02: add replay evidence notebook (92f57f3)
- 39-02: add replay workflow page state (20b289f)
- 39-03: freeze workflow-source dataset promotion (3d67cb3)
- 39-03: route sealed dataset promotion through approvals (5579017)
- 39-05: fix replay promotion runtime contract (f35884a)
- 39-05: persist replay promotion metadata end to end (23cfc0f)
- 40-01: add online scoring storage substrate (4be7a70)
- 41-01: lock bounded handoff contract and lineage (62049f5)
- 48-01: harden installer mutation reporting (a754c66)
- 72: Hex publish enablement and shift-left release automation (197c929)
- observability: create Ecto schemas and migrations for traces, spans, and span events (5cb78a4)
- observability: implement async gen server buffer for spans (e703a39)
- observability: implement telemetry handlers and adapters (58bb928)
- observability: implement telemetry redaction engine (800c2e1)
- v1.9: ship crucible operator loop (252bbfc)
- v2.2: finish OSS adopter onramp (3d30442)
Bug Fixes
- 26-03: wire real approval logic and verification to prompt release (ccb3e15)
- 31-01: resolve compilation warnings and test suite concurrency flakiness (39f0b68)
- 38: preserve replay-live approval provenance (245888e)
- 39: revise plans based on checker feedback .planning/phases/39-replay-operator-ux-draft-dataset-promotion/39-03-PLAN.md .planning/phases/39-replay-operator-ux-draft-dataset-promotion/39-04-PLAN.md .planning/phases/39-replay-operator-ux-draft-dataset-promotion/39-05-PLAN.md .planning/phases/39-replay-operator-ux-draft-dataset-promotion/39-VALIDATION.md .planning/ROADMAP.md (51bdba2)
- 41-02: harden projected context validation (1d3d4e8)
- 45: revise plans based on checker feedback .planning/phases/45-compatibility-and-invalidation-engine/45-00-PLAN.md .planning/phases/45-compatibility-and-invalidation-engine/45-01-PLAN.md .planning/phases/45-compatibility-and-invalidation-engine/45-02-PLAN.md .planning/phases/45-compatibility-and-invalidation-engine/45-03-PLAN.md .planning/phases/45-compatibility-and-invalidation-engine/45-RESEARCH.md .planning/phases/45-compatibility-and-invalidation-engine/45-VALIDATION.md .planning/ROADMAP.md (290d9d0)
- 50-01: lock release preview command contract (be552b0)
- 50-01: run release preview lane in dev env (5c24c78)
- 72: allow Release PR manifest 0.1.0 in ci policy contract (e1e697c)
- bootstrap pgvector in knowledge lane (f94c98a)
- eval: fix update_eval_spec merging keys (4d547eb)
- phase-10: stabilize bootstrap verification lanes (a0a31e7)
- phase-39: close post-review replay promotion gaps (118b9f5)
- ui: add assign_async for trace metadata lazy loading (52f0d6f)
[Unreleased]
[0.1.0]
First public Hex packaging of Scoria's in-repo capability through the v2.6 warning-ratchet closeout. Integrators get a Phoenix-native runtime with durable runs, bounded escalation, optional semantic reuse, and executable adoption lanes — without adopting internal planning milestone names as product releases.
Added
- Default runtime — identity-aware durable runs, approvals, and operator evidence via
Scoria.start_run/2,Scoria.resume_run/2, and/scoriainspection surfaces; prove withmix scoria.test.adoption. - Bounded handoff — narrow same-run delegation with projected context and visible lineage
through
Scoria.start_handoff_run/3; prove withmix scoria.test.runtime_to_handoff. - Semantic fast path — tenant-scoped reuse for explicitly safe read-only lanes via
Scoria.SemanticLane; prove withmix scoria.test.semantic_fast_path. - Optional knowledge — pgvector-backed retrieval when chosen; prove with
mix scoria.test.knowledge. - Upgrade-safe install — planner/check/apply paths via
mix scoria.install --dry-run,mix scoria.install --check, andmix scoria.install. - Maintainer CI trust — warning baseline and ratchet enforcement, policy→test topology
guarded by contract tests, and local parity via
mix scoria.test.ci_trust(maintainer-only; not an adopter integration requirement).
Roadmap traceability
| Planning tranche | Shipped | Reference |
|---|---|---|
| v2.1 | 2026-05-25 | .planning/MILESTONES.md#v21-tenant-scoped-semantic-fast-path |
| v2.3 | 2026-05-27 | .planning/MILESTONES.md#v23-runtime-to-handoff-adoption-example |
| v2.4 | 2026-05-27 | .planning/MILESTONES.md#v24-adoption-reliability-contract |
| v2.5 | 2026-05-27 | .planning/MILESTONES.md#v25-installer-safety--upgrade-confidence |
| v2.6 | 2026-05-28 | .planning/MILESTONES.md#v26-warning-ratchet |