What we shipped and when — newest first. Each entry describes what changed for the user. Categories help you scan.
AI brief
The daily package now uses your saved strategy
If you've saved an active strategy profile (volume, min spread, max trades, fee), the daily package builds the plan from it — not from generic defaults.
Until an active profile is saved, the package honestly runs on the built-in defaults.
If the profile read fails, that recipient is skipped (we never send a plan built on a guess) rather than silently falling back to defaults.
AI brief
Daily decision package by email (Pro)
Once a day in the morning (06:30 Kyiv) — an email with the day's AI brief: summary, action gate, top pairs, and a link to the full package (PDF/XLSX) in the workspace.
Real data only: if there's no live priced day, no email goes out — we never dress up a demo curve.
Every email carries the AI marking (Art. 50) and the sovereignty receipt (zero data egress).
Manage recipients in /admin/recipients (preview + test-send before you flip it live).
Trust
Decision & Outcome Ledger + honest framing
Every decision we serve is now logged; the morning reconcile scores it against realized DAM prices and computes hit-rate and captured spread across the recommended pairs.
Timing honesty: rows decided AFTER the 12:00 Kyiv gate close are labeled retrospective accounting, not tradeable performance.
A "historical simulation" disclaimer sits under the hit-rate KPI so nobody reads it as guaranteed accuracy.
The ledger is on /app/ledger and exports to CSV (with a timing-basis column).
Data
Fuel fundamentals card (gas + carbon)
New Pro card on /app: gas-storage fullness (GIE AGSI+) with a day-over-day trend, plus grid carbon intensity / CBAM line (Ember).
Both sources are CC BY — shown openly with attribution ("Sources: GIE AGSI+ · Ember").
Decision background, not a forecast signal — no edge claimed.
Data
Import-availability risk card (neighbour outages)
Planned/forced generation outages in neighbours (HU/RO/SK/PL) from ENTSO-E — a proxy for UA import-capacity availability.
Refreshes daily; history accrues going forward.
Readout only for now — not wired into the forecast, no edge claimed.
Trust
Linked source chips + freshness timestamps
Every chip in the AI brief Sources row is clickable — jumps to the data card that fed it (#coupling, #multi-zone, #system-ops, #balancing, #dam).
ENTSO-E live cards now show a self-updating "updated N min ago" badge that ticks every 30s.
Smooth-scroll on click; scroll-margin honors the sticky topbar.
Polish
Loading skeletons + mobile polish + OG image
/app and /account render structural skeletons during SSR fan-out — no more blank wait screen.
Mobile polish: AI brief chip row never overflows phone viewport, topbar tighter on narrow screens.
Refreshed OG image: proof points (OREE live · ENTSO-E live · AI brief · Audit trail) instead of vague marketing.
Performance
ISR for static pages + a11y skip-link
20 pages (legal, glossary, help, developers, offline) now statically prerender with ISR (6h–24h revalidate) — instant TTFB.
Skip-to-content link surfaces on keyboard focus; proper id="main-content" on every top-level page.
Source chips converted to semantic <ul>/<li> with aria-labelledby.
Polish
PDF / Excel export polish + day-shape sparkline
PDF now carries a branded footer (alvo.energy + contacts + rationale ID), pilot badge, and an inline SVG day-shape curve between the summary and plan tables.
Excel gained a dedicated Cover sheet (headline + contacts + disclaimer); data sheets ship with auto-filter + frozen header.
Rationale ID from the audit trail now lives in PDF footer + Excel cover — for reconciliation with the event log.
AI brief
AI brief credibility boost
Data coverage now credits ENTSO-E EU coupling (+8), regional DAM (+8), UA system context (+3) — these three signals were live on /app but the scorer ignored them.
Decision quality: live EU context adds +8 and a "multi-zone benchmark anchor" reason.
Decision sensitivity: live EU adds +6 and a "cross-market check" entry.
"Sources that fed this brief" chip row with type icons (OREE / ENTSO-E / NEURC / NBU / weather).
Platform
/sla, /aup, /glossary shipped
/sla — uptime targets (best-effort 99.5% pilot → 99.9% GA), P1–P4 support tiers, service credits.
/aup — Acceptable Use Policy with explicit REMIT manipulation ban, rate limits, escalation policy.
/glossary — bilingual term dictionary (DAM/IDM/BM/OREE/UEEX/ENTSO-E) with client-side search and per-term permalinks.
Data
ENTSO-E switched live on prod
EU Coupling (A11) — cross-border flows UA↔PL/SK/HU/RO/DE-LU.
Multi-zone Regional DAM (A44) — regional EU prices alongside UA.
UA Energy System (A65+A75) — total load + generation mix (UA TSO not yet publishing → fixture).
Negative-cache on upstream failure (60s TTL) — we don't slam ENTSO-E during rate-limits.
RBAC framework defined: owner/trader/analyst/risk/apiClient/auditor roles + 14 permissions; during the public pilot this is launch readiness, with enforcement via `ALVO_RBAC_ENFORCED` enabled only at production GA.
Integration test for AuthGuard + Reflector wiring over the HTTP layer — catches the silent-noop regression.