') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); feat(core): add lineage.enabled to WorkflowSettings and ProjectConfig by rafal-hawrylak · Pull Request #2235 · dataform-co/dataform · GitHub
Skip to content

feat(core): add lineage.enabled to WorkflowSettings and ProjectConfig - #2235

Merged
rafal-hawrylak merged 1 commit into
mainfrom
feat-lineage-enabled
Aug 5, 2026
Merged

feat(core): add lineage.enabled to WorkflowSettings and ProjectConfig#2235
rafal-hawrylak merged 1 commit into
mainfrom
feat-lineage-enabled

Conversation

@rafal-hawrylak

Copy link
Copy Markdown
Collaborator

Introduces LineageSettings { bool enabled } and threads it through WorkflowSettings (yaml opt-in) into ProjectConfig (compiled graph) so downstream Dataform runners can decide whether to emit OpenLineage events to Knowledge Catalog (datalineage.googleapis.com) after each action completes.

Config plumbing only — no emission logic is added in this change.

@rafal-hawrylak
rafal-hawrylak requested a review from a team as a code ownerJuly 28, 2026 09:08
@rafal-hawrylak
rafal-hawrylak requested review from SuchodolskiEdvin and removed request for ikholopov-omni and kolinaJuly 30, 2026 06:45
Comment threadprotos/core.proto
@rafal-hawrylak
rafal-hawrylakforce-pushed the feat-lineage-enabled branch 2 times, most recently from 2dbd093 to 3aa6b9fCompareJuly 31, 2026 20:59
Comment threadprotos/configs.proto Outdated
Comment threadprotos/core.proto Outdated
Introduces `LineageSettings { bool enabled }` and threads it through
`WorkflowSettings` (yaml opt-in) into `ProjectConfig` (compiled graph)
so downstream Dataform runners can decide whether to emit OpenLineage
events to Knowledge Catalog (datalineage.googleapis.com) after each
action completes.
Config plumbing only — no emission logic is added in this change.
Consumers (Dataform CLI runner, Dataform Backend) read this field in
follow-up work.
@rafal-hawrylak
rafal-hawrylak merged commit d634c7f into mainAug 5, 2026
11 checks passed
@rafal-hawrylak
rafal-hawrylak deleted the feat-lineage-enabled branch August 5, 2026 09:02
rafal-hawrylak added a commit that referenced this pull request Aug 5, 2026
Introduces `LineageSettings { bool enabled }` and threads it through
`WorkflowSettings` (yaml opt-in) into `ProjectConfig` (compiled graph)
so downstream Dataform runners can decide whether to emit OpenLineage
events to Knowledge Catalog (datalineage.googleapis.com) after each
action completes.
Config plumbing only — no emission logic is added in this change.
Consumers (Dataform CLI runner, Dataform Backend) read this field in
follow-up work.
Porting the changes from PR (#2235)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@rafal-hawrylak@kolina@SuchodolskiEdvin