Repository navigation
mdl v26.5.0 — Official Release
Sixth official release, collapsing the v26.5 mainline (Alpha 1–9). Planned
from the mandatory robustness assessment of v26.4.0 and developed on the
dedicated v26.5 branch.
Theme: autonomous orchestration and runtime selection — agents observe
and drive a live game through events instead of polling, pin the Java runtime
per instance, and express multi-step intent declaratively.
Security
mdl jdk removepath traversal fixed (PoC-confirmed during the v26.4.0
assessment): a hostile tag could delete directories outside the java cache.
Tags are now a single path component; release asset names that would steer
the download write path are refused.
Agent API discipline
- Every client error returns the JSON envelope (JSON-body rejections were
plain text before) - Automation-input validation maps to 400 instead of 502
- Malformed redstone/circuit bodies are explicit client errors, never silent
crosshair probes
Runtime selection
- Instance-level JDK binding:
mdl jdk use <instance> aprism[@ver]|default,
persisted in instance.json, honoured by every launch path, with graceful
Eclipse Adoptium fallback;doctorreports bindings that cannot resolve
Despotes v26.11 primitives (CLI + Agent API)
mdl game circuit— cube scan of redstone components (radius 1–8) with
powered state and propertiesmdl game redstone-action— toggle / cycle via the useItemOn pipelinemdl game screen— window geometry forphysical / guiScale = logical
click-space conversion
Event-driven orchestration (WebSocket)
schedule_registered/schedule_fired/schedule_removedmacro_recorded/macro_play_started/macro_play_finished/
macro_removedcircuit_changedwithPOST/GET/DELETE /game/:instance/watchsubscriptions
Declarative flows
mdl game flow <instance> --file flow.json— ordered, fail-fast
composition of wait-ready / wait-condition / action / schedule / macro /
sleep, submitted through the existing Despotes channel (sequencing, not a
second protocol)
Fixes
- Cross-instance window misattribution (field report): stale
runtime/pid
files plus Windows PID reuse made one instance's error screen appear under
another instance's name. Attribution now requires a live java process whose
command line carries the instance's gameDir marker; PIDs claimed by several
instances are dropped. - Production-evaluation fixes: flow camelCase fields were silently ignored
(timeoutSecs/pollMswaited the defaults); condition point paths could
not index arrays (schedules.0.executionCount); flow files with a UTF-8
BOM are now accepted.
Verification for this release
- Three production-environment rounds on a live Fabric 26.2 instance: full
regression, an 11-step flow end-to-end, and the new watch/event surface —
which found and fixed the two flow bugs above - 28 lib + 197 bin tests green;
doctor10 checks passing - Benchmarks within baseline (capabilities p95 124ms, list p95 114ms,
status p50 187ms on an 85-instance workspace) - Three-platform CI green (linux-x64, aarch64-darwin, windows-msvc);
nightly fuzz targets clean within budget
Build
- Windows x64 (MSVC), release profile (
lto = true,codegen-units = 1,
stripped). 28 lib + 197 bin tests, zero warnings.