Skip to content

docs(openspec): propose retiring Integriq's own flow engine - #1796

Merged
rubenvdlinde merged 1 commit into
developmentfrom
docs/retire-integriq-flow-schema
Sep 1, 2026
Merged

docs(openspec): propose retiring Integriq's own flow engine#1796
rubenvdlinde merged 1 commit into
developmentfrom
docs/retire-integriq-flow-schema

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Proposal only. No code.

Integriq runs its own flow engine. visual-flow-orchestration declares a flow schema with an ordered steps[] pipeline, plus flow_run and flow_run_log, and FlowRunnerService executes it. OpenRegister runs one too, with a nodes/edges graph, triggers, an execution mode and 22 node types.

The slug collision is the symptom, not the disease

Measured on the dev instance 2026-08-31: flow is declared by both openregister and integriq. A schema slug is global on a shared OpenRegister, so a bare "$ref": "flow" resolves to whichever row SchemaMapper::find() fetches first.

Renaming Integriq's slug clears that in an afternoon. It also leaves the fleet with two flow engines, which is the more expensive outcome: every later flow feature then has to be built twice.

openregister flow integriq flow
shape nodes + edges graph ordered steps[]
start trigger catalog, cron, executionMode none
step vocabulary 22 node types call, mapping, synchronization, event, approval, branch
properties 14 7

They share name and description.

The gap that kept them separate is already being closed

OpenRegister has no node that makes an outbound call and none that runs a synchronization, which is Integriq's whole purpose. The existing integriq-flow-nodes change (0/20) contributes openconnector.source-call and openconnector.synchronization-run through RegisterFlowNodesEvent, the seam OpenRegister already ships for apps to add node types without patching the engine.

This change depends on it and adds what remains:

integriq step openregister node
call openconnector.source-call (integriq-flow-nodes)
synchronization openconnector.synchronization-run (integriq-flow-nodes)
mapping MapNode
branch RouterNode / SwitchNode
event needs confirming
approval no node exists — contributed here

The pre-implementation gate

Three questions must be answered before Task 1, not after:

  1. PO sign-off on the editor. Users lose Integriq's step-list editor and gain OpenRegister's visual flow builder. That is a UX decision.
  2. Does an event-emit node exist? If not, this change grows by one more contributed node.
  3. How many live flow objects does each instance carry? A migration whose blast radius is unmeasured is a migration whose rollback is unplanned.

How this was found

Building gate-106 (cross-app-schema-slug, ConductionNL/.github#659) meant generating a fleet slug-ownership baseline. flow came back as the one remaining two-app claim that is a genuine shadowing of an OpenRegister core schema, rather than two apps meaning different things by a common word.

🤖 Generated with Claude Code

Integriq runs its own flow engine. visual-flow-orchestration declares a `flow`
schema with an ordered steps[] pipeline, plus flow_run and flow_run_log, and
FlowRunnerService executes it. OpenRegister runs one too, with a nodes/edges
graph, triggers, an execution mode and 22 node types.

The slug collision is the symptom. Measured on the dev instance 2026-08-31,
`flow` is declared by both openregister and integriq, so a bare "$ref": "flow"
resolves to whichever row SchemaMapper::find() fetches first. Renaming
Integriq's slug clears that in an afternoon and leaves the fleet with two flow
engines, which is the more expensive outcome: every later flow feature then
has to be built twice.

The gap that kept them separate is already being closed. OpenRegister has no
node that makes an outbound call and none that runs a synchronization, which
is Integriq's whole purpose. The existing integriq-flow-nodes change
contributes both through RegisterFlowNodesEvent, the seam OpenRegister already
ships. This change depends on it and adds what remains: an approval node, the
steps-to-graph migration, retiring FlowRunnerService, and removing the schema.

Proposal only. No code, and the pre-implementation gate holds three questions
that must be answered before Task 1: PO sign-off on losing the step-list
editor, whether an event-emit node exists, and how many live flow objects
each instance carries.

Found while building gate-106 (cross-app-schema-slug): generating its fleet
baseline surfaced `flow` as the one remaining two-app claim that is a genuine
shadowing of an OpenRegister core schema rather than two apps meaning
different things by a common word.
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/integriq @ 2cb7385

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
build
check-specs
test-l10n
format
check-schema-l10n
check-l10n-js
composer ✅ 141/141
npm ✅ 537/537
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-01 09:45 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 366856e into development Sep 1, 2026
51 checks passed
@rubenvdlinde
rubenvdlinde deleted the docs/retire-integriq-flow-schema branch September 1, 2026 09:46
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