mxcli version: local dev build from 2c0f6837 (2026-07-27), built with CGO_ENABLED=0 go build ./cmd/mxcli (no ldflags, so no version stamp) · OS: macOS (Darwin 24.6.0, Apple Silicon) · Mendix project: runtime 11.12.1
Summary
A Data Grid 2 with a microflow data source is created correctly by exec and is present in the model, but DESCRIBE PAGE renders the grid with no data source at all. The round-tripped MDL is therefore wrong: re-applying it produces a grid with no data source.
The model is fine — only the describe output is wrong. This makes it the inverse of #643 (where the value never reached the model) and a sibling of #772 / #443 (describe fidelity, other properties).
The failure is specific to the microflow source kind. The same widget with a database source round-trips correctly (control below).
Minimal repro
Any no-argument microflow returning a list. Here ContentManager.DBG_ListBucketObjects returns List of AmazonS3Connector.ListedObject.
create or modify page ContentManager.TmpProbe (Title: 'T', Layout: Atlas_Core.Atlas_TopBar, Folder: 'PageHost') {
datagrid g1 (datasource: microflow ContentManager.DBG_ListBucketObjects) {
column c1 (Attribute: Key, Caption: 'Key')
}
}
/
$ mxcli check probe.mdl -p ContentManager.mpr
✓ Syntax OK (1 statements)
Check passed!
$ mxcli exec probe.mdl -p ContentManager.mpr
Created page ContentManager.TmpProbe
$ mxcli -p ContentManager.mpr -c "DESCRIBE PAGE ContentManager.TmpProbe"
create or modify page ContentManager.TmpProbe (Title: 'T', Layout: Atlas_Core.Atlas_TopBar, Folder: 'PageHost') {
datagrid g1 {
column "Key" (Attribute: Key, Caption: 'Key')
}
}
Expected
DESCRIBE PAGE renders the data source, e.g. datagrid g1 (DataSource: microflow ContentManager.DBG_ListBucketObjects), so the output can be re-applied without losing the binding.
Actual
datagrid g1 { — no DataSource property at all.
The data source IS in the model (so this is a describe bug, not a write bug)
cmd/dump_page on the same page shows the binding was written correctly:
{ "Key": "$Type", "Value": "Forms$MicroflowSource" },
{ "Key": "MicroflowSettings", "Value": [
{ "Key": "$Type", "Value": "Forms$MicroflowSettings" },
{ "Key": "Microflow", "Value": "ContentManager.DBG_ListBucketObjects" },
...
Control (same widget, database source, same project)
A Data Grid 2 with a database source in the same project round-trips correctly:
$ mxcli -p ContentManager.mpr -c "DESCRIBE PAGE ContentManager.MyPages"
...
datagrid gridPages (DataSource: database from ContentManager.Page) {
column Slug (Attribute: Slug, Caption: 'Slug')
So it is not "pluggable widgets are unsupported in describe" — it is the microflow source kind specifically.
Related: the documented microflow M() form is a parse error
create-page.md documents the datasource syntax as datasource: microflow Module.GetData(). That exact form does not parse:
datagrid g1 (datasource: microflow ContentManager.DBG_ListBucketObjects()) {
Syntax errors found:
- line 2:74 mismatched input ')' expecting the start of a statement (create, alter, drop, show, describe, …)
Dropping the () parses and works. So the documented form fails and the working form is undocumented. Fixing the describe output would ideally settle which of the two is canonical.
Impact
This is a quiet trap for agentic authoring. DESCRIBE PAGE is the normal way to verify a page after writing it, and here it reports a correct page as broken. The natural next step — "the data source is missing, set it again" — edits a page that was already right. Anything that round-trips a page through describe and re-apply (a refactor, a bulk edit, a page copy) silently drops the binding, and the resulting grid shows nothing at runtime with no error to explain why.
mxcli version: local dev build from
2c0f6837(2026-07-27), built withCGO_ENABLED=0 go build ./cmd/mxcli(no ldflags, so no version stamp) · OS: macOS (Darwin 24.6.0, Apple Silicon) · Mendix project: runtime 11.12.1Summary
A Data Grid 2 with a microflow data source is created correctly by
execand is present in the model, butDESCRIBE PAGErenders the grid with no data source at all. The round-tripped MDL is therefore wrong: re-applying it produces a grid with no data source.The model is fine — only the describe output is wrong. This makes it the inverse of #643 (where the value never reached the model) and a sibling of #772 / #443 (describe fidelity, other properties).
The failure is specific to the microflow source kind. The same widget with a
databasesource round-trips correctly (control below).Minimal repro
Any no-argument microflow returning a list. Here
ContentManager.DBG_ListBucketObjectsreturnsList of AmazonS3Connector.ListedObject.Expected
DESCRIBE PAGErenders the data source, e.g.datagrid g1 (DataSource: microflow ContentManager.DBG_ListBucketObjects), so the output can be re-applied without losing the binding.Actual
datagrid g1 {— noDataSourceproperty at all.The data source IS in the model (so this is a describe bug, not a write bug)
cmd/dump_pageon the same page shows the binding was written correctly:Control (same widget, database source, same project)
A Data Grid 2 with a database source in the same project round-trips correctly:
So it is not "pluggable widgets are unsupported in describe" — it is the microflow source kind specifically.
Related: the documented
microflow M()form is a parse errorcreate-page.mddocuments the datasource syntax asdatasource: microflow Module.GetData(). That exact form does not parse:Dropping the
()parses and works. So the documented form fails and the working form is undocumented. Fixing the describe output would ideally settle which of the two is canonical.Impact
This is a quiet trap for agentic authoring.
DESCRIBE PAGEis the normal way to verify a page after writing it, and here it reports a correct page as broken. The natural next step — "the data source is missing, set it again" — edits a page that was already right. Anything that round-trips a page through describe and re-apply (a refactor, a bulk edit, a page copy) silently drops the binding, and the resulting grid shows nothing at runtime with no error to explain why.