Skip to main content

Module derivation

Module derivation 

Source
Expand description

Derivation moves — the edge of the experiment pool.

VisTrails’ insight about workflow-evolution provenance is that the interesting object is not the workflow but the change applied to its parent. A tree of records tells you what you ran; a tree of records plus the move on each edge tells you what you tried, and whether it worked.

A DerivationMove is stored as a field of the child record, never as a separate journal line. One node, one edge, one append: an edge can never end up orphaned by a crash between two writes, and the journal’s append-only crash safety is not duplicated.

derive is a pure function over two records, so the same code serves both automatic capture and the on-demand kb_diff tool. When the parent carries no architecture — a legacy record, or one whose run directory is gone — the result is a single Change::Unspecified. Saying “something changed, and I cannot say what” is worth more than inventing a plausible diff.

Structs§

DerivationMove
The edge from a parent experiment to this one: what was changed, and what it did to the numbers.
MetricDelta
How one metric moved between parent and child.

Enums§

Change
One atomic difference between a parent experiment and its child.

Functions§

derive
Diff two experiment records into the move that separates them.