Changelog
All notable changes to MangoGridStudio are documented here.
Format: grouped by sprint batch. Each entry identifies what shipped, what changed at the API level, and whether there are breaking changes.
[Batch 4] — 2026-05-21 — Public Documentation Site
New
Documentation site — docs.spenergy.solutions
- Getting Started — 8-step walkthrough from account setup to your first solved dispatch result, with sample request/response
- API Reference — complete REST endpoint documentation covering the solver API, AI Analyst, ISO data feeds, model builder, and power flow endpoints; request/response schemas with field-level descriptions
- Unit Commitment Concepts — plain-language explainer of the day-ahead and real-time commitment problem; how MangoGridStudio solves it; the startup-cost/ramp-rate/reserve distinction that separates it from simple economic dispatch
- LMP Decomposition — three-component formula (energy + congestion + loss), worked two-city example, intuition for why LMPs diverge across nodes
- Glossary — 80+ terms across power systems, ISO/market, and platform-specific vocabulary
- Changelog — this page
- Full-text local search — Cmd+K / Ctrl+K instant search across all docs pages; no external dependency; Algolia DocSearch application in progress for post-launch upgrade
- Dark mode, mobile-responsive layout, WCAG 2.1 AA accessible
Infrastructure
- Cloudflare Pages deployment pipeline for docs.spenergy.solutions; PR preview deployments on every docs pull request
- OpenAPI sync CI: automatic drift detection between FastAPI schema and the published API reference on every route change
Breaking Changes
None.
[Batch 3] — 2026-03-15 — Experiment Engine, PCM Polish, Docs
New Features
Experiment Engine (P5)
POST /experiments/submit— submit parametric scenario batch with grid, Latin hypercube, Monte Carlo, Sobol, or custom samplingGET /experiments/{id}/status— poll experiment progress with per-scenario trackingGET /experiments/{id}/results— aggregated statistics (min/max/mean/std per output metric)GET /experiments/{id}/results/download— download results as CSV, JSON, or ParquetPOST /experiments/{id}/cancel— cancel a running experiment (returns 409 on terminal-state experiments)WS /ws/experiments/{id}/stream— real-time scenario-level progress events (6 message types, 15s heartbeat)- Five scenario matrix sampling strategies: grid, Latin hypercube, Monte Carlo, Sobol, custom
- Nine network mutation operators including PJM M28 marginal cost recalculation and carbon pricing
- Thread-safe Julia batch runner with per-scenario timeout and parallel execution
- Thread-safety hardening for daily pipeline LMP and module cache state
PCM Framework Polish (P7)
- Accessibility hooks:
useChartKeyboardNav,useChartA11y,useReducedMotion,useFocusTrap,useFocusOnRouteChange - Dark mode + high-contrast theme:
ThemeModeextended to'high-contrast',useThemeAwareChartwithMutationObserver - Chart export utilities:
ExportableChartHOC,chartExport.ts(SVG, CSV, PNG, PDF export) - Performance:
useCanvasFallback(500-element threshold), selective D3 sub-module imports,LazyMapLibre, VitemanualChunks - Keyboard navigation:
useGlobalShortcuts,ShortcutHelpDialog,useChartKeyboardPatterns - Responsive:
useResizeObserverwith 100ms debounce
Documentation
docs/dev/API_REFERENCE.md— full REST + Julia API reference with request/response schemas and curl examplesdocs/dev/DEVELOPER_QUICKSTART.md— 20-minute quickstart: clone → first UC solve → first experiment → AI Analystdocs/dev/ARCHITECTURE_OVERVIEW.md— Mermaid system diagram, component descriptions, data flow, directory layoutdocs/dev/DEPLOYMENT_GUIDE.md— Docker Compose + Kubernetes + SSL + monitoring + backupCHANGELOG.md— this file
Bug Fixes
- Daily result record: fixed field count mismatch (24 → 29 fields). All fields now populated including
infeasible_hours,binding_constraints_detail, andcurtailment_mwfrom ED results. - Experiment runner: per-scenario timeout correctly cancels stalled Julia tasks.
ThemeToggle.tsxthree-way cycle (light → dark → high-contrast → light) corrected.
Internal
- 21 contract tests for experiment API payloads
- 20 testsets for constraint validation equivalence
- Validation metrics enriched with constraint tier classification and message formatting
- Debug mode: writes structured JSON dispatch/slack/dual tables to test results
- Trace mode: solver trace log points for regression analysis
- CI pipeline: Python contract tests, Julia solver tests, E2E benchmarks, stress tests, skip/broken detection, formulation artifact validation
[Batch 2] — 2026-03-14 — PCM Framework, Education, DSL Validation
New Features
Scenario Comparison and Education UI (P3)
- Education store (
educationStore.ts) with Zustand + immer, localStorage persistence, 5 learning paths UCDeepDiveLessons.tsx,LearningPathSelector.tsx, 6 learn routesConstraintSatisfactionAnimatorandWhatIfSliderPanelcomponents- 6 Jupyter notebooks: UC quickstart, LMP decomposition, sensitivity sweep, tuning workflow, constraint explorer, warm start speedup
- Notebook references PJM M11 §6.4 and M28 §4 numeric examples throughout
Calibration Pipeline (P6.1–P6.4)
- Calibration pipeline — auto-calibrates UC model parameters via grid search + scipy.optimize, with out-of-sample validation
- 49 calibration tests, all passing
- Formulation artifact validation: validates formulation file existence and required section presence (MODEL SIZE, OBJECTIVE FUNCTION, DECISION VARIABLES, CONSTRAINTS)
Constraint Validation
- 25 new testsets covering constraint registry completeness, variable indexing, and PJM M28 objective formulation
- Formulation artifact output enforced in CI: pipeline fails if formulation files are missing required sections
Onboarding and Training Materials (P8)
docs/published/ONBOARDING_CURRICULUM.md— 4-hour new user curriculum (4 modules)docs/published/training/TRAINING_DECK_TEMPLATE.md— 48-slide trainer deck outlinedocs/published/ADMIN_SETUP_GUIDE.md— 10-section IT admin deployment guidedocs/published/GETTING_STARTED.md— 8-step no-terminal user walkthroughdocs/published/UNDERSTANDING_RESULTS.md— 6 chart types explained for operatorsdocs/published/WHAT_IF_STUDIES.md— 4 concrete what-if study examplesdocs/published/MODEL_HEALTH_GUIDE.md— 5 quality check tiers with action stepsdocs/published/FAQ.md— 30 questions across 6 categoriesdocs/GLOSSARY.md— 80+ terms: power systems, software/math, ISO/regulatory, MangoGridStudio-specific
Breaking Changes
None.
Bug Fixes
- Formulation utilities:
write_formulation_filesnow enforces all 4 required section headers. - Calibration:
BaselineSelectorcorrectly handles scenarios with no historical reference (returns 0.0 deviation rather than raising).
Internal
- Constraint catalog auto-generated from model documentation generator
- Variable dictionary — 25 decision variables with dimensions, units, bounds
- Constraint diagram — Mermaid relationship map
- CI fails on stale generated docs
- Onboarding materials complete: 18/18 tasks
[Batch 1] — 2026-03-13 — Core Solver, Analyst Module, Constraint System
New Features
Enhanced UC Solver (P1)
- Julia enhanced UC module: full DA-UC MILP formulation
- 17 constraint categories registered in Python constraint registry and enforced in the Julia solver
- LP relaxation warm start: reduces MILP solve time by >15% on repeat runs
- Post-solve improvement pass for solution quality refinement
- Prior solution injection for sequential multi-day studies
- Stochastic unit commitment: scenario tree formulation
- N-1 contingency cuts added lazily during branch-and-bound
- Multi-zone decomposition using ADMM (Alternating Direction Method of Multipliers)
- Lagrangian relaxation with subgradient-based step size adaptation
Analyst Module (P1–P2)
- ID validation and canonical ID resolution (
/modules/analyst/ids/) - Scenario provenance storage and retrieval (
/modules/analyst/provenance/) - Baseline computation (
/modules/analyst/baseline/compute) with rate limiting - Result ingestion: constraints, injections, dispatches, LMP, PTDF (
/modules/analyst/results/) - Explain artifact generation: PTDF × ΔP drivers, unit drivers, relief candidates, LMP decomposition (
/modules/analyst/explain/{id}/generate) - AI Analyst chat (
/modules/analyst/chat) with 5 tool-calling tools backed by Claude API - 291 analyst module tests passing
Julia Solver HTTP API
- Async job queue with configurable worker threads
- SHA-256 input deduplication + LRU result cache
X-Cache: HIT/MISSheader on solve responses- Per-route rate limiting
- ArtifactStore: Parquet+zstd columnar compression, S3/MinIO upload, SHA-256 checksum headers
- PTDF / LODF sensitivity analysis
- Full OpenAPI 3.1 spec at
backend/julia_api/openapi.yaml
Authentication
- JWT-based authentication: access tokens + refresh tokens with configurable TTLs
- Token rotation (
/auth/rotate-secret) with instant invalidation of all existing tokens - Per-user API keys for programmatic access (
/api/users/me/api-keys) AUTH_BYPASS_ENABLEDflag for development
ISO Market Data Fetchers
- 7 ISO fetchers: PJM (Data Miner 2), CAISO (OASIS), MISO, ERCOT, ISO-NE, NYISO, SPP
- gridstatus integration
- S3 cache layer for fetched data
- PJM benchmark builder: PSS/E v30 RAW file parser, PUDL generator enrichment, offer curve enrichment, CEMS dispatch pipeline
Breaking Changes
None — this was the initial release.
Known Issues
- Stochastic UC requires validation tests before production use.
- Twin, Graph, Discovery, and Congestion forecasting endpoints are specification-level only (return 404).
- Prometheus metrics endpoint for the FastAPI backend is not yet implemented (
/metricsreturns 404 on port 58000). Julia API metrics are available on the solver service port (configured in.env).
Version history summary
| Batch | Date | Highlights |
|---|---|---|
| Batch 3 | 2026-03-15 | Experiment engine, PCM accessibility/export polish, developer docs |
| Batch 2 | 2026-03-14 | Education UI, calibration pipeline, onboarding and user guides |
| Batch 1 | 2026-03-13 | Enhanced UC solver, Analyst module, Julia HTTP API, ISO data fetchers |
See GitHub releases for full history.