Repository navigation
v0.53.0
Fixed
-
A Laravel app now receives the run's log, including both warnings for a
graph that delivers nothing. The engine has always emittedlogevents,
among them the undelivered-edge and unresolved-route warnings pinned by
fancy-conformanceflow/run-diagnostics. ButFancyFlowManager's event
bridge sent them todefault => null. An in-process$onEventsaw them. A
queued run, the only kind a Laravel app runs, delivered none on either driver.
They now arrive as the newFancyFlow\Laravel\Events\WorkflowLog
(runId,level,message,nodeId,detail), the same fixNodeMessage
got one arm over. -
The
per_nodedriver no longer loses the undelivered-edge warning for a
skipped target. Each node job replays the graph and forwards only its own
node's events. A target whose only inbound edge could never deliver is
SKIPPED and never gets a job, so its warning was emitted inside another
node's replay and filtered out on every run.AdvanceWorkflowJobnow asks
the engine's rule when it records the skip, from the ports the claim rows
stored off the engine'snode-outputevents, and announces it once. A target
that runs still gets its warning from its own job, as before.The rule is now one class,
FancyFlow\Engine\UndeliveredEdges, used by both
FlowRunnerand the driver.tests/Durableruns the whole
flow/run-diagnosticstable through both queue drivers and expects the same
goldens as the in-process run. Without the bridge arm both drivers fail all
six warning rows; without the skip-time announcementper_nodefails the
three skipped-target rows.What you must do: nothing. To show these warnings, listen for
WorkflowLogwherelevel === 'warn'and readdetail.
Added
FancyFlowManager::emit(string $runId, RunEvent $event)delivers one engine
event to Laravel through the same bridge a run uses, honouring
fancy-flow.events. It is how the driver announces what no replay can
forward.- The
flow/run-diagnosticsconformance table runs here (fancy-conformance
0.24.0,tests/Parity/RunDiagnosticsConformanceTest.php). It pins this
runtime's two run-time warnings, the undelivered edge and the route taken on
an unresolved path, with exact messages and structured detail, so the Node,
Python and Rust engines can be held to them (fancy-flow#17). Its goldens came
from this runtime, and all 14 rows pass. Thefancy-conformancedev pin moves
from 0.23 to 0.24. No runtime code changed, so there is nothing to do.
Changed
-
NodeClaims::skip()returns whether this call settled the node (it returned
nothing before). This is internal to theper_nodedriver, and it is what
keeps two advances that compute the same skip from announcing it twice. -
The tag workflow is now
.github/workflows/publish.yml, namedPublish
(it wasrelease-gate.yml, "Release gate"). Every Particle-Academy package
publishes from that file under that name. What it does is unchanged: on a
v*tag it checks thatCHANGELOG.mdhas an entry for the version and that
the entry is the newest one, then publishes the GitHub release from that
entry. Packagist syncs from the tag and never reads the workflow file, so
nothing about how a release reaches Composer changes. The 0.51.0 note below
names the file by its old path, which was correct when it was written.What you must do: nothing. Only a script that looks runs up by the old
file (gh run list --workflow=release-gate.yml) needspublish.ymlinstead.