Skip to content

release 1.42.0: CAP 10.2 upgrade + draft_admin_integrity - #2973

Merged
jung-thomas merged 24 commits into
mainfrom
DEV
Nov 1, 2026
Merged

jung-thomas merged 24 commits into
mainfrom
DEV

Conversation

@jung-thomas

Copy link
Copy Markdown
Contributor

Summary

Promote DEV → main for the 1.42.0 production release.

The triggering change is the CAP 10.2 upgrade (#2966), which also unblocks the draft_admin_integrity optimization (#2967). This release also retires the decommissioned btp-onboarding tutorials.

Note: the 1.42.0 version bump + what's new digest land via release PR #2972 (worktree-release-1.42.0 → DEV). This promotion carries them to main once #2972 is merged into DEV.

Highlights

Upgrades

Features / Performance

Maintenance

⚠️ Deploy callout — constraint ordering (per env)

draft_admin_integrity is ON. Land the generated HANA cascade constraints (.hdbconstraint, NOT VALIDATED) in the target env BEFORE this MTA deploys there. If the flag serves without the constraints, orphaned draft rows accumulate (draft-table cruft only — no active-content data loss). Follow the DEV → test → PROD ordering in the runbook: docs/developers/reference/tutorials-ims-gotchas.md → "draft_admin_integrity migration runbook".

Deploy plan (after merge)

  • Prod deploy runs from the primary checkout on main (deploy-mta Step 0 refuses a worktree); blue-green, operator-gated swap
  • Verify HANA cascade constraints are present on PROD before deploying ([draft-integrity-preflight] INFO … verified (26/26) on DEV is the green signal)
  • Content publish into PROD after deploy (MTA does not re-bake tutorial BLOBs)

Test plan

…rding

chore: retire btp-onboarding repo — remove 7 btp-ea-onboard-* slugs
Bumps change-tracking 2.2.3, hana 3.1.2, ord 1.10.2, sqlite 3.1.2,
telemetry 2.2.0, websocket 1.11.4.

Holds @cap-js/ai at ~1.1.0 and @cap-js/mcp at 1.3.0 — both are
@sap/cds >=8/9 peers (10.2-compatible) and their newer releases carry
breaking changes orthogonal to the runtime upgrade:
- @cap-js/mcp 1.5.0 refactored lib/tools.js, removing the deep-imported
  getInstructions/register* symbols used by srv/lib/mcp-compose-router.js.
- @cap-js/ai 1.3.0 added startup Hugging Face model discovery requiring
  @huggingface/hub, turning every dev/test/CI boot into a potential HF
  download. Both bumps belong in dedicated follow-up issues.
srv-qa is a separate deployable CAP module with its own lockfile; the
check-srv-qa-dep-parity static guard requires exact-range parity with
root for @sap/cds and @cap-js/hana. Regenerated srv-qa/package-lock.json
(resolves cds 10.2.2 / hana 3.1.2).
…dmin_integrity)

With cds.fiori.draft_admin_integrity on, discarding a Mission/Group draft
cascade-deletes its draft CompletionPathItems/GroupPathItems at the DB level,
bypassing the per-row after('DELETE') reconcile hooks. Adds root
after('DISCARD', '<Entity>.drafts') handlers that fire reconcile for the active
entity's legacyId, restoring rollup correctness. The existing child DELETE
handlers stay (they still fire for direct programmatic deletes).

Also updates admin-drafts.test.js cleanup: under the flag, deleting an active
entity immediately after draftActivate hits "a draft exists" (403) on SQLite
until the residual draft is discarded first.
…grity-2909

feat(cap): adopt draft_admin_integrity (optimized draft deletion) #2909
GridTemplates and FeaturedTasks tests were not updated alongside
admin-drafts.test.js in #2909. Under cds.fiori.draft_admin_integrity
(CAP 10.2) a residual draft lingers after draftActivate on SQLite,
blocking DELETE(IsActiveEntity=true) with DRAFT_ACTIVE_DELETE_FORBIDDEN_DRAFT_EXISTS.

Applies the same two-step discard-then-delete pattern used in
admin-drafts.test.js to both affected test cleanups.
…-tests

fix(test): apply draft_admin_integrity cleanup to 2 missed tests (#2909)
Adds a committed hybrid test proving that, with cds.fiori.draft_admin_integrity
on, discarding a Mission draft reconciles the parent rollup via the root
after('DISCARD','Missions.drafts') handler — the cascade removes the draft
CompletionPathItems child at the DB level, bypassing the per-row after('DELETE')
reconcile, so this is the end-to-end HANA assertion the SQLite unit test cannot
make.

Runs in the post-deploy test:hybrid CI job (cds bind --exec … --project hybrid),
guarded by isSafeForWrites(). Idempotent: supporting rows keyed by high legacyId
and cleaned in afterAll; the Mission draft is cleared via the HTTP active delete
(removes draft + active together, avoiding orphaned draft-shadow rows that a
plain active-table delete would leave).
…est-2909

test(hybrid): draft DISCARD reconcile on real HANA (#2909)
…preflight-2968

feat(serve): draft-integrity-preflight startup check for HANA cascade constraints (#2968)
Bumps .deploy/mta.yaml 1.41.8 → 1.42.0 and refreshes
hugo/data/whats_new.json with 8 new entries for the PRs merged to DEV
since 1.41.8.

Highlights since 1.41.8:
- #2966 upgrade to CAP 10.2 (cds 10.2.2, cds-dk 10.2.0, cap-js plugins)
- #2967 enable cds.fiori.draft_admin_integrity (optimized draft deletion)
- #2971 draft cascade constraint startup preflight check
- #2969 fix 2 test files missed in draft_admin_integrity cleanup pass
- #2970 hybrid HANA test for draft DISCARD reconcile
- #2965 retire btp-onboarding repo (remove 7 btp-ea-onboard-* slugs)
chore(release): bump MTA version to 1.42.0
@jung-thomas
jung-thomas marked this pull request as ready for review November 1, 2026 18:29
@jung-thomas
jung-thomas merged commit 11c2e16 into main Nov 1, 2026
9 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant