feat: technical lineage MCP tools and techlin skill (Snowflake)#98
Draft
hlazkyau wants to merge 6 commits into
Draft
Conversation
…t, unique source id, techlin custom properties)
…t, unique source id, techlin custom properties, mode-dependent queries)
…e-truth parameter guidance
Restructure collibra/tech-lineage into collibra/techlin with an
etl-integration-style per-source catalog (references/index.md), and correct
the skill content against the harvester runtime and live Edge behavior:
- databaseNames is required in BOTH snowflakeMode values (manifest marks it
optional; Edge accepts a capability without it and the harvest then fails
asynchronously with "No database names provided")
- fix the mode/query mapping: external_stages is SQL-mode, access_history
(required, previously undocumented) is SQL-API, dynamic_tables and
semantic_views are mode-independent
- query defaults are automatic: omit the parameter (Edge materializes
required defaults at save) or pass the "use-default" sentinel — never
collect or invent SQL
- techlinHost/techlinKey must be encoded inside the customParameters list
parameter ({name, value, type, secret, encrypted, fromVault}); top-level
keys are silently ignored by the harvester
- reframe edge_list_capability_types as an inventory: manifests carry
existence/names/options, not requiredness or mode gating (no conditional
metadata exists in the manifest format); the per-source reference owns
the runtime semantics
- document Edge save behavior in the skill and tool descriptions: required
defaults are materialized, and a second capability of the same type on
one connection is rejected with 400 "already used" (treat as exists,
never switch connections)
DarySchaekenCollibra
approved these changes
Jul 10, 2026
…Edge UI, trigger gated on confirmation techlinKey passed through edge_create_capability is stored plaintext and readable back through the management API, so the key must never transit the conversation. When the user opts into configuring the techlin server: - collect techlinHost only and create the capability without the key - the user then adds techlinKey in the Collibra/Edge UI (capability Custom Properties, marked secret so it is masked and encrypted) - start_technical_lineage is triggered only after the user confirms the key is in place - techlinHost alone can still be changed later via the upsert; the key always goes in through the UI Encoded in the snowflake reference (question script + custom-properties flow), the techlin skill (conversation rule, trigger step gate, hard rule 5), and the edge_create_capability parameters description so the rule also holds for skills-off clients.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎯 What does this PR do?
Adds the technical lineage (techlin) flow on top of the jdbc-ingestion tools: the
start_technical_lineagetrigger, thecollibra/techlinskill with an etl-integration-style per-source reference catalog (Snowflake first), and capability-tool guidance corrected against the harvester runtime (lin-harvester) and live Edge behavior verified on the dev tenant:databaseNamesis required in bothsnowflakeModevalues — the manifest marks it optional, Edge accepts a capability without it, and the harvest then fails asynchronouslyexternal_stagesis SQL-mode,access_history(required, previously undocumented) is SQL-API,dynamic_tables/semantic_viewsare mode-independent"use-default"sentinel — the agent never collects or invents SQLtechlinHost/techlinKeyare encoded inside thecustomParameterslist parameter; top-level keys are silently ignored by the harvesteredge_list_capability_typesreframed as an inventory (existence/names/options); the per-source reference owns runtime requiredness, mode gating, and question order400 "Connection(s) already used in the capability of the same type"means the capability exists (update or trigger, never switch connections)✅ Checklist