Repository navigation
Feature json to yaml - #11
Open
estansb-graycore wants to merge 4 commits into
Open
estansb-graycore wants to merge 4 commits into
estansb-graycore wants to merge 4 commits into
Conversation
estansb-graycore
force-pushed
the
feature-json-to-yaml
branch
from
October 20, 2026 14:47
70d986d to
a3f5471
Compare
Add a decompile executor, and decompileFile() in the library, that turns an
existing pipeline JSON into a *-pipeline.yaml. Each activity is read back
as the action that compiles to it exactly, with expressions as ${{ }},
{{ .<name>_id }} tokens as names and lakehouse datasets under datasets:.
Anything no action reproduces is kept verbatim as a fabric/raw step, with
the reason reported. The YAML is compiled again and must give the same
definition before anything is written, so the output is always correct.
Actions gain an optional decompile hook beside compile. The project-root
lookup moves from the build executor into executor/projectRoot.ts so both
executors share it. What build produces is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
estansb-graycore
force-pushed
the
feature-json-to-yaml
branch
from
October 20, 2026 14:55
a3f5471 to
74c752c
Compare
estansb-graycore
marked this pull request as ready for review
October 20, 2026 15:24
estansb-graycore
marked this pull request as draft
October 20, 2026 15:30
Member
|
A few thoughts:
|
…on. update references throughout project
…unsupported by yaml is found in the json
estansb-graycore
marked this pull request as ready for review
October 22, 2026 15:42
This branch has not been deployed
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.
Resolves #10
Feature description
Adds the reverse of
build: adecompileexecutor (anddecompileFile()in the library)that turns an existing pipeline JSON into a
*-pipeline.yaml, so pipelines written beforeFTAC can be brought under it.
Every step is kept only if compiling it reproduces the original activity exactly
(
firstDifference, key order ignored). If no action reproduces it, the activity is keptverbatim as a
fabric/rawstep. The whole document is then compiled again and comparedwith the input before anything is written. So the output is always correct, and parts
that aren't readable yet stay as raw JSON.
For
examples/hello/hello.jsonthe result has no raw steps, and building it gives backthe original file byte-for-byte.
What is read back
decompilehook next to eachcompile.Also
if:groups and steps nested inside them and inside for-each.${{ }}:pipeline().parameters.x→inputs.x,variables('x')→vars.x,activity('x').output→steps.x.outputs,item()→item, and the escaped SQL literal →${{ sql(...) }}.{{ .<name>_id }}placeholders back to names. Policy back totimeout:/retry:,and
userPropertiesback tolabels:.datasets:. A dataset used byseveral steps gets one entry.
Each raw step is reported with a reason, e.g.
nb: fabric/notebook: notebookId is "3333…", not a {{ .<name>_id }} token.Changes to existing code
None of these change what
buildproduces; existing specs andexamples:checkpassunchanged.
executor/build.ts: the project-root lookup moved intoexecutor/projectRoot.tsso both executors share it.
yaml/actions/types.ts: optionaldecompileonAction.pack.ts: shipsdecompile.schema.json.Known limitations
These stay
fabric/raw, because current YAML can't express them:a pipeline exported from the portal after deployment. A Copy keeps a GUID source or
sink as
raw:and the rest of the step stays readable.userProperties: [],isSequential: false, plain-text Fail messages,Queryscript batches,secureInput: true.descriptionandannotationsare dropped with awarning.
env:shortcuts and the original dataset names aren't in the JSON, so values arewritten out in full and datasets are named after their file or table.