Repository navigation
feat(flow): each step records when it started, and a node can write log lines - #4674
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
FlowEngine: every step entry in the run log carriesstartedAt, the moment the step began, ISO 8601 with milliseconds in UTC (2026-10-07T08:41:02.380+00:00). All step statuses (completed, failed, stopped, suspended, pinned), on both the single-stream and the stream walk.FlowStepReport::line(level, message): a node appends a timestamped line to its step's entry underreport.lines({at, level, message}). Levelsinfo,success,warning,error; anything else is recorded asinfo. At most 50 lines per step; past that the last line says how many were left out, so a node writing in a loop cannot grow the log without bound. Lines clear with the rest of the report after each hop.Why
The run view in
@conduction/nextcloud-vue(#1739, boards PqFlowRun / PqFlow / DqFlow) draws each step's log lines with an outcome pill and a time. Without a start per step the client adds durations up from the run's start, and without lines it can only restate the step's status. The library already readsstartedAtandreport.lineswhen present, so this lands without a library change. Nodes adoptline()per app in follow-ups; a node that does not call it is unaffected.Verified locally
FlowStepReportTest(3, new) andFlowEngineTest(26, one new test plus astartedAtassertion on the pinned step): 29 passed. Both fail on development (noline(), nostartedAt).composer check:strictonce: lint, migration-version, phpcs, phpmd, psalm ("No errors found"), phpstan ("No errors") green; test:all 26,289 tests, 15 errors, the same inheritedAuditTrail*/DraftRemovalAuditRowDB tests that need the server'sOC\DB\Schema\Table(red on development too, as recorded on feat(flow-runs): per-flow run summary, and since/flowIds on the run history #4672).info.xml is untouched.
AI-assisted: written with Claude Code.