docs(carto-create-workflow): declare edge-fed inputs so the canvas renders lines - #55
Open
ernesmb wants to merge 1 commit into
Open
docs(carto-create-workflow): declare edge-fed inputs so the canvas renders lines#55ernesmb wants to merge 1 commit into
ernesmb wants to merge 1 commit into
Conversation
…nders lines Workflows created via the CLI sometimes render with no input dot and no connecting line between nodes, even though the workflow executes fine. The Workflows canvas draws each node's input connection dot from `data.inputs`; an edge whose `targetHandle` names an input that isn't declared in the target node's `data.inputs` has no handle to attach to, so no line is drawn. The engine is unaffected because it wires data from the `edges` array directly. `validate` / `verify-remote` / `create` don't catch this — the only edge cross-check verifies source/target reference real node IDs, not that the targetHandle is a declared input. So the breakage only surfaces visually when the user opens the DAG. This adds a `declare-edge-fed-inputs` critical rule to the skill (declare every edge-fed input with `value: null`, copy all Table inputs from `components get`), per-component handle-name examples, and a mechanical jq cross-check to run before presenting. Also cross-links it from the `schema handles` table row. A structural fix in the CLI's `validate` is the durable solution; it's deferred until the in-flight CLI refactor lands (tracked separately). Reported by Luna in #product-support. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Problem
Workflows authored via the CLI sometimes render on the Workflows canvas with no input dot and no connecting line between nodes — even though the workflow executes correctly. Reported by Luna in #product-support.
Root cause: the canvas draws each node's input connection dot from
data.inputs. An edge attaches to a target handle whose id equals the input'sname(the schema doc states "input names are the targetHandle names"). If an edge'stargetHandlenames an input that isn't declared in the target node'sdata.inputs, there's no handle to attach to → no line renders. The engine is unaffected because it wires data straight from theedgesarray.Why nothing flags it:
validate's only edge cross-check verifiessource/targetreference real node IDs — never thattargetHandleis a declared input. Sovalidate/verify-remote/createall pass and the breakage only appears when the user opens the DAG.In the reproduction file Luna sent, the
native.customsqlnode was already fixed (sourcea/sourceb/sourcecdeclared withvalue:null), but the twonative.limitnodes still omittedsource, so those edges drew no line — matching her "same problem, no line" note.Change
Adds a
declare-edge-fed-inputscritical rule tocarto-create-workflow/SKILL.md(Phase 4), plus a cross-link from theschema handlestable row:data.inputswithvalue: null, and explains why validate can't see it.Tableinputs fromcomponents get, not just the config inputs you set values for — with per-component handle names (source;sourcea/b/c;lefttable/righttable;maintable/secondarytable;main/secondary).native.limitedges and clears oncesource: nullis added.make validatepasses.Follow-up (CLI)
The durable fix is a structural check in the CLI's
validate(edgetargetHandlemust be a declared input on the target node). Deferred until the in-flight CLI refactor lands — tracked in sc-562982.🤖 Generated with Claude Code