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§
- Derivation
Move - The edge from a parent experiment to this one: what was changed, and what it did to the numbers.
- Metric
Delta - 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.