The pre-alpha12 audit found a set of localized Views and entity-model issues, none critical, worth clearing before the alpha.
P1 (major): the Current step Views column is a per-row N+1. CurrentStep::render() calls the resolver once per row and there is no preRender batching; it is the only list column that breaks the module batching discipline. The shipped my-instances view at 25 rows adds about 50 token queries for this one column. Fix: add a batch resolver method loading all parked tokens for the page in one query and a preRender pass, mirroring the InstanceStatus field.
U1 (major): the State column ships sortable but cannot sort. The example views keep sortable true on the State column from when it was a raw entity field, but the custom handler has a no-op query(), so a header click emits an order-by against an unselected alias. Fix: set the column not-sortable in the three example views and override clickSortable() to FALSE on the InstanceState and InstanceStatus field handlers.
U4 / U5 (minor): cacheability gaps in the Status Views handlers. The InstanceStatus field renders orchestra_status config entities but adds no cache tags for them, so a relabel or repalette does not invalidate cached rows; the InstanceStatus filter is tenant-scoped but declares no orchestra_tenant cache context, so its option list can replay across tenant domains. Fix: bubble the status list cache tag from the field and add the tenant cache context to the filter.
P2 (minor): orchestra_variable is indexed on instance only while two shipped read paths filter instance plus name. Bounded impact; add a compound index on instance and name.
N1 (minor): Incident.resolved_by is written but never readable (no accessor on the entity or interface). Fix: add a getResolvedById() accessor.
N2 (minor): Workflow declares no config dependency on the Status entities its nodes reference. Deleting a status config entity succeeds silently while nodes still carry its id. Runtime degrades gracefully. Fix: add calculateDependencies() and onDependencyRemoval() that strips (does not cascade-delete) references, or document the soft-reference contract.
N3 (minor): the SubprocessTask retry default is an int under a string-typed schema fallback. Add an explicit integer schema type for the retry node setting.
N4 (minor): the Workflow layout property docblock omits the persisted flowLabels and nodeLabels keys.
U6 (minor): the Status list builder shows the raw tenant machine id and raw CSS class where the form shows the tenant label and palette name. Fix: resolve the tenant label and map the class to its palette label.
One merge request, with kernel tests pinning the Views State and Status filter query behavior, the status-history duplicate collapse, status-term deletion while referenced, and the status token edge cases, plus French translations.
Issue fork orchestra-3611507
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #3
mably commentedComment #5
mably commented