Plugin
model-apps
Summary
The vendored SDK bundle (plugins/model-apps/scripts/vendor/cds-maker-sdk.cjs) is behind the first-party SDK. A re-vendor is a one-test change — but it needs live verification before it ships, which is why this is an issue rather than a PR.
Filing because the diagnosis below was previously only in a reviewer's local notes, and it corrects an earlier claim that three contract tests blocked the uptake.
Reproduce
# 1. build the SDK (from packages/cds-maker-sdk in the first-party repo)
npm run build
# 2. re-vendor (from this repo's root)
node plugins/model-apps/scripts/_vendor-build/build.js --sdk <path-to-sdk-repo>
# -> 572 KB -> 616 KB
# 3. run the suite
cd plugins/model-apps && node scripts/run-tests.js
Result: 1 failure, not three. The other two previously suspected (pushArtifact 412 signalling) do not reproduce.
The single failure is a stale test, not an SDK problem
scripts/tests/vendor-sdk-smoke.test.js pins the OLD deleteAppCascade contract — that a failed cascaded generative-page delete sets success=false and lands in failures[].
The newer SDK deliberately does not cascade generative-page deletes at all. A uxagentproject is referenced by an app, not owned by one (another app's sitemap, or a form's UxAgentControl RefId, can point at the same row), so it reports the page in a new retained[] array and leaves the decision to the caller. Probed against the re-vendored bundle:
{ "success": true, "deleted": [{"type":"app"}], "failures": [], "retained": [{"type":"genPage"}] }
with no DELETE attempted against the page.
scripts/lib/sdk-teardown.js is already written for this — its comments name retained explicitly and it deletes only the pages the build's own page manifest records as authored, letting Dataverse's dependency graph reject anything still referenced. Only the contract test lagged behind the code.
With the test updated to pin retained[], the full suite is 1499 pass / 0 fail on the new bundle.
Why this is not just a PR
Offline tests use mocks, so a green suite does not prove the new bundle behaves correctly against real Dataverse. A re-vendor changes runtime behaviour across every phase — build, verify, teardown, genpage. Before merging it needs a live end-to-end run (build → verify → teardown) on a real environment, at minimum covering the artifact phases the contract tests only mock.
Work required
- Re-vendor and commit the bundle.
- Update the
deleteAppCascade contract test to assert retained[] — keep it pinned, since silently reverting to a cascade would delete a page another app still surfaces.
- Live end-to-end verification on a real environment.
- Diff the SDK changelog between the vendored version and HEAD for behaviour changes the contract tests do not cover.
Plugin
model-apps
Summary
The vendored SDK bundle (
plugins/model-apps/scripts/vendor/cds-maker-sdk.cjs) is behind the first-party SDK. A re-vendor is a one-test change — but it needs live verification before it ships, which is why this is an issue rather than a PR.Filing because the diagnosis below was previously only in a reviewer's local notes, and it corrects an earlier claim that three contract tests blocked the uptake.
Reproduce
Result: 1 failure, not three. The other two previously suspected (
pushArtifact412 signalling) do not reproduce.The single failure is a stale test, not an SDK problem
scripts/tests/vendor-sdk-smoke.test.jspins the OLDdeleteAppCascadecontract — that a failed cascaded generative-page delete setssuccess=falseand lands infailures[].The newer SDK deliberately does not cascade generative-page deletes at all. A
uxagentprojectis referenced by an app, not owned by one (another app's sitemap, or a form'sUxAgentControlRefId, can point at the same row), so it reports the page in a newretained[]array and leaves the decision to the caller. Probed against the re-vendored bundle:{ "success": true, "deleted": [{"type":"app"}], "failures": [], "retained": [{"type":"genPage"}] }with no DELETE attempted against the page.
scripts/lib/sdk-teardown.jsis already written for this — its comments nameretainedexplicitly and it deletes only the pages the build's own page manifest records as authored, letting Dataverse's dependency graph reject anything still referenced. Only the contract test lagged behind the code.With the test updated to pin
retained[], the full suite is 1499 pass / 0 fail on the new bundle.Why this is not just a PR
Offline tests use mocks, so a green suite does not prove the new bundle behaves correctly against real Dataverse. A re-vendor changes runtime behaviour across every phase — build, verify, teardown, genpage. Before merging it needs a live end-to-end run (build → verify → teardown) on a real environment, at minimum covering the artifact phases the contract tests only mock.
Work required
deleteAppCascadecontract test to assertretained[]— keep it pinned, since silently reverting to a cascade would delete a page another app still surfaces.