What we said we would build, and what shipped
In May we published a roadmap with eight items. Five shipped, two of them differently from the way we described them. Here is the scorecard, misses included.
In May we published a list of eight things we were building, with no dates on any of them. 10.0.0 closed out five. This is what we got right, what we got wrong, and what is left.
The live list moved to a page of its own. A roadmap that gets edited every few months was a strange thing to keep as a dated post, and this is the part of it worth keeping dated: you can check it.
Two we described wrong
We said Java 26. We shipped Java 25. The May post promised "Java 26 and Tomcat 11". Java 25 is the long-term support release and 26 is not, and an integration platform that customers run on their own hardware has no business asking them to track a non-LTS runtime. Tomcat 11 was right.
We said CPython. We shipped GraalPy. The May post promised that "CPython brings Python 3 and the ecosystem that comes with it". Half of that arrived. Embedded Python is Python 3.13 with the standard library, f-strings and importable pure-Python modules, and it keeps Java interop because it still runs inside the JVM, which a separate CPython process would not have.
The ecosystem did not arrive. There is still no pip in embedded Python, and no bundled pandas or numpy. If you read the May post as "soon I can import pandas in a mapping", that is not what shipped, and package-heavy work still belongs in Execute Script Local or Remote via SSH. The sentence was too loose and we should have written the limit into it.
Three that shipped as described
Built-in SSO. Native SAML and OpenID Connect, with the miniOrange path kept for anyone already on it.
Performance at scale. The May post aimed at "the shape of problem where a single table dominates a run while everything else waits". Parallel extraction splits a table by primary key, CDC snapshots split one large keyed table across threads, and 10.0.0 lifted a cap we had not advertised: parallel execution was silently limited to 10 threads no matter what a flow asked for, and now runs up to 100.
dbt. dbt Core runs as a native flow type against a warehouse connection you already have, with the project pinned to a Git commit and artifacts in execution history.
What is ahead
Schema drift for ALTER and DROP, official Kubernetes support, end-to-end lineage with a catalog, and a registry for the AI agents you already run, whichever vendor they came from. The reasoning for each is on the roadmap, which is now the page we keep current.
Why publish the misses
Two of eight items shipped differently from the way we described them, and nothing forced us to say so. The release notes could have announced Java 25 and Python 3.13 as wins, which they are, and nobody would have gone back to a five-month-old blog post to check the wording.
Roadmaps are cheap to write and rarely audited, which is exactly why they are worth auditing. If we only ever publish the hits, the next list we publish means nothing. Four out of five of the shipped items landed the way we said; one landed with a real limit attached. That is the number, and it is more useful to you than another list of promises.
If something you need is not on the roadmap, tell us at product@etlworks.com. Customer pressure is the main thing that changes the order.