Source
Floor 1 of the cloud framework re-cut (objectstack-ai/cloud#2332, PR objectstack-ai/cloud#2423). The maintainer's ruling recorded on objectstack-ai/cloud#2332 on 2026-09-28 (verbatim) is 「改 HotCRM 再抬版本(推荐)」: fix HotCRM, then move cloud's .hotcrm-sha. Tracked under epic objectstack-ai/cloud#2440.
What breaks
At objectstack main (spec 17.5.0), MetadataPlugin._parseAndRegisterArtifact refuses retired dashboard keys:
`dashboard.widgets[].chartConfig.type` was removed in @objectstack/spec 17.5.0
`dashboard.widgets[].chartConfig.xAxis` was removed in @objectstack/spec 17.5.0
`dashboard.widgets[].chartConfig.yAxis` was removed in @objectstack/spec 17.5.0
Because of that, cloud's blocking gate apps/objectos-ee test:hotcrm-acceptance fails: serve exits during boot with code 1 against the pinned hotcrm 427c98535de3. That is the only red check on PR objectstack-ai/cloud#2423.
Measured on hotcrm main 2f7b2326 (2026-09-28)
There are 16 chartConfig: { blocks, all in dashboard sources:
| file |
blocks |
src/sales/dashboards/activity.dashboard.ts |
4 |
src/sales/dashboards/crm.dashboard.ts |
3 |
src/sales/dashboards/sales.dashboard.ts |
4 |
src/service/dashboards/service.dashboard.ts |
5 |
Command: git grep -n "chartConfig: {" origin/main -- src/. The @objectstack/spec dependency is still 17.4.0.
The dev on objectstack-ai/cloud#2332 probed a hosted tenant kernel at the new pin with this artifact. It registered all 5 dashboards, so the refusal sits on the EE composed-artifact boot path only.
Direction
Remove the three retired keys, and any chartConfig block that is left empty or inert, from those widgets. Verify against the spec 17.5.0 dashboard schema at objectstack main which chartConfig keys survive; do not assume. Dataset-bound widgets already take their chart type from the widget itself (see the comment in src/sales/dashboards/shared-widgets.ts). Keep what each dashboard shows unchanged. Do not route around a platform gap inside hotcrm: if a removed key carried behaviour that nothing else can express, stop and report it.
Acceptance
git grep -nE "chartConfig" -- src/ shows none of type / xAxis / yAxis under chartConfig.
- hotcrm's own build and tests pass, and the changeset gate is satisfied.
- The composed hotcrm artifact boots on objectstack
main. The acceptance proof is cloud's test:hotcrm-acceptance passing once cloud's .hotcrm-sha moves to the merge commit, which happens on objectstack-ai/cloud#2332.
Source
Floor 1 of the cloud framework re-cut (objectstack-ai/cloud#2332, PR objectstack-ai/cloud#2423). The maintainer's ruling recorded on objectstack-ai/cloud#2332 on 2026-09-28 (verbatim) is 「改 HotCRM 再抬版本(推荐)」: fix HotCRM, then move cloud's
.hotcrm-sha. Tracked under epic objectstack-ai/cloud#2440.What breaks
At objectstack
main(spec 17.5.0),MetadataPlugin._parseAndRegisterArtifactrefuses retired dashboard keys:Because of that, cloud's blocking gate
apps/objectos-ee test:hotcrm-acceptancefails:serveexits during boot with code 1 against the pinned hotcrm427c98535de3. That is the only red check on PR objectstack-ai/cloud#2423.Measured on hotcrm
main2f7b2326(2026-09-28)There are 16
chartConfig: {blocks, all in dashboard sources:src/sales/dashboards/activity.dashboard.tssrc/sales/dashboards/crm.dashboard.tssrc/sales/dashboards/sales.dashboard.tssrc/service/dashboards/service.dashboard.tsCommand:
git grep -n "chartConfig: {" origin/main -- src/. The@objectstack/specdependency is still17.4.0.The dev on objectstack-ai/cloud#2332 probed a hosted tenant kernel at the new pin with this artifact. It registered all 5 dashboards, so the refusal sits on the EE composed-artifact boot path only.
Direction
Remove the three retired keys, and any
chartConfigblock that is left empty or inert, from those widgets. Verify against the spec 17.5.0 dashboard schema at objectstackmainwhichchartConfigkeys survive; do not assume. Dataset-bound widgets already take their chart type from the widget itself (see the comment insrc/sales/dashboards/shared-widgets.ts). Keep what each dashboard shows unchanged. Do not route around a platform gap inside hotcrm: if a removed key carried behaviour that nothing else can express, stop and report it.Acceptance
git grep -nE "chartConfig" -- src/shows none oftype/xAxis/yAxisunderchartConfig.main. The acceptance proof is cloud'stest:hotcrm-acceptancepassing once cloud's.hotcrm-shamoves to the merge commit, which happens on objectstack-ai/cloud#2332.