Skip to content

model-apps: re-vendor the SDK bundle (blocked only by one stale contract test; needs live verification) #457

Description

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

  1. Re-vendor and commit the bundle.
  2. 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.
  3. Live end-to-end verification on a real environment.
  4. Diff the SDK changelog between the vendored version and HEAD for behaviour changes the contract tests do not cover.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions