Skip to content

feat(dossiq): declare ticket to dossiq as a case type - #1732

Merged
rubenvdlinde merged 2 commits into
developmentfrom
feat/dossiq-case-type-provider
Sep 2, 2026
Merged

feat(dossiq): declare ticket to dossiq as a case type#1732
rubenvdlinde merged 2 commits into
developmentfrom
feat/dossiq-case-type-provider

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Declares pipelinq's ticket to dossiq as a case type. A ticket is a case: dossiq owns case management, and pipelinq contributes the kind of work it handles rather than running a parallel system that merely resembles one.

Pairs with ConductionNL/dossiq#1646, which adds the registry that discovers this.

The class is deliberately plain

Dossiq finds it by convention FQCN (OCA\{App}\Dossiq\CaseTypeContributionProvider) and duck-types it via method_exists(), never instanceof — the same mechanism portaliq uses for PortalContributionProvider (ADR-046).

So: no dossiq imports, no implements, no info.xml dependency, no constructor dependencies. Without dossiq installed the class is inert and pipelinq behaves exactly as before, which is what { "id": "dossiq", "required": false } in the manifest promises.

An interface would read better and would make pipelinq hard-depend on dossiq. That is the coupling the pattern exists to avoid.

One case type, not three

The three ticket kinds stay one case type with a ticketType discriminator, mirroring the storage: unify-ticket-supertype folded request, complaint and interaction into a single ticket schema keyed by that field. Declaring three case types would re-split, on dossiq's side, exactly what that change joined.

Verified

5/5 tests, and they guard the contract rather than an interface no compiler enforces:

  • the class takes no constructor dependencies and imports nothing
  • the probed method keeps its name
  • ticket carries the identifier and title the registry requires
  • the three kinds stay subtypes of one case type

Worth recording from the mutation run: renaming getCaseTypes to getCasetypes does not fail these, because PHP method names are case-insensitive and method_exists still matches. A genuine rename fails 3 tests. So casing drift there is harmless; a real rename makes the provider silently invisible, with nothing in any log naming pipelinq.

phpcs clean. Committed through the GitHub API because another session holds 75 files of in-flight e2e work in the local checkout.

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/pipelinq @ 045495a

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
check-vue-demi
test-l10n
format
check-schema-l10n
check-l10n-js
composer ✅ 106/106
npm ✅ 637/637
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright ⏭️ deferred — runs on the promotion into beta/main, not on a pull request into development
Hydra gates

Quality workflow — 2026-09-02 07:06 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 6b7c324 into development Sep 2, 2026
50 checks passed
@rubenvdlinde
rubenvdlinde deleted the feat/dossiq-case-type-provider branch September 2, 2026 08:42
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