Problem/Motivation
The same audit as #3633206: Keep concurrent writes on incident resume, uninstall orchestra_server cleanly, use the resolved Kessai client, keep node id case, and fix five more defects found these in code and documentation.
Code
- N1. About thirty comments, docblocks and one exception message call a process instance a run (ProcessInstance::setState(), InstanceRecovery, RemoteChildPoller, the payment resolvers, OrchestraClientInterface::startProcess(), the instance-detail CSS and others). Code says instance.
- N2. 154 class constants are untyped beside 209 typed ones, sometimes in one class. PHP 8.3 is the floor, so all of them take their type.
- N3. A routing comment and the translation checker say visitor, and the French preview guide says jonction ET and jonction OU where the English uses wait_all and matching.
- D1. QuorumJoin and Reassign each build the inner-plugin subforms toggled by #states, and the input name from #parents is computed three times (also in InteractionPluginConfigTrait). Reassign hand-rolls
submitInnerSettings().
- D2. The raw input of a subform is read by walking #parents in five places (OutcomeConfigTrait, VariablesTask, PluginSettingsSubformTrait, ExternalInteraction, PayableResolverConfigTrait), and the
cm_node_features state key is declared twice.
- D3. OrchestraLoggerTrait names the channel once, yet orchestra_remote_process writes
get('orchestra') by hand at six places, and orchestra_interaction_webform and orchestra_ui log to channels of their own, which operators filtering on Orchestra never see.
- D4. The initiator filter value is parsed twice, in InstanceFilterForm and InstanceListForm.
Documentation
- Doc1. SubprocessMappingTrait::parseMap() documents
left: right; the syntax is name|other.
- Doc2. CapabilityGateway and InteractionGatewayInterface describe development history (Phase A, a gateway to come later) instead of the gateways that exist.
- Doc3. TenantLimitedOptionsTrait says two filters use it; three do.
- Doc4. orchestra.api.php does not document the identity proof producer and verifier info alter hooks.
- Doc5. docs/architecture.md lists three config entities of five, misses the IncidentKind plugin type and four submodules.
- Doc6. docs/concepts.md counts seven kernel task types of eight (Notify); docs/content.md says the initiator is start()'s last argument.
- Doc7. docs/distributed.md leaves listDefinitions() out of the contract table.
- Doc8. docs/extending.md leaves IncidentKind out of the plugin types and says every plugin manager implements CapabilityPluginManagerInterface.
- Doc9. docs/roadmap.md, docs/concepts.md, docs/views.md and the orchestra_views README name dashboards that no longer ship (completed processes, My tasks).
- Doc10. The orchestra_audit_trail README misses the token action ignored, the orchestra_interaction README places the feature outside
features, and the orchestra_vbo README spells cancelled.
Proposed resolution
One commit per finding, no behavior change except the logging channel of D3, which gets a test.
Remaining tasks
AI-Generated: Yes (Claude Code was used to audit the module, draft this issue summary, and write the code and tests on the merge request.)
Comments
Comment #3
mably commentedComment #5
mably commented