Skip to content

Commit cf97a4f

Browse files
akoclaude
andcommitted
Merge branch 'mxcli-upgrade-marketplace'
Fold in measured marketplace module-update research: mprsnapshot baseline, BSON measurements of Studio Pro's update, and the proposal updates. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 parents 5524f6f + 754b31a commit cf97a4f

18 files changed

Lines changed: 20489 additions & 33 deletions

docs/11-proposals/PROPOSAL_marketplace_module_upgrade.md

Lines changed: 188 additions & 29 deletions
Large diffs are not rendered by default.

docs/11-proposals/PROPOSAL_marketplace_modules.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,21 @@ with `MxToken` auth 303-redirects to the public CDN `.mpk`. Shipped:
2222
**module (new)**`mx module-import`, other types → download + instruct.
2323

2424
**Module *updates* remain postponed** (detect + report only, no mutation):
25-
re-importing an existing module would discard local edits and, for modules with
26-
persistent entities, change entity `$ID`s — losing runtime data. Studio Pro's
27-
Marketplace "Update" does an ID-preserving merge the `mx` CLI does not expose.
28-
A future ID-preserving merge is the remaining work.
25+
re-importing an existing module would discard local edits.
26+
27+
> **Corrected 2026-08-10.** This paragraph previously read *"Studio Pro's
28+
> Marketplace 'Update' does an ID-preserving merge the `mx` CLI does not
29+
> expose"*, and gave changed entity `$ID`s as a data-loss risk. Both were
30+
> measured and are wrong. Studio Pro's update **replaces** the module's units —
31+
> every `$ID` is renumbered — and carries the `GUID` across name-keyed; it is
32+
> neither ID-preserving nor a merge. The renumbering is harmless, because
33+
> cross-module references are qualified-name strings and no `$ID` pointer
34+
> crosses a unit boundary. The real hazard is the other one: a locally modified
35+
> element is destroyed silently. See §4 of
36+
> [`PROPOSAL_marketplace_module_upgrade.md`](PROPOSAL_marketplace_module_upgrade.md)
37+
> and the data in [`data/marketplace-upgrade/`](data/marketplace-upgrade/).
38+
39+
A future GUID-preserving replace is the remaining work.
2940

3041
## Status update (2026-04-16) — historical (now resolved)
3142

docs/11-proposals/data/marketplace-upgrade/01-before/Administration.txt

Lines changed: 2759 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# mprsnapshot/1
2+
# project /workspaces/mxcli/mx-test-projects/test1-app/Test1App.mpr
3+
# mendix 11.13.0
4+
# units 369
5+
# module DataWidgets
6+
#
7+
# U = unit, E = nested element, R = cross-element pointer.
8+
# Columns: kind, path, $Type, id, hash-or-guid
9+
# hash covers the unit's contents with every $ID removed, so a changed
10+
# hash on an unchanged id means the element was edited in place.
11+
E DataWidgets/ClientActivities/Export_To_Excel/Parameters/chunkSize JavaScriptActions$JavaScriptActionParameter id=7e25196d-40e3-4575-b7f4-ab0572f24ab6
12+
E DataWidgets/ClientActivities/Export_To_Excel/Parameters/datagridName JavaScriptActions$JavaScriptActionParameter id=2e899b0f-5c34-407d-ac6d-32c037c5b856
13+
E DataWidgets/ClientActivities/Export_To_Excel/Parameters/fileName JavaScriptActions$JavaScriptActionParameter id=baf2bab3-7981-4f44-afe4-ba6b8bd2a0a4
14+
E DataWidgets/ClientActivities/Export_To_Excel/Parameters/includeColumnHeaders JavaScriptActions$JavaScriptActionParameter id=b82aa003-60a9-419d-b75e-c25e6b59a07b
15+
E DataWidgets/ClientActivities/Export_To_Excel/Parameters/sheetName JavaScriptActions$JavaScriptActionParameter id=bd0fb4a9-23f0-41af-a032-a3fa068182b1
16+
E DataWidgets/ClientActivities/Filter_Operators/Values/between Enumerations$EnumerationValue id=d20ff9e1-f9b6-42a2-9904-28fbef4d5dab
17+
E DataWidgets/ClientActivities/Filter_Operators/Values/contains Enumerations$EnumerationValue id=5d111888-345e-4623-a8ac-8cfb40d58c3c
18+
E DataWidgets/ClientActivities/Filter_Operators/Values/empty Enumerations$EnumerationValue id=6ff1df9f-3c9c-400c-8d44-cc6c6152c5d3
19+
E DataWidgets/ClientActivities/Filter_Operators/Values/endsWith Enumerations$EnumerationValue id=bfe097ed-b395-4465-a865-4993e222a8cf
20+
E DataWidgets/ClientActivities/Filter_Operators/Values/equal Enumerations$EnumerationValue id=292afb07-3431-4b38-b7c4-1452cd055004
21+
E DataWidgets/ClientActivities/Filter_Operators/Values/greater Enumerations$EnumerationValue id=8f6e2e33-4cb7-4a8a-82b4-db3abe243bb1
22+
E DataWidgets/ClientActivities/Filter_Operators/Values/greaterEqual Enumerations$EnumerationValue id=c02c6596-4afb-40b4-8e83-85f77c3981fe
23+
E DataWidgets/ClientActivities/Filter_Operators/Values/notEmpty Enumerations$EnumerationValue id=61547a21-2d5c-4624-904d-f4aff1616872
24+
E DataWidgets/ClientActivities/Filter_Operators/Values/notEqual Enumerations$EnumerationValue id=fec9bf2a-9eba-4a0f-a138-b9113e93408e
25+
E DataWidgets/ClientActivities/Filter_Operators/Values/smaller Enumerations$EnumerationValue id=bda0cb58-ff20-4dcb-b6b8-e90666528c01
26+
E DataWidgets/ClientActivities/Filter_Operators/Values/smallerEqual Enumerations$EnumerationValue id=a8cbeb4b-6f1c-40b1-a61c-49a41e036886
27+
E DataWidgets/ClientActivities/Filter_Operators/Values/startsWith Enumerations$EnumerationValue id=ee407262-e97c-4526-8049-bcdb8a5a4222
28+
E DataWidgets/ClientActivities/Reset_All_Filters/Parameters/setToDefault JavaScriptActions$JavaScriptActionParameter id=5907f633-b16e-4342-aa75-999688f49818
29+
E DataWidgets/ClientActivities/Reset_All_Filters/Parameters/targetName JavaScriptActions$JavaScriptActionParameter id=34fa528f-ec78-4ba1-a376-3b0d8f7a107f
30+
E DataWidgets/ClientActivities/Reset_Filter/Parameters/setToDefault JavaScriptActions$JavaScriptActionParameter id=f75076f6-ca49-47a7-9009-430c49c74f0d
31+
E DataWidgets/ClientActivities/Reset_Filter/Parameters/targetName JavaScriptActions$JavaScriptActionParameter id=6ca675ab-fb8a-47eb-a019-3949ca081618
32+
E DataWidgets/ClientActivities/Set_Filter/Parameters/dateTimeValue JavaScriptActions$JavaScriptActionParameter id=9e60e6c7-94c6-4ccc-a7ed-83a316b02d6e
33+
E DataWidgets/ClientActivities/Set_Filter/Parameters/dateTimeValue_2 JavaScriptActions$JavaScriptActionParameter id=7cdc135c-a918-41b0-82ef-5c50da032d2b
34+
E DataWidgets/ClientActivities/Set_Filter/Parameters/numberValue JavaScriptActions$JavaScriptActionParameter id=7df0a59c-ad2d-4435-a070-b9e3bd189a4b
35+
E DataWidgets/ClientActivities/Set_Filter/Parameters/operators JavaScriptActions$JavaScriptActionParameter id=b628d107-432c-44f4-a6d6-cc0166dad434
36+
E DataWidgets/ClientActivities/Set_Filter/Parameters/stringValue JavaScriptActions$JavaScriptActionParameter id=7bfe3ee5-cf49-4d48-a350-9c21d9f6dbcb
37+
E DataWidgets/ClientActivities/Set_Filter/Parameters/targetName JavaScriptActions$JavaScriptActionParameter id=b9efa189-b022-4be4-83f5-bbcb09f2703e
38+
E DataWidgets/ClientActivities/Set_Filter/Parameters/useDefaultValue JavaScriptActions$JavaScriptActionParameter id=5aaa3e47-5b58-4c3e-8351-a1c57ec51f8d
39+
E DataWidgets/ModuleSecurity/ModuleRoles/User Security$ModuleRole id=5aaacdba-f89b-4f1a-b96a-6b8dd747d116
40+
U DataWidgets Projects$ModuleImpl id=555aa6f9-3f85-45f5-8b4d-6ef9f9e2ac3c h=61cb944b5ec2f115
41+
U DataWidgets/ClientActivities Projects$Folder id=a49038cb-c758-4ca8-a552-21779eddf828 h=ea1bbcc49d12a5af
42+
U DataWidgets/ClientActivities/Export_To_Excel JavaScriptActions$JavaScriptAction id=55540398-276a-4a36-91a9-ffbea3c4cd63 h=70dcbb49d431ccf0
43+
U DataWidgets/ClientActivities/Filter_Operators Enumerations$Enumeration id=2b12307c-c049-4274-ae34-b47e12dcf56a h=2647f6d2c1ab7c43
44+
U DataWidgets/ClientActivities/Reset_All_Filters JavaScriptActions$JavaScriptAction id=6702ba54-39e8-46fa-a10f-fb2c60a4d72b h=fb2e733653375058
45+
U DataWidgets/ClientActivities/Reset_Filter JavaScriptActions$JavaScriptAction id=f48fcbb3-bb27-4e69-b837-bb55fe7b46d3 h=f9d5ab24d6a251c3
46+
U DataWidgets/ClientActivities/Set_Filter JavaScriptActions$JavaScriptAction id=0eb3b9b8-0e5b-48d8-aadf-d6fe1d7bbae9 h=6a08908c2d1aa3f1
47+
U DataWidgets/DomainModel DomainModels$DomainModel id=85f2a814-7b24-431d-9ad3-5ad0571d9cc8 h=a0c27aa85656df84
48+
U DataWidgets/ModuleSecurity Security$ModuleSecurity id=507f43ba-eff1-4ba8-a8b3-1c7a918f55f6 h=de6a428c20b3ec5a
49+
U DataWidgets/ModuleSettings Projects$ModuleSettings id=4b11efe7-765e-4d2e-a5f3-68a738232015 h=5c8ae4348317b186

0 commit comments

Comments
 (0)