Skip to content

feat(cmmn): remove the casePlanState property and its drain (gated on the drain report) - #3776

Draft
rubenvdlinde wants to merge 2 commits into
developmentfrom
build/dq-l7-7
Draft

rubenvdlinde wants to merge 2 commits into
developmentfrom
build/dq-l7-7

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Do not merge yet

This PR removes the casePlanState property from the case schema. OpenRegister strips an undeclared property the next time a case is saved. Merged too early, it destroys every plan the drain has not moved.

Merge only when both are true on every instance that will get this release:

  1. occ dossiq:cmmn:migrate-case-plans --strict exits 0 and reports zero populated blobs.
  2. The same report lists zero unmappable cases.

It stays a draft until someone confirms that. After the merge there is no rollback short of a release rollback.

What this does

retire-cmmn-caseplanstate task 3.2, the last step of the removal.

  • casePlanState is gone from dossiq_register.json and dossiq_mock_register.json, with its three seeded example values.
  • caseType.handlingModel keeps its two values. The description of cmmn now says what happens: the published case model goes to OpenRegister's case layer when a case starts, and OpenRegister holds and moves the plan items.
  • Two caseModel descriptions named the retired engine and the blob. They are reworded, in English and Dutch.
  • The drain leaves in the same commit: lib/Service/CasePlanDrain/, occ dossiq:cmmn:migrate-case-plans, the MigrateCmmnCasePlans repair step, and CasePlanProjectionService::definitionForCaseType(), which only the drain called. With the property gone the drain has nothing to read.
  • CmmnRetirementTest now has an empty allowlist and asserts it stays empty. testTheBlobAndItsDrainAreGone keeps the property and the drain out.
  • The drain scenario leaves tests/e2e/cmmn-retirement.spec.ts: its command no longer exists. Run that scenario in the live pass of feat(cmmn): retire the local CMMN runtime, the case plan lives in OpenRegister only #3773, before this merges.

Versions: case 1.42.0, caseType 1.18.1, caseModel 1.0.2, register 0.20.33, app 0.4.47-unstable.20261012090000. Digests regenerated; the diff is those three schemas only. Whoever lands this takes the highest register version on development plus one and regenerates the digests.

Base and stack

Stacked on #3773 (build/dq-l7-6), which is stacked on merge train 2 (#3742). Land order: #3742, #3773, the drain gate, then this. Until #3773 lands the diff against development shows both.

Verified

  • phpunit --no-coverage over CmmnRetirementTest, tests/Unit/Settings, Repair, AppInfo, Architecture, Command, Controller, CasePlanProjectionServiceTest and DemoDataServiceTest: exit 0, 2267 tests.
  • phpcs, phpmd, phpstan and psalm on CasePlanProjectionService.php: exit 0 each.
  • check:schema-l10n: 0 uncovered. test:l10n and check:l10n-js: OK. vitest caseSearchDeclarations: 8 pass. prettier and eslint on the changed specs: clean.
  • openspec validate retire-cmmn-caseplanstate --strict: valid.
  • Not run: the full check:strict, the Hydra gates and Playwright. CI is the full check (decision 149).

retire-cmmn-caseplanstate 3.2. Gated: merge only after the drain report
shows zero populated blobs and zero unmappable cases. OpenRegister strips
an undeclared property on save, so an earlier merge destroys the blobs
that are left.

case 1.42.0, caseType 1.18.1, caseModel 1.0.2, register 0.20.33. The
drain command, its repair step and CasePlanDrain leave in this commit;
CmmnRetirementTest's allowlist is empty.
Keeps the draft current after trains 1 to 3. Three version conflicts, all
taken as the higher plus this branch's own step: register 0.20.38
(development 0.20.37), case 1.44.0 (development 1.43.0, this branch
removes casePlanState), caseType 1.19.1 (development 1.19.0, this branch
redescribes handlingModel), app version 0.4.47-unstable.20261012154724.
Schema digests regenerated with tools/schema-version-digests.php.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ e41e2ee

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-vue3-compile ✅
test-l10n ✅
format ✅
check-schema-l10n ✅
check-l10n-js ✅
check-debt-ratchet ❌
check-types-e2e ✅
composer ✅ ✅ 109/109
npm ✅ ✅ 659/659
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit 🚨 NO VERDICT — enabled but never ran
Newman ⏭️
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ⏭️

Quality workflow — 2026-10-12 14:00 UTC

Download the full PDF report from the workflow artifacts.

This branch has not been deployed

No deployments
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