<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Data Attribution on Eigenform Continuous Learning Tool Tips</title><link>https://www.eigenform.ai/continuous-learning-tool-tips/tags/data-attribution/</link><description>Recent content in Data Attribution on Eigenform Continuous Learning Tool Tips</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Fri, 13 Nov 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://www.eigenform.ai/continuous-learning-tool-tips/tags/data-attribution/index.xml" rel="self" type="application/rss+xml"/><item><title>Reproducible ML Pipelines and Recipe Hash Provenance</title><link>https://www.eigenform.ai/continuous-learning-tool-tips/reproducible-ml-pipelines/</link><pubDate>Fri, 13 Nov 2026 09:00:00 +0800</pubDate><guid>https://www.eigenform.ai/continuous-learning-tool-tips/reproducible-ml-pipelines/</guid><description>&lt;figure class="article-image"&gt;
 &lt;picture&gt;
 &lt;source type="image/webp" srcset="https://www.eigenform.ai/continuous-learning-tool-tips/reproducible-ml-pipelines/cover-reproducible-ml-pipelines_hu_e3d357e01de5167a.webp 480w, https://www.eigenform.ai/continuous-learning-tool-tips/reproducible-ml-pipelines/cover-reproducible-ml-pipelines_hu_b1c92986d62e2e2d.webp 800w, https://www.eigenform.ai/continuous-learning-tool-tips/reproducible-ml-pipelines/cover-reproducible-ml-pipelines_hu_2073f7cfeb005a71.webp 1200w" sizes="(min-width: 900px) 800px, 100vw"&gt;
 &lt;source type="image/webp" srcset="https://www.eigenform.ai/continuous-learning-tool-tips/reproducible-ml-pipelines/cover-reproducible-ml-pipelines_hu_ef36cbeacd70d744.webp 480w, https://www.eigenform.ai/continuous-learning-tool-tips/reproducible-ml-pipelines/cover-reproducible-ml-pipelines_hu_36bc4d40ff11b123.webp 800w, https://www.eigenform.ai/continuous-learning-tool-tips/reproducible-ml-pipelines/cover-reproducible-ml-pipelines_hu_3b25c7cac9cb90b.webp 1200w" sizes="(min-width: 900px) 800px, 100vw"&gt;
 &lt;img src="https://www.eigenform.ai/continuous-learning-tool-tips/reproducible-ml-pipelines/cover-reproducible-ml-pipelines_hu_36bc4d40ff11b123.webp" alt="Reproducible ML pipelines as an etched parchment engraving: on the left, cards pass through a brass gear drum, each output card tied by a red thread to its parent and the finished stack stamped with a fingerprint wax seal; on the right, the sealed stack in a wooden crate slides on rails past a gauge and ruler into a locked stone vault" title="Row lineage, recipe hash and atomic publication: the checks behind each training export" width="1672" height="941" loading="eager" fetchpriority="high" decoding="async" class="zoomable" data-full-url="https://www.eigenform.ai/continuous-learning-tool-tips/reproducible-ml-pipelines/cover-reproducible-ml-pipelines.webp"&gt;
 &lt;/picture&gt;&lt;figcaption&gt;Row lineage, recipe hash and atomic publication: the checks behind each training export&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Static supervised fine-tuning pipelines treat dataset preparation as a one-off preprocessing script, but continual agent loops regenerate their own fine-tuning corpus at every generation boundary. If a post-collection transform silently drops a metadata key, mutates a prompt without recording lineage, or leaves a partially flushed JSONL file on disk during a process crash, the resulting weight update permanently diverges from its intended specification. In &lt;code&gt;nsl-workbench&lt;/code&gt;, &lt;code&gt;src/training_data/transforms.py&lt;/code&gt; we close these failure modes by validating a strict 19-field row schema with &lt;code&gt;parent_row_id&lt;/code&gt; ancestry checks, compiling sequential &lt;code&gt;TrainingDataTransform&lt;/code&gt; stages into a canonical SHA-256 &lt;code&gt;recipe_hash&lt;/code&gt; with exact row-level deltas, and enforcing atomic directory publication verified by path canonicality and cryptographic digests before each training pass begins.&lt;/p&gt;</description></item></channel></rss>